summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKévin THIERRY <kevin.thierry@open.eurogiciel.org>2014-12-22 15:43:42 +0100
committerKévin THIERRY <kevin.thierry@open.eurogiciel.org>2014-12-22 15:43:42 +0100
commitcce48620fcb1d1c2afd0933215b428060b07ff0c (patch)
treeb36418b8471c6dd3926ef20a69bd270a41120313
parentf522c1ee6d7bd011af2bd90296ccfd9901ad12ab (diff)
downloadgroff-upstream/1.22.2.tar.gz
groff-upstream/1.22.2.tar.bz2
groff-upstream/1.22.2.zip
Imported Upstream version 1.22.2upstream/1.22.2sandbox/kevinthierry/upstream
-rw-r--r--ChangeLog9296
-rw-r--r--ChangeLog.1195238
-rw-r--r--ChangeLog.1203051
-rw-r--r--ChangeLog.121786
-rw-r--r--INSTALL.gen212
-rw-r--r--MANIFEST17
-rw-r--r--Makefile.comm22
-rw-r--r--Makefile.in68
-rw-r--r--Makefile.sub34
-rw-r--r--NEWS75
-rw-r--r--README59
-rw-r--r--REVISION2
-rw-r--r--VERSION2
-rw-r--r--aclocal.m48
-rwxr-xr-xconfig.guess273
-rwxr-xr-xconfig.rpath106
-rwxr-xr-xconfig.sub192
-rwxr-xr-xconfigure1107
-rw-r--r--configure.ac9
-rw-r--r--contrib/chem/ChangeLog24
-rw-r--r--contrib/chem/Makefile.sub8
-rw-r--r--contrib/chem/README.txt2
-rw-r--r--contrib/chem/chem.man2
-rw-r--r--contrib/chem/chem.pic2
-rwxr-xr-xcontrib/chem/chem.pl2
-rw-r--r--contrib/chem/examples/122/README.txt2
-rw-r--r--contrib/chem/examples/122/ch4y_reserpine.chem2
-rw-r--r--contrib/chem/examples/README.txt2
-rw-r--r--contrib/chem/examples/atp.chem2
-rw-r--r--contrib/chem/examples/cholesterin.chem2
-rw-r--r--contrib/chem/examples/ethamivan.chem2
-rw-r--r--contrib/chem/examples/lsd.chem2
-rw-r--r--contrib/chem/examples/morphine.chem2
-rw-r--r--contrib/chem/examples/penicillin.chem2
-rw-r--r--contrib/chem/examples/reserpine.chem2
-rw-r--r--contrib/groffer/ChangeLog71
-rw-r--r--contrib/groffer/Makefile.sub19
-rw-r--r--contrib/groffer/README2
-rw-r--r--contrib/groffer/perl/README_PERL2
-rw-r--r--contrib/groffer/perl/func.pl2
-rw-r--r--contrib/groffer/perl/groffer.man305
-rwxr-xr-xcontrib/groffer/perl/groffer.pl15
-rw-r--r--contrib/groffer/perl/man.pl13
-rw-r--r--contrib/groffer/perl/perl_test.pl2
-rwxr-xr-xcontrib/groffer/perl/roff2.pl2
-rw-r--r--contrib/groffer/perl/split_env.sh2
-rw-r--r--contrib/groffer/roff2.man2
-rw-r--r--contrib/groffer/shell/ChangeLog.0100
-rw-r--r--contrib/groffer/shell/README_SH16
-rw-r--r--contrib/groffer/shell/groffer.man296
-rwxr-xr-xcontrib/groffer/shell/groffer.sh2
-rw-r--r--contrib/groffer/shell/groffer2.sh2
-rwxr-xr-xcontrib/groffer/shell/roff2.sh2
-rw-r--r--contrib/groffer/version.sh10
-rw-r--r--contrib/hdtbl/ChangeLog35
-rw-r--r--contrib/hdtbl/Makefile.sub11
-rw-r--r--contrib/hdtbl/examples/color_nested_tables.roff21
-rw-r--r--contrib/hdtbl/examples/common.roff6
-rw-r--r--contrib/hdtbl/examples/fonts_n.in2
-rw-r--r--contrib/hdtbl/examples/fonts_x.in2
-rw-r--r--contrib/hdtbl/groff_hdtbl.man237
-rw-r--r--contrib/mm/ChangeLog76
-rw-r--r--contrib/mm/Makefile.sub4
-rw-r--r--contrib/mm/groff_mm.man36
-rw-r--r--contrib/mm/m.tmac60
-rw-r--r--contrib/mm/mmroff.man18
-rw-r--r--contrib/mm/refer-mm.tmac106
-rw-r--r--contrib/mom/BUGS55
-rw-r--r--contrib/mom/ChangeLog51
-rw-r--r--contrib/mom/Makefile.sub60
-rw-r--r--contrib/mom/NEWS49
-rw-r--r--contrib/mom/TODO22
-rw-r--r--contrib/mom/copyright4
-rw-r--r--contrib/mom/examples/README.txt110
-rw-r--r--contrib/mom/examples/elvis_syntax.new2
-rw-r--r--contrib/mom/examples/letter.mom4
-rw-r--r--contrib/mom/examples/mom-pdf.mom594
-rw-r--r--contrib/mom/examples/mom.vim149
-rw-r--r--contrib/mom/examples/penguin.pdf148
-rw-r--r--contrib/mom/examples/sample_docs.mom198
-rw-r--r--contrib/mom/examples/typesetting.mom308
-rw-r--r--contrib/mom/groff_mom.man114
-rw-r--r--contrib/mom/momdoc/appendices.html1038
-rw-r--r--contrib/mom/momdoc/color.html6
-rw-r--r--contrib/mom/momdoc/cover.html59
-rw-r--r--contrib/mom/momdoc/definitions.html115
-rw-r--r--contrib/mom/momdoc/docelement.html1843
-rw-r--r--contrib/mom/momdoc/docprocessing.html395
-rw-r--r--contrib/mom/momdoc/goodies.html109
-rw-r--r--contrib/mom/momdoc/graphical.html6
-rw-r--r--contrib/mom/momdoc/headfootpage.html66
-rw-r--r--contrib/mom/momdoc/images.html471
-rw-r--r--contrib/mom/momdoc/inlines.html103
-rw-r--r--contrib/mom/momdoc/intro.html286
-rw-r--r--contrib/mom/momdoc/letters.html38
-rw-r--r--contrib/mom/momdoc/macrolist.html349
-rw-r--r--contrib/mom/momdoc/rectoverso.html66
-rw-r--r--contrib/mom/momdoc/refer.html28
-rw-r--r--contrib/mom/momdoc/reserved.html100
-rw-r--r--contrib/mom/momdoc/stylesheet.css21
-rw-r--r--contrib/mom/momdoc/tables-of-contents.html526
-rw-r--r--contrib/mom/momdoc/toc.html165
-rw-r--r--contrib/mom/momdoc/typesetting.html604
-rw-r--r--contrib/mom/momdoc/using.html272
-rw-r--r--contrib/mom/momdoc/version-2.html380
-rw-r--r--contrib/mom/om.tmac10910
-rw-r--r--contrib/pdfmark/ChangeLog59
-rw-r--r--contrib/pdfmark/Makefile.sub13
-rw-r--r--contrib/pdfmark/pdfmark.ms10
-rw-r--r--contrib/pdfmark/pdfmark.tmac18
-rw-r--r--contrib/pdfmark/pdfroff.sh4
-rw-r--r--doc/Makefile.in24
-rw-r--r--doc/Makefile.sub16
-rw-r--r--doc/fixinfo.sh7
-rw-r--r--doc/groff.info561
-rw-r--r--doc/groff.info-1174
-rw-r--r--doc/groff.info-2654
-rw-r--r--doc/groff.info-3bin155454 -> 156418 bytes
-rw-r--r--doc/groff.texinfo818
-rw-r--r--doc/meref.me15
-rw-r--r--doc/pic.ms12
-rw-r--r--doc/texinfo.tex1580
-rw-r--r--doc/webpage.ms140
-rw-r--r--font/devpdf/DESC.in11
-rw-r--r--font/devpdf/Foundry.in113
-rw-r--r--font/devpdf/Makefile.sub129
-rw-r--r--font/devpdf/util/BuildFoundries.pl448
-rwxr-xr-xinstall-sh35
-rw-r--r--m4/codeset.m416
-rw-r--r--m4/fcntl-o.m4123
-rw-r--r--m4/glibc21.m422
-rw-r--r--m4/groff.m418
-rw-r--r--m4/iconv.m4146
-rw-r--r--m4/lib-ld.m437
-rw-r--r--m4/lib-link.m477
-rw-r--r--m4/lib-prefix.m47
-rw-r--r--m4/localcharset.m417
-rw-r--r--man/ditroff.man18
-rw-r--r--man/groff.man69
-rw-r--r--man/groff_char.man1515
-rw-r--r--man/groff_diff.man41
-rw-r--r--man/groff_font.man60
-rw-r--r--man/groff_out.man16
-rw-r--r--man/groff_tmac.man6
-rw-r--r--man/roff.man8
-rwxr-xr-xmkinstalldirs4
-rw-r--r--src/devices/grodvi/Makefile.sub2
-rw-r--r--src/devices/grohtml/Makefile.sub2
-rw-r--r--src/devices/grohtml/html-text.cpp9
-rw-r--r--src/devices/grohtml/post-html.cpp13
-rw-r--r--src/devices/grolbp/Makefile.sub2
-rw-r--r--src/devices/grolj4/Makefile.sub2
-rw-r--r--src/devices/grolj4/grolj4.man6
-rw-r--r--src/devices/gropdf/Makefile.sub65
-rw-r--r--src/devices/gropdf/TODO31
-rw-r--r--src/devices/gropdf/gropdf.man1045
-rw-r--r--src/devices/gropdf/gropdf.pl3276
-rw-r--r--src/devices/gropdf/pdfmom.man140
-rw-r--r--src/devices/gropdf/pdfmom.pl84
-rw-r--r--src/devices/grops/Makefile.sub2
-rw-r--r--src/devices/grops/grops.man12
-rw-r--r--src/devices/grotty/tty.cpp15
-rw-r--r--src/devices/xditview/Makefile.sub2
-rw-r--r--src/include/config.hin63
-rw-r--r--src/include/localcharset.h10
-rw-r--r--src/libs/gnulib/Makefile.in349
-rw-r--r--src/libs/gnulib/aclocal.m4355
-rwxr-xr-xsrc/libs/gnulib/build-aux/compile232
-rwxr-xr-xsrc/libs/gnulib/build-aux/config.guess273
-rwxr-xr-xsrc/libs/gnulib/build-aux/config.sub186
-rwxr-xr-xsrc/libs/gnulib/build-aux/depcomp255
-rwxr-xr-xsrc/libs/gnulib/build-aux/install-sh35
-rwxr-xr-xsrc/libs/gnulib/build-aux/missing148
-rw-r--r--src/libs/gnulib/build-aux/snippet/arg-nonnull.h (renamed from src/libs/gnulib/build-aux/arg-nonnull.h)4
-rw-r--r--src/libs/gnulib/build-aux/snippet/c++defs.h (renamed from src/libs/gnulib/build-aux/c++defs.h)4
-rw-r--r--src/libs/gnulib/build-aux/snippet/warn-on-use.h (renamed from src/libs/gnulib/build-aux/warn-on-use.h)6
-rw-r--r--src/libs/gnulib/config.h.in283
-rwxr-xr-xsrc/libs/gnulib/configure4190
-rw-r--r--src/libs/gnulib/configure.ac53
-rw-r--r--src/libs/gnulib/lib/Makefile.am315
-rw-r--r--src/libs/gnulib/lib/Makefile.in615
-rw-r--r--src/libs/gnulib/lib/config.charset7
-rw-r--r--src/libs/gnulib/lib/intprops.h319
-rw-r--r--src/libs/gnulib/lib/inttypes.in.h1130
-rw-r--r--src/libs/gnulib/lib/localcharset.c45
-rw-r--r--src/libs/gnulib/lib/localcharset.h5
-rw-r--r--src/libs/gnulib/lib/ref-add.sin5
-rw-r--r--src/libs/gnulib/lib/ref-del.sin5
-rw-r--r--src/libs/gnulib/lib/stdbool.in.h132
-rw-r--r--src/libs/gnulib/lib/stddef.in.h19
-rw-r--r--src/libs/gnulib/lib/stdint.in.h215
-rw-r--r--src/libs/gnulib/lib/streq.h12
-rw-r--r--src/libs/gnulib/lib/unitypes.in.h26
-rw-r--r--src/libs/gnulib/lib/uniwidth.in.h25
-rw-r--r--src/libs/gnulib/lib/uniwidth/cjk.h20
-rw-r--r--src/libs/gnulib/lib/uniwidth/width.c67
-rw-r--r--src/libs/gnulib/lib/verify.h245
-rw-r--r--src/libs/gnulib/lib/wchar.in.h631
-rw-r--r--src/libs/gnulib/lib/wctype-h.c4
-rw-r--r--src/libs/gnulib/lib/wctype.in.h371
-rw-r--r--src/libs/gnulib/lib/wcwidth.c4
-rw-r--r--src/libs/gnulib/m4/00gnulib.m42
-rw-r--r--src/libs/gnulib/m4/Makefile.am5
-rw-r--r--src/libs/gnulib/m4/Makefile.in164
-rw-r--r--src/libs/gnulib/m4/codeset.m42
-rw-r--r--src/libs/gnulib/m4/configmake.m450
-rw-r--r--src/libs/gnulib/m4/extensions.m435
-rw-r--r--src/libs/gnulib/m4/extern-inline.m462
-rw-r--r--src/libs/gnulib/m4/fcntl-o.m430
-rw-r--r--src/libs/gnulib/m4/glibc21.m43
-rw-r--r--src/libs/gnulib/m4/gnulib-cache.m425
-rw-r--r--src/libs/gnulib/m4/gnulib-common.m4179
-rw-r--r--src/libs/gnulib/m4/gnulib-comp.m468
-rw-r--r--src/libs/gnulib/m4/gnulib-tool.m42
-rw-r--r--src/libs/gnulib/m4/include_next.m4133
-rw-r--r--src/libs/gnulib/m4/inttypes-pri.m442
-rw-r--r--src/libs/gnulib/m4/inttypes.m4157
-rw-r--r--src/libs/gnulib/m4/libunistring-base.m42
-rw-r--r--src/libs/gnulib/m4/localcharset.m42
-rw-r--r--src/libs/gnulib/m4/longlong.m487
-rw-r--r--src/libs/gnulib/m4/multiarch.m411
-rw-r--r--src/libs/gnulib/m4/onceonly.m425
-rw-r--r--src/libs/gnulib/m4/stdbool.m4100
-rw-r--r--src/libs/gnulib/m4/stddef_h.m410
-rw-r--r--src/libs/gnulib/m4/stdint.m438
-rw-r--r--src/libs/gnulib/m4/warn-on-use.m414
-rw-r--r--src/libs/gnulib/m4/wchar_h.m4119
-rw-r--r--src/libs/gnulib/m4/wchar_t.m42
-rw-r--r--src/libs/gnulib/m4/wctype_h.m4190
-rw-r--r--src/libs/gnulib/m4/wcwidth.m425
-rw-r--r--src/libs/gnulib/m4/wint_t.m42
-rw-r--r--src/libs/libdriver/input.cpp7
-rwxr-xr-xsrc/libs/libgroff/config.charset1146
-rw-r--r--src/libs/libgroff/glyphuni.cpp3
-rw-r--r--src/libs/libgroff/localcharset.c491
-rw-r--r--src/libs/libgroff/ref-add.sin10
-rw-r--r--src/libs/libgroff/ref-del.sin10
-rw-r--r--src/libs/libgroff/uniglyph.cpp7
-rw-r--r--src/preproc/eqn/eqn.cpp601
-rw-r--r--src/preproc/eqn/eqn.man41
-rw-r--r--src/preproc/eqn/eqn_tab.h14
-rw-r--r--src/preproc/eqn/lex.cpp12
-rw-r--r--src/preproc/eqn/main.cpp6
-rw-r--r--src/preproc/eqn/pile.cpp6
-rw-r--r--src/preproc/grn/Makefile.sub2
-rw-r--r--src/preproc/grn/grn.man6
-rw-r--r--src/preproc/grn/main.cpp2
-rw-r--r--src/preproc/html/Makefile.sub2
-rw-r--r--src/preproc/html/pre-html.cpp5
-rw-r--r--src/preproc/html/pushback.cpp7
-rw-r--r--src/preproc/pic/main.cpp6
-rw-r--r--src/preproc/pic/pic.cpp955
-rw-r--r--src/preproc/pic/pic.man31
-rw-r--r--src/preproc/pic/pic_tab.h14
-rw-r--r--src/preproc/refer/label.cpp521
-rw-r--r--src/preproc/refer/refer.man10
-rw-r--r--src/preproc/tbl/table.cpp145
-rw-r--r--src/preproc/tbl/tbl.man118
-rw-r--r--src/roff/groff/Makefile.sub2
-rw-r--r--src/roff/groff/groff.cpp25
-rw-r--r--src/roff/groff/groff.man39
-rw-r--r--src/roff/groff/pipeline.h4
-rw-r--r--src/roff/grog/grog.man53
-rw-r--r--src/roff/grog/grog.pl49
-rw-r--r--src/roff/grog/grog.sh26
-rw-r--r--src/roff/troff/env.cpp9
-rw-r--r--src/roff/troff/input.cpp10
-rw-r--r--src/roff/troff/mtsm.cpp15
-rw-r--r--src/roff/troff/number.cpp4
-rw-r--r--src/roff/troff/troff.man4
-rw-r--r--src/utils/afmtodit/afmtodit.man11
-rw-r--r--src/utils/indxbib/indxbib.man6
-rw-r--r--src/utils/lookbib/lookbib.man8
-rw-r--r--src/utils/pfbtops/pfbtops.man9
-rw-r--r--src/utils/tfmtodit/tfmtodit.cpp10
-rw-r--r--src/utils/tfmtodit/tfmtodit.man6
-rw-r--r--src/utils/xtotroff/xtotroff.man8
-rw-r--r--test-groff.in3
-rw-r--r--tmac/Makefile.sub7
-rw-r--r--tmac/an-ext.tmac7
-rw-r--r--tmac/an-old.tmac23
-rw-r--r--tmac/doc-common47
-rw-r--r--tmac/doc-syms44
-rw-r--r--tmac/doc.tmac26
-rw-r--r--tmac/e.tmac246
-rw-r--r--tmac/europs.tmac64
-rw-r--r--tmac/fallbacks.tmac61
-rw-r--r--tmac/groff_man.man15
-rw-r--r--tmac/groff_mdoc.man258
-rw-r--r--tmac/groff_me.man223
-rw-r--r--tmac/groff_ms.man7
-rw-r--r--tmac/groff_trace.man4
-rw-r--r--tmac/groff_www.man4
-rw-r--r--tmac/pdf.tmac798
-rw-r--r--tmac/refer-me.tmac99
-rw-r--r--tmac/refer-ms.tmac86
-rw-r--r--tmac/refer.tmac343
-rw-r--r--tmac/s.tmac152
-rw-r--r--tmac/troffrc6
-rw-r--r--tmac/www.tmac4
300 files changed, 46160 insertions, 26761 deletions
diff --git a/ChangeLog b/ChangeLog
index 3665e85..06fe912 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9045 +1,1035 @@
-2010-12-31 Werner LEMBERG <wl@gnu.org>
+2013-02-07 Werner LEMBERG <wl@gnu.org>
-Version 1.21 released
-=====================
-
- * NEWS, REVISION, VERSION, doc/groff.texinfo, doc/webpage.ms: Updated.
- * aclocal.m4, configure: Regenerated.
-
-2010-12-31 Werner LEMBERG <wl@gnu.org>
-
- * doc/webpage.ms: Updated.
-
-2010-12-31 Werner LEMBERG <wl@gnu.org>
-
- * configure: Regenerate with autoconf 2.67.
-
-2010-12-31 Werner LEMBERG <wl@gnu.org>
-
- Update various scripts.
-
- * config.guess, config.sub: Update from `config' repository.
- * install-sh, mkinstalldirs: Update from `gnulib' repository.
-
-2010-12-31 Werner LEMBERG <wl@gnu.org>
-
- Update texinfo.tex.
-
- * doc/texinfo.tex: Update von `texinfo' repository.
-
-2010-12-30 Werner LEMBERG <wl@gnu.org>
-
- Call texi2dvi with correct makeinfo binary.
-
- * doc/Makefile.in (.texinfo.dvi, .texinfo.pdf): Use $(MAKEINFO).
-
-2010-12-30 Werner LEMBERG <wl@gnu.org>
-
- Documentation updates.
-
- * NEWS, PROBLEMS, MANIFEST: Update.
-
-2010-12-26 Werner LEMBERG <wl@gnu.org>
-
- Speed up troff.
-
- * src/include/ptable.h (PTABLE): Make hash tables much more sparse
- by changing the ratio `FULL_NUM/FULL_DEN' from 2/3 to 1/4. This
- increases the allocated memory by about 200kByte (which is nothing
- today) but assures that there aren't extremely long searches for a
- free hash slot in case that the hash function doesn't return a free
- one. Due to the nature of the entries in uniuni.cpp, the used hash
- function in ptable.cpp is not optimal, but using a sparse array
- compensates this.
-
-2010-12-20 Werner LEMBERG <wl@gnu.org>
-
- Replace patch from 2010-12-18 with a much faster implementation.
-
- * src/roff/troff/node.h (node): Add virtual function
- `get_break_code'.
-
- * src/roff/troff/node.cpp (inter_char_space_node): Remove class
- completely.
- (glyph_node::merge_glyph_node): Restore previous version.
-
- (break_char_node): Add `prev_break_code' field and update
- constructors.
- (node::get_break_code, break_char_node::get_break_code): Implement.
-
- (node::add_char): Pass remaining cflags values.
-
- (break_char_node::add_self): Use the logic of the now deleted
- `inter_char_space_node::add_self' function to insert a space node if
- necessary.
-
-2010-12-20 Daiki Ueno <ueno@unixuser.org>
-
- A new try to not changing srcdir if building in separate builddir.
-
- Makefile.in ($GNULIBDIRS): Disable calls to autoconf and friends.
-
-2010-12-20 Werner LEMBERG <wl@gnu.org>
-
- Speed up access to cflags values.
-
- We now recompute the cflags values for all charinfo objects if
- `.class' has been called.
-
- * src/roff/troff/charinfo.h: Add external references to `class_flag'
- and `get_flags'.
- (charinfo): `get_flags' no longer has a return value.
- (charinfo::overlaps_horizontally, charinfo::overlaps_vertically,
- charinfo::can_break_before, charinfo::can_break_after,
- charinfo::can_break_after, charinfo::ends_sentence,
- charinfo::transparent,, charinfo:ignore_hcodes,
- charinfo::prohibit_break_before, charinfo::prohibit_break_after,
- charinfo::inter_char_space): Call global `get_flags' only if
- necessary.
- (charinfo::add_to_class): Set `class_flag'.
-
- * src/roff/troff/input.cpp (class_flag): New global flag.
- (charinfo::charinfo): Call `get_flags' member function.
- (get_flags): New global function which iterates over all entries in
- the charinfo dictionary.
- (charinfo::get_flags): Set `flags' directly.
-
-2010-12-19 Werner LEMBERG <wl@gnu.org>
-
- Protect `.class' against cyclic nesting.
-
- * src/roff/troff/charinfo.h (charinfo::contains): Add optional
- boolean argument.
- * src/roff/troff/input.cpp (define_class, charinfo::contains): Check
- for cyclic nesting.
-
-2010-12-18 Werner LEMBERG <wl@gnu.org>
-
- Improve CJK support with new values for `.cflags'.
-
- This patch introduces three new values to `.cflags':
-
- don't break before character: 128
- don't break after character: 256
- allow inter-character break: 512
-
- They are handled differently if compared to other cflags values:
-
- (1) hcode values are completely ignored
- (2) similar to kern values, and contrary to the other cflags
- values, troff looks at pairs of characters to decide whether a
- break gets inserted
-
- A yet-to-be-written patch should add inter-character spacing if
- those flags are active; currently, only zero-width breakpoints are
- inserted.
-
- * src/roff/troff/charinfo.h (charinfo): Change type of `flags' to
- `int'. Update callers accordingly.
- New enum values `DONT_BREAK_BEFORE', `DONT_BREAK_AFTER', and
- `INTER_CHAR_SPACE'.
- New member functions `prohibit_break_before',
- `prohibit_break_after', and `inter_char_space'.
- * src/roff/troff/input.cpp: Updated.
-
- * src/roff/troff/node.cpp (inter_char_space_node): New class similar
- to kern_pair_node, collecting charinfo entities with the
- abovementioned cflags values.
- (break_char_type): Add new enum values.
- (glyph_node::merge_glyph_node): Handle abovementioned cflags values
- and emit an `inter_char_space_node' if necessary.
-
- * tmac/ja.tmac: Use new cflags values.
-
- * doc/groff.texinfo, NEWS, man/groff_diff.man: Document new values.
-
-2010-12-18 Werner LEMBERG <wl@gnu.org>
-
- Remove compiler warning.
-
- * src/libs/libgroff/relocate.cpp (msw2posixpath): Remove redundant
- dereferencing.
-
-2010-12-16 Daiki Ueno <ueno@unixuser.org>
-
- Don't change srcdir if building in a separate builddir.
-
- * Makefile.in ($GNULIBDIRS): Copy configuring stuff of gnulib if
- necessary.
-
-2010-12-15 Werner LEMBERG <wl@gnu.org>
-
- Fix compilation problem.
-
- This issue happens with gcc 4.2.4.
-
- * src/roff/troff/node.cpp (node::~node): Move to...
- * src/roff/troff/node.h: Here. This ensures that the inline
- member function is publicly visible.
-
-2010-12-15 Werner LEMBERG <wl@gnu.org>
-
- Remove unused code.
-
- * src/roff/troff/node.cpp, src/roff/troff/node.h
- (space_node::space_node): Remove unused constructor.
-
-2010-12-15 Werner LEMBERG <wl@gnu.org>
-
- Use enum to increase readability.
-
- * src/roff/troff/node.cpp (break_char_type): New enum.
- (break_char_node::add_self, node::add_char): Use it.
-
-2010-12-13 Daiki Ueno <ueno@unixuser.org>
- Werner LEMBERG <wl@gnu.org>
-
- Add wide character support to grotty.
-
- This is a huge patch, mainly by adding the gnulib infrastructure in
- a separate directory tree (in `src/libs/gnulib/lib') for its
- `wcwidth' module. However, the actual changes to native groff
- source files are just a few lines.
-
- * Makefile.comm (INCLUDES): Updated.
- (LIBGNU): Define.
-
- * Makefile.in (NOMAKEDIRS): Updated.
- (GNULLIBDIRS): Define.
- (DISTDIRS): Add GNULLIBDIRS.
- ($LIBDIRS): Depend on GNULLIBDIRS.
- ($GNULLIBDIRS): New target.
-
- * src/libs/libgroff/font.cpp (font::get_width, font::load)
- [is_unicode]: Use `wcwidth'.
-
- * src/roff/troff/Makefile.sub (XLIBS): Add LIBGNU.
- * src/roff/troff/input.cpp (main): Set LC_CTYPE.
-
- * src/devices/grotty/Makefile.sub (XLIBS): Add LIBGNU.
- * src/devices/grotty/tty.cpp (main): Set LC_CTYPE.
-
- * src/libs/gnulib/*: New files. The import was done as follows:
-
- . Call
-
- gnulib-tool --create-testdir \
- --dir=src/libs/gnulib \
- wcwidth
-
- to get a testbed.
-
- . Manually move directories src/libs/gl{lib,m4} to
- src/libs/{lib,m4}, and do s/gllib/lib/ and s/glm4/m4/ everywhere
- to `convert' the gnulib testbed to a standard gnulib
- configuration as maintained by gnulib-tool.
-
- . Call
-
- gnulib-tool --add-import \
- --dir=src/libs/gnulib \
- wcwidth
-
- to update everything.
-
-2010-12-13 Werner LEMBERG <wl@gnu.org>
-
- `.class' must not emit empty lines.
-
- * src/roff/troff/input.cpp (define_class): Add missing `skip_line'
- calls.
-
-2010-12-06 UKAI Fumitoshi <ukai@debian.or.jp>
- Colin Watson <cjwatson@debian.org>
-
- Add Japanese localization.
-
- * tmac/ja.tmac: New file.
- * tmac/Makefile.sub (NORMALFILES): Updated.
-
-2010-12-06 Colin Watson <cjwatson@debian.org>
- Daiki Ueno <ueno@unixuser.org>
-
- Implement support for character classes.
-
- This patch uses standard C++ headers, contrary to the rest of groff.
- Ideally, everything in groff should be updated to do the same.
-
- * src/include/font.h (glyph_to_unicode): New function.
-
- * src/libs/libgroff/font.cpp (glyph_to_unicode): Implement it.
- (font::contains, font::get_code): Use it.
-
- * src/roff/troff/charinfo.h: Include <vector> and <utility>.
- (charinfo): New members `ranges' and `nested_classes'.
- New member functions `get_unicode_code' and `get_flags'.
- New member functions `add_to_class', `is_class', and `contains'.
- (charinfo::overlaps_horizontally, charinfo::overlaps_vertically,
- charinfo::can_break_before, charinfo::can_break_after,
- charinfo::can_break_after, charinfo::ends_sentence,
- charinfo::transparent,, charinfo:ignore_hcodes): Use `get_flags',
- which handles character classes also.
-
- * src/roff/troff/input.cpp (char_class_dictionary): New global
- variable.
- (define_class): New function.
- (init_input_requests): Register `class'.
-
- (charinfo::get_unicode_code, charinfo::get_flags,
- charinfo::contains): Implement it.
-
- * NEWS, doc/groff.texinfo (Character Classes), man/groff_diff.man,
- man/groff.man: Document it.
-
-2010-11-11 Anton Shepelev <anton.txt@gmail.com>
-
- [grohtml]: Improve texinfo documentation.
-
- * doc/groff.texinfo (grohtml): Insert man page description, slightly
- extended.
-
-2010-11-11 Werner LEMBERG <wl@gnu.org>
-
- Fix crash in tbl with option `nospaces'.
- Reported by Louis Guillaume <louis@zabrico.com>.
-
- * src/libs/libgroff/string.cpp (string::remove_spaces): If input
- data consists of spaces only and thus reduces to nothing, set `sz'
- to 0.
-
-2010-11-02 Ulrich Sprlein <uqs@spoerlein.net>
-
- [mdoc]: Complete previous patch and document OpenBSD releases.
-
- * tmac/doc-common (doc-operating-system-NetBSD): Add versions 5.0,
- 5.0.1, and 5.0.2.
- (doc-operating-system-OpenBSD-*): New strings.
- (doc-operating-system-FreeBSD-*): Add version 8.1.
- (doc-operating-system-DragonFly-*): Add versions 2.2, 2.4, 2.6, and
- 2.8.
- (Os): Handle DragonFly and OpenBSD.
-
- * tmac/groff_mdoc.man: Document OpenBSD releases.
- Add DragonFly release 2.8.
-
-2010-11-02 Ulrich Sprlein <uqs@spoerlein.net>
-
- [mdoc]: Improve man page.
-
- * tmac/groff_tmac.man: Fix prologue macro order.
- Update NetBSD, FreeBSD, and DragonflyBSD version numbers.
- Other minor layout improvements.
-
-2010-11-02 Anton Shepelev <anton.txt@gmail.com>
-
- [grohtml] Improve man page.
-
- * src/devices/grohtml/grohtml.man: Document two-pass handling of
- input data.
-
-2010-09-19 Werner LEMBERG <wl@gnu.org>
-
- [groff] Don't use prefix for preconv.
- Reported by Dorai Sitaram <ds26gte@yahoo.com>
-
- * src/roff/groff/groff.cpp (main): Fix it.
-
-2010-07-28 Larry Kollar <kollar@windstream.net>
-
- * doc/groff.texinfo, man/groff.man: Document `!' operator better.
-
-2010-06-28 Jan Vcelak <jvcelak@redhat.com>
-
- * src/roff/troff/node.cpp (make_node): Adding missing `%'.
- Reported in
- http://lists.gnu.org/archive/html/bug-groff/2010-06/msg00022.html
-
-2010-06-05 Larry Jones <lawrence.jones@siemens.com>
-
- * man/groff_diff.man: Document \n[.P].
-
-2010-06-04 Werner LEMBERG <wl@gnu.org>
-
- * NEWS: Updated.
-
-2010-06-04 Denis M. Wilson <dmw@oxytropis.plus.com>
-
- afmtodit: Add option `-o' to specify an output file.
-
- * src/utils/afmtodit.pl: Implement it.
- * src/utils/afmtodit.man: Document it.
-
-2010-06-04 Larry Jones <lawrence.jones@siemens.com>
-
- * man/groff_diff.man: Document \n[.O].
-
-2010-05-30 Werner LEMBERG <wl@gnu.org>
-
- Fix metric files for devps families A, BM, and font ZCMI.
- Problem reported by Denis M. Wilson <dmw@oxytropis.plus.com>.
-
- * font/devps/{AB, ABI, AI, AR, BMB, BMBI, BMI, BMR, ZCMI}:
- Regenerated, using correct AFM files (from the Adobe Core 35 fonts
- with 229 glyphs).
-
-2010-05-28 Werner LEMBERG <wl@gnu.org>
-
- Don't use obsolete intermediate output command `F'.
- Reported by Krzysztof Zelechowski <giecrilj@stegny.2a.pl>
-
- * src/roff/troff/nodes.cpp (troff_output_file::really_put_filename):
- Replace `F' command with `x F'.
-
-2010-05-24 Werner LEMBERG <wl@gnu.org>
-
- * PROBLEMS: Document that mdoc doesn't work with test-groff.
- Reported by Krzysztof Zelechowski <giecrilj@stegny.2a.pl>
-
-2010-05-22 Werner LEMBERG <wl@gnu.org>
-
- Document preconv in texinfo.
-
- * doc/groff.texinfo: Mention preconv and its related command line
- options for groff.
- Add stubs for direct preconv documentation.
- Sort groff options and environment variables.
-
-2010-05-22 Werner LEMBERG <wl@gnu.org>
-
- Use DESC's `unicode' keyword for grotty.
-
- Consequently, no longer check directly for the `utf8' device name
- which prevented the creation of arbitrarily called output device
- directories like `devunicode'.
-
- Problem reported by Christopher Yeleighton <giecrilj@stegny.2a.pl>
- in Savannah bug #29895.
-
- * src/devices/grotty/tty.cpp (tty_printer): Remove `is_utf8' member.
- Replace all ocurrences with `font::is_unicode'.
- (tty_printer::tty_printer): Remove argument.
-
- * src/devices/grotty/grotty.man: Document `unicode' keyword.
-
-2010-05-19 Werner LEMBERG <wl@gnu.org>
-
- Update symbol tables for devps font generation.
-
- * font/devps/generate/textmap: Sort alphabetically.
- Replace tabs with spaces.
-
- * font/devps/generate/symbolchars: Update list to remove duplicates
- which have already been added to `textmap' on 2007-04-09.
-
- * font/devps/symbolmap: Regenerated.
-
- * font/devps/*: Regenerate font definition files.
-
-2010-05-09 Colin Watson <cjwatson@debian.org>
-
- Handle ditroff command `Dt' without argument gracefully.
-
- Without this patch, grotty goes into an infinite loop if it tries to
- process
-
- x T utf8
- x res 240 24 40
- x init
- p1
- Dt
-
- * src/libs/libdriver/input.cpp (get_integer_arg): Emit a fatal error
- on a non-integer argument, bringing the code into line with the
- behaviour documented in the header comment.
- (get_possibly_integer_args): Terminate the loop on a non-integer
- argument.
- (next_arg_begin): Return newline or EOF after emitting the
- corresponding error, rather than continuing on to the next line.
-
-2010-05-01 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo: Improve documentation of \R escape.
-
-2010-03-10 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo: Document \n[DD] register.
- Updated version stuff.
-
-2010-03-10 Larry Kollar <kollar@windstream.net>
-
- * tmac/groff_ms.man: Document \n[DD] register.
- Problem reported by Ted.
-
-2010-02-25 Colin Watson <cjwatson@debian.org>
-
- Use named signals for `trap' in shell scripts.
-
- * contrib/eqn2graph/eqn2graph.sh, contrib/grap2graph/grap2/graph.sh,
- contrib/pic2graph/pic2graph.sh: Do it.
-
-2010-02-25 Werner LEMBERG <wl@gnu.org>
-
- Fix angle brackets in grohtml.
- Reported by Colin Watson <cjwatson@debian.org>.
-
- * src/devices/grohtml/post-html.cpp (get_html_entity): Add U+27E8
- and U+27E9.
-
-2010-02-24 Colin Watson <cjwatson@debian.org>
-
- Add new FreeBSD and Posix versions.
-
- * tmac/doc-common: Add FreeBSD versions 7.2, 7.3, and 8.0
- * tmac/doc-syms: Add Posix 2008
- * tmac/groff_mdoc.man: Document it.
-
-2010-02-16 Larry Kollar <kollar@windstream.net>
-
- tbl: Add `nowarn' option.
-
- * src/preproc/tbl/table.h (table): Add `NOWARN' enumeration value.
-
- * src/preproc/tbl/main.cpp (process_options),
- src/preprox/tbl/table.cpp (table::compute_expand_width,
- table::compute_separation_factor): Handle `NOWARN'.
-
- * src/preproc/tbl/tbl.man, NEWS: Document it.
-
-2010-02-08 Larry Kollar <kollar@windstream.net>
-
- * tmac/www.tmac (www-li-ol): Fix indentation if more than 10 items.
-
-2010-02-04 Larry Kollar <kollar@windstream.net>
-
- Improve `tbl' warnings.
-
- * src/preproc/tbl/table.cpp (table::compute_expand_width,
- table::compute_separation_factor): Add file name strings to
- warnings.
-
-2010-01-23 Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
-
- Fix `MC' macro of the ms package.
-
- * tmac/s.tmac (@MC): Define `pg*col-top' after the paragraph has
- been initialized. Otherwise, using this example,
-
- .nh
- .nf
- .kern 0
- .pl 6c
- .ll 70n
- .MC 30n
- Text for multiple columns.
- Text for multiple columns.
- Text for multiple columns.
- Text for multiple columns.
- Text for multiple columns.
-
- the columns start at different vertical positions.
-
-2010-01-23 Larry Kollar <kollar@alltel.net>
-
- * tmac/www.tmac (www-li-{ul,ol,dl}): Handle `PORPHANS' register.
-
-2010-01-23 Larry Kollar <kollar@alltel.net>
-
- PROBLEMS: Document some Mac OS issues.
-
-2010-01-02 Deri James <deri@chuzzlewit.demon.co.uk>
-
- Don't hardcode `ps' device.
- This is needed for cooperation with gropdf.
-
- * src/preproc/pic/troff.cpp (troff_output::text): Use GROPS_REG.
-
-2009-12-31 Werner LEMBERG <wl@gnu.org>
-
- Make patterns with uppercase letters work.
- Problem reported by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>.
-
- * src/roff/troff/input.cpp (init_hpf_code_table): Use `cmlower'.
- * doc/groff.texinfo, man/groff_diff.man: Update documentation of
- `hpfcode' request.
-
-2009-11-24 Maurice van der Pot <griffon26@kfk4ever.com>
-
- Fix double frees and memory leaks.
-
- * src/roff/troff/env.cpp (environment::make_tag): Use local object.
- * src/roff/troff/input.cpp (input_stack::check_end_diversion): Free
- `diversion_state' here.
- (interpolate_arg): Fix memory leaks.
- * src/roff/troff/mtsm.cpp (mtsm::pop_state): Don't free `sp->state'.
-
-2009-11-20 Paulo Ricardo Zanoni <pzanoni@mandriva.com>
-
- * */*.cpp: Replace `printf(string);' with `printf("%s", string);'.
-
-2009-10-28 Werner LEMBERG <wl@gnu.org>
-
- Document limitations with `#' characters, tbl, and eqn.
- Problem reported by Michael Kain <mcain6925@comcast.net>.
-
- * src/preproc/eqn/eqn.man, src/preproc/tbl/tbl.man: Do it.
-
-2009-10-26 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc-common (Dx): Define register.
-
-2009-10-26 Jrg Sonnenberger <joerg@britannica.bec.de>
-
- Implement `%U' in mdoc for URL references.
-
- * tmac/doc-common (%U): New register.
- (Rd): Handle `doc-url-count' and `doc-url-name'.
-
- * tmac/doc.tmac (doc-url-count, doc-url-name): New registers.
- (doc-save-global-vars, doc-restore-global-vars, doc-reset-reference,
- doc-print-reference): Handle `doc-url-count' and `doc-url-name'.
- (%U): New macro.
-
- * NEWS, tmac/groff_mdoc.man: Document `%U' macro.
-
-2009-09-09 Jari Aalto <jari.aalto@cante.net>
-
- * src/roff/groff/groff.man: Point to troff(1) for `-w' and `-W'.
-
-2009-09-08 Werner LEMBERG <wl@gnu.org>
-
- [troff]: Fix hyphenation problem with kerned letters.
- Problem reported by Steve Izma <sizma@golden.net>.
-
- * src/roff/troff/node.cpp
- (kern_pair_node::add_discretionary_hyphen): Compute `tf' using the
- first node, `n1'. `n2' might be another kerning node, and the
- `get_tfont' member function isn't defined then.
-
-2009-09-01 Michael Cain <mcain6925@comcast.net>
-
- [pic] Fix a border case for arc computation.
-
- * src/preproc/pic/object.cpp (object_spec::make_arc): It can happen
- that test `radius < d' in the loop is satisfied, but the difference
- in the two values is on the order of 1e-10. If `radius' is small,
- doubling the value can lead to a fairly gross error.
-
- The original code appears to have been intended to deal with the
- situation when radius is orders of magnitude less than `d'. The
- replacement code simply assigns `radius' the smallest value that
- avoids problems with the floating point code further on in the
- routine.
-
-2009-08-14 Roger Leigh <rleigh@debian.org>
-
- * man/groff_char.man: Fix white heart and diamond unicode values.
-
-2009-07-29 Werner LEMBERG <wl@gnu.org>
-
- * tmac/hyphen.fr: Fix typo which prevents hyphenation.
- Reported by Seb <sbb@tuxfamily.org>.
-
-2009-06-25 Werner LEMBERG <wl@gnu.org>
-
- Make groff compile on Interix.
- Reported by Jay Krell <jay.krell@cornell.edu>.
-
- * configure.ac: Call AC_USE_SYTEM_EXTENSIONS.
-
- * src/include/lib.h [__INTERIX]: Define _ALL_SOURCE.
-
- * configure: Regenerated.
-
-2009-05-29 Werner LEMBERG <wl@gnu.org>
-
- pic: Fix handling of nested positions.
- Reported by Doug McIlroy <doug@cs.dartmouth.edu>.
-
- * src/preproc/pic/pic.y: Split `expr' into `expr_lower_than' and
- `expr_not_lower_than' so that we can handle
-
- (1/3)<(1/2)<foo,bar>,baz>
-
- correctly. Without the patch, `(1/3)<(1/2)' is handled prematurely
- as a comparison.
-
-2009-05-07 Werner LEMBERG <wl@gnu.org>
-
- Accept \0 and friends within \o.
- Reported by Doug McIlroy <doug@cs.dartmouth.edu>.
-
- * src/roff/troff/token.h (token): Add TOKEN_HORIZONTAL_SPACE
- enumeration value together with `horizontal_space' member function.
- Add `do_overstrike' as a friend.
-
- * src/roff/troff/input.cpp: Use TOKEN_HORIZONTAL_SPACE for \0, \|,
- \^, and \h.
- Update all affected places.
- (do_overstrike): Remove `static' attribute.
- Accept all escapes which produce a fixed horizontal space.
-
-2009-04-24 Werner LEMBERG <wl@gnu.org>
-
- Use straight quotes where appropriate.
- Reported by Reuben Thomas <rrt@sc3d.org>.
-
- * man/groff.man: Do it.
-
-2009-04-14 Werner LEMBERG <wl@gnu.org>
-
- Fix documentation of `em' request.
- Reported by Joachim Walsdorff
- <Joachim.Walsdorff@urz.uni-heidelberg.de>.
-
- * doc/groff.texinfo (End-of-input Traps): Rewrite.
-
-2009-04-10 Werner LEMBERG <wl@gnu.org>
-
- Fix a memory leak in troff for -Thtml.
- Reported by Urs Eggli <Urs.Eggli@zuerich.ch>.
-
- * src/roff/troff/node.h (node::~node): Move to...
- * src/roff/troff/node.cpp: Here. Free `state' and `push_state'.
-
-2009-04-01 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc.tmac: Call `ec' before mapping characters.
-
-2009-03-07 Werner LEMBERG <wl@gnu.org>
- Gunnar Florus <http://florus.no>
-
- Improve configuration.
-
- * configure.ac: Read `VERSION' and `REVISION' files to provide
- proper values for AC_INIT.
- * Makefile.in: Use `@datarootdir@' and `@docdir@' so that
- configure's `--datarootdir' and `--docdir' options are honoured.
- Documentation is now by default installed into something like
- `/usr/local/share/doc/groff-1.20.1'.
-
- * configure: Regenerated.
-
-2009-02-21 Colin Watson <cjwatson@debian.org>
- Werner LEMBERG <wl@gnu.org>
-
- Add a new `file' warning category.
-
- * src/roff/troff/troff.h (warning_type): Add WARN_FILE.
- * src/roff/troff/input.cpp (DEFAULT_WARNING_MASK): Include
- WARN_FILE.
- (warning_table): Add `file' category.
- (macro_source): Convert error on missing macro file to a
- warning.
- * NEWS, doc/groff.texinfo (I/O, Warnings), man/groff_diff.man,
- src/roff/troff/troff.man: Document new warning category.
-
-2009-02-18 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo: Improve documentation of `lsm' request.
-
-2009-02-14 Werner LEMBERG <wl@gnu.org>
-
- Implement a leading spaces macro request, `lsm', in analogy to
- `blm'.
- Implement two new number registers, \n[lsn] and \n[lss], which hold
- the number of spaces and the horizontal space, respectively, which
- would be inserted if the macro registered by `lsm' wasn't called.
-
- * src/roff/troff/input.cpp (leading_spaces_macro_name,
- leading_spaces_number, leading_spaces_space): New global
- variables.
- (leading_spaces_macro): New function.
- (process_input_stack) <token::TOKEN_SPACE>: Handle `lsm'.
- (init_input_requests): Register `lsm', \n[lsn], and \n[lss].
-
- * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo
- (Leading Spaces Traps): Document new requests and registers.
-
-2009-02-10 Denis M. Wilson <dmw@oxytropis.plus.com>
-
- * man/groff.man: Document missing number registers (`$$', `.b',
- `.F', `.j', `.k', `.L', `.O', `.P', `.R', `opmaxx', `opmaxy',
- `opminx', `opminy').
-
- * doc/groff.texinfo: Document missing `.R' register.
- Add `.U' to register index.
-
-2009-01-19 Werner LEMBERG <wl@gnu.org>
-
- Fix incorrect grops color state before \X'...'.
- Problem reported by Miklos Somogyi <msom@netspace.net.au>.
-
- * src/devices/grops/ps.cpp (ps_printer::special): Check color state
- before doing a PS special and flush buffer.
- Update called functions.
-
-2009-01-09 Werner LEMBERG <wl@gnu.org>
-
-Version 1.20.1 released
+Version 1.22.2 released
=======================
- `gnu.png' isn't needed any more.
-
- * doc/Makefile.in: Don't handle or create `gnu.png'.
- Update all affected targets.
-
- * doc/Makefile.sub: Don't handle or create `gnu.png'.
- Update alll affected targets.
-
-
- `gnu.eps' was missing in the tarball.
- Problem reported by Patrik Grser.
-
- (PROCESSEDEXAMPLEFILES): Remove `gnu.eps'.
- (MOSTLYCLEANNOTSRCDIRADD): Fix names of info files.
- (install_data): Handle `gnu.eps' specially.
-
- * MORE.STUFF: Mention texi2html's troff backend.
- Mention http://groff.ffii.org/groff/contrib.
-
- * README: Mention `MORE.STUFF'.
-
- * NEWS, doc/webpage.ms, doc/groff.texinfo: Updated.
-
-2009-01-08 Werner LEMBERG <wl@gnu.org>
-
- * */Makefile.* (CLEANADD, CLEANNOTSRCDIRADD, CLEANDIRADD): Renamed
- to...
- (MOSTLYCLEANADD, MOSTLYCLEANNOTSRCDIRADD, MOSTLYCLEANDIRADD): This.
-
-2009-01-06 Werner LEMBERG <wl@gnu.org>
-
- Remove heuristics for LIBEXT.
-
- * configure.ac: Provide LIBEXT.
- * Makefile.in: Use it.
+ * NEWS, REVISION, doc/groff.texinfo, doc/webpage.ms: Updated.
* configure: Regenerated.
-2009-01-05 Werner LEMBERG <wl@gnu.org>
-
-Version 1.20 released
-=====================
-
-2009-01-05 Werner LEMBERG <wl@gnu.org>
-
- * */*: Update FDL 1.1 to FDL 1.3.
-
-2009-01-05 Werner LEMBERG <wl@gnu.org>
-
- * */*: Update copyright year.
-
-2009-01-05 Werner LEMBERG <wl@gnu.org>
-
- * MANIFEST: Updated.
-
-2009-01-05 Werner LEMBERG <wl@gnu.org>
-
- * doc/texinfo.tex (\key): Fix excessive whitespace.
- (\texinfoversion): Tag file as patched.
-
-2009-01-05 Werner LEMBERG <wl@gnu.org>
-
- * tmac/s.tmac (@TS, TE, @EQ, @EN), tmac/an-old.tmac (TS, TE, EQ,
- EN), tmac/e.tmac (TS, TE, EQ, EN): Set line length to a large value
- if processed with -Thtml.
-
-2009-01-04 Werner LEMBERG <wl@gnu.org>
-
- * tmac/www.tmac (TS, TE, EQ, EN): Set line length to a large value
- if processed with -Thtml to avoid warning messages (from code
- inserted by tbl, for example).
-
-2009-01-04 Gunnar Florus <http://florus.no>
-
- * */*: Update GPL2 to GPL3.
-
-2009-01-04 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.in (dist): Don't use soft links but copy files to
- preserve the file's time stamps.
- * Makefile.sub (configure): Remove `autom4te.cache'.
-
-2009-01-04 Werner LEMBERG <wl@gnu.org>
-
- * tmac/de.tmac: Fix German date strings. Reported by Axel Kielhorn.
-
-2009-01-04 Werner LEMBERG <wl@gnu.org>
-
- * doc/texinfo.tex: Updated from `texinfo' CVS repository.
- * doc/txi-en.tex: New file from `texinfo' CVS repository.
-
-2009-01-04 Werner LEMBERG <wl@gnu.org>
-
- * font/make-Rproto: Moved to...
- * font/util/make-Rproto: Here.
-
- * Makefile.in (NOMAKEDIRS): Add `m4', `font/devps/old', and
- `font/util'.
-
-2009-01-04 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/TODO: Mention local variables.
-
-2009-01-03 Werner LEMBERG <wl@gnu.org>
-
- * contrib/hdtbl/examples/col_rowspan_colors.roff,
- contrib/hdtbl/examples/color_boxes.roff,
- contrib/hdtbl/examples/color_nested_tables.roff,
- contrib/hdtbl/examples/color_table_cells.roff,
- contrib/hdtbl/examples/color_transitions.roff,
- contrib/hdtbl/examples/short_reference.roff: Minor improvements.
-
-2009-01-03 Werner LEMBERG <wl@gnu.org>
-
- * doc/webpage.ms: Updated.
-
-2009-01-03 Werner LEMBERG <wl@gnu.org>
-
- * NEWS, doc/groff.texinfo, font/devps/*, VERSION, REVISION: Prepare
- for version 1.20.
-
-2009-01-03 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/table.cpp (table::compute_expand_width,
- table::compute_separation_factor): In warning messages, don't refer
- to pages but to input line numbers.
-
-2009-01-03 Werner LEMBERG <wl@gnu.org>
-
- * tmac/groff_ms.man: Improve formatting of tables.
-
-2009-01-03 Werner LEMBERG <wl@gnu.org>
-
- * tmac/www.tmac (www->): Handle XHTML.
- (HTML</p>): Handle non-HTML devices.
- (www:url_check_tag): Avoid warnings.
-
-2009-01-03 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-old.tmac, tmac/doc.tmac: For -Tutf8, map \-, -, ', and `
- conservatively to ASCII for the sake of easy cut and paste.
-
-2009-01-03 Werner LEMBERG <wl@gnu.org>
-
- * NEWS: Mention hdtbl.
-
-2009-01-02 Werner LEMBERG <wl@gnu.org>
-
- * tmac/groff_mdoc.man: Update OS version string listing.
-
-2009-01-02 Werner LEMBERG <wl@gnu.org>
-
- * config.rpath, m4/codeset.m4, m4/glibc21.m4, m4/iconv.m4,
- m4/lib-link.m4, m4/lib-prefix.m4, src/include/localcharset.h,
- src/libs/libgroff/config.charset, src/libs/libgroff/localcharset.c,
- src/libs/libgroff/ref-add.sin, src/libs/libgroff/ref-del.sin:
- Updated from `gnulib' git repository.
-
- * configure: Regenerated.
-
-2009-01-02 Werner LEMBERG <wl@gnu.org>
-
- * tmac/ptx.tmac: New file.
-
- * NEWS, man/groff_tmac: man: Document it.
-
-2008-12-30 Werner LEMBERG <wl@gnu.org>
-
- Fix more quoting issues.
-
- * tmac/www.tmac (BCL, BGIMG, PIMG, MPIMG, LNS): For the sake of
- XHTML, quote more arguments.
- (IMG): Fix quoting.
-
-2008-12-30 Werner LEMBERG <wl@gnu.org>
-
- Fix quoting issues in www.tmac.
-
- * tmac/www.tmac (www:url_breaks_splitted): Renamed to...
- (www:url_breaks_split): This.
- (www->): New string to close tag singletons like <img> or <hr>. In
- XHTML mode (not implemented yet), this has to be changed from `>' to
- `/>'.
- (IMG): Don't use </img>
- Use www->.
- (PIMG, MPIMG): Don't use </img>
- Use www->.
- Fix doublequote issues.
- (HR): Don't use </hr>.
- Use www->.
- (LNS): Fix doublequote issues.
-
-2008-12-24 Michail Vidiassov <master@iaas.msu.ru>
-
- * tmac/doc-common: Add entries for Mac OS X and FreeBSD.
-
-2008-12-22 Alexey Gladkov <legion@altlinux.ru>
-
- * contrib/groffer/perl/roff2.pl: Fix syntax error.
-
-2008-12-15 Werner LEMBERG <wl@gnu.org>
-
- * NEWS: Mention `preconv'.
-
-2008-11-12 Werner LEMBERG <wl@gnu.org>
-
- Implement `x' specifier for expanded columns. Contrary to old DWB
- tbl, more than a single `x' specifier can be used. At the same
- time, remove most of the code from change 2007-02-09 which collides
- with the new implementation.
-
- * src/preproc/tbl/main.cpp (format): Add `expand' array.
- (format::format, format::~format): Updated.
- (input_entry_format): Add `expand' field.
- (input_entry_format::input_entry_format): Updated.
- (input_entry_format::debug_print): Handle `expand'.
- (process_format): Handle `x' specifier.
- (process_data): Updated.
-
- * src/preproc/tbl/table.cpp (AVAILABLE_REG, COLCOUNT_REG): Remove.
- (EXPAND_REG): New macro.
- (table_entry::divert, block_entry::divert,
- alphabetic_block_entry::divert): Add parameter to control whether
- expanded columns shall be handled.
- (block_entry::do_width): Remove.
- (block_entry::do_divert): Add parameter to control whether expanded
- columns shall be handled.
- Treat expanded columns like columns with a minimum width.
- Remove `experimental' code.
- (table::table, table::~table, table::allocate): Updated.
- (table::set_expand_column): New function.
- (table::count_block_columns): Replace with...
- (table::count_expand_columns): This function.
- (table::divide_span): Handle expanded columns the same as equal
- columns.
- (table::sum_columns): Add parameter to control whether expanded
- columns shall be handled.
- (table::compute_available_block_width): Replace with...
- (table::compute_expand_width): This function.
- (table::compute_total_separation): New function, taking code from
- `compute_separation_factor'.
- (table::compute_separation_factor): Simpler code. The check for the
- `EXPAND' flag has been moved to the caller.
- (table::compute_widths): Add `top-level' changes to handle expanded
- blocks.
-
- * src/preproc/tbl/table.h (table): New field `total_separation'.
- Remove `blockflag' array.
- Add `expand' array.
- Update member function declarations.
-
- * src/preproc/tbl/tbl.man: Document `x' specifier.
- Expand documentation to cover all aspects of Lesk's tbl reference.
-
- * NEWS: Document `x' specifier.
-
-2008-11-08 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/tbl.man: Restructuring.
- Improve text block documentation.
-
-2008-11-07 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/table.cpp (table::compute_widths): Use default
- scaling operator for minimum width. Without this fix, `lw3' (or
- `lw(3)' would be handled as a column with a minimum width of 3u
- instead of 3n.
-
-2008-11-05 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc-common (Dt): Start a new page if necessary and set up
- headers.
-
- * tmac/andoc.tmac (reload-doc): Simplify due to change in
- doc-common.
-
- * NEWS: Document it.
-
-2008-10-18 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/main.cpp (process_format): Rename `x' and `X' to
- `m' and `M', respectively.
- Sort entries in `switch' block.
- * src/preproc/tbl/tbl.man: Updated.
- Sort key entries; other minor improvements.
-
-2008-10-17 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/table.cpp (table::compute_available_block_width):
- New function.
- (table::compute_widths): Replace some code with new function
- (shifted to a more appropriate place).
- * src/preproc/tbl/table.h: Updated.
-
-2008-10-16 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc-common (doc-operating-system-*), tmac/groff_mdoc.man: Add
- NetBSD 4.0.1.
-
-2008-10-13 Werner LEMBERG <wl@gnu.org>
-
- * tmac/groff_mdoc.man: Update documentation on BSD-like OS string
- versions.
-
-2008-10-10 Werner LEMBERG <wl@gnu.org>
-
- * man/roff.man, doc/groff.texinfo: Improve the history part. This
- is based on input from Tom Van Vleck <thvv@multicians.org>.
-
-
- * src/preproc/eqn/sqrt.cpp (sqrt_box::compute_metrics): Assure that
- value of `rst' register is not zero, as can happen for the HTML
- output device. Otherwise, there are too many loops, and we get a
- stack overflow because of recursion.
-
-2008-10-05 Stephen Gildea <http://www.gildea.com/stephen/>
-
- * src/preproc/ref/ref.cpp (reference::compute_sort_key): Do
- not insert SORT_SEP before the first field, so that sort_key
- has the same format as before the patch of 2003-08-23.
-
-2008-10-04 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc-common (doc-operating-system-*): Update releases.
-
- * tmac/an-old.tmac (an-extra1, an-extra2, an-extra3): Initialize.
-
- * tmac/andoc.tmac: Rewritten, based on a preliminary version from
- Tadziu Hoffmann. It can now process multiple man pages with both
- man and mdoc formats intermixed.
-
- * NEWS, tmac/groff_man.man, tmac/groff_mdoc.man,
- man/groff_tmac.man: Document it.
-
-2008-10-04 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cpp (do_suppress): Make \O[3], \O[4], and
- \O[5] non-transparent w.r.t. beginning-of-line recognition (similar
- to the other \O variants).
-
- * tmac/www.tmac (TS, TE, EQ, EN): Don't use .als for setting up
- default macros. This causes endless loops (at least for TE).
-
- * doc/groff.texinfo: Improve documentation of `.als'.
-
-2008-10-03 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grops/grops.man, src/roff/troff/troff.man,
- src/preproc/soelim/soelim.man: Correct documentation of -I switch.
- Reported by Larry Kollar.
- Other minor formatting issues.
-
-2008-10-02 Werner LEMBERG <wl@gnu.org>
-
- * tmac/trace.tmac: Much improved.
- (trace-full): New register to be set on the command line; it
- controls whether number and string register assignments get traced
- also.
- (!!c): New macro for comments.
- (rm): New traced macro.
- (de, de1, am, am1): Use \\[xxx]\\ calling method to pass \$0 to
- `!!xxx'; this makes doc.tmac completely traceable.
- Trace call of .de and friends also.
-
- * tmac/groff_tmac.man, NEWS: Update.
-
-2008-09-30 Werner LEMBERG <wl@gnu.org>
-
- Restore behaviour of \$0 if a macro is called with string syntax
- (problem caused by change on 2008-09-29).
-
- * src/roff/troff/input.cpp (input_iterator, input_stack,
- macro_iterator): Add `get_macro_name' member function.
- (interpolate_string): Use it.
-
-2008-09-29 Werner LEMBERG <wl@gnu.org>
-
- Make \\*[xxx]\\ within a macro (with `xxx' a macro too) work as
- expected. Without the patch,
-
- .de aaa
- \\*[bbb]\\
- . tm \\$*
- ..
- .de bbb
- . shift
- ..
- .aaa 1 2 3
-
- prints `2 3' instead of `1 2 3'.
-
- * src/roff/troff/input.cpp (input_iterator, input_stack,
- macro_iterator): Add `get_arg_list' member function.
- (macro): Add `is_a_string', `is_string', and `clear_string_flag'
- members.
- Update constructors and operators.
- (arg_list): Add copy constructor.
- (macro_iterator): Add optional argument to constructor to indicate
- whether arguments shall be inherited from calling macro.
- (interpolate_string): If string argument is a macro, push a macro
- iterator on the stack.
- (do_define_macro): Call clear_string_flag if macro data contains a
- newline.
-
- * src/roff/troff/request.h: Updated.
-
-2008-09-29 Eric S. Raymond <esr@snark.thyrsus.com>
-
- * doc/pic.ms: Fold in documentation of pic2plot(1) capabilities.
- Improve the documentation of text objects.
-
-2008-09-28 Eric S. Raymond <esr@snark.thyrsus.com>
-
- * contrib/pic2graph, contrib/pic2graph.man, contrib/eqn2graph,
- contrib/eqn2graph.man: Tweak scripts to cope with incompatible
- changes in ImageMagick crop options. Document the bugs.
-
-2008-09-28 Werner LEMBERG <wl@gnu.org>
-
- If a macro is called as a string, inherit value of \n[.br] from the
- caller. This is useful for `trace.tmac'.
-
- * src/roff/troff/input.cpp (string_iterator): New members
- `with_break' and `get_break_flag'.
- (string_iterator::string_iterator): Updated.
-
- * doc/groff.texinfo: Improve documentation of \$0 and string syntax
- calling of macros.
- Document behaviour of \n[.br] within strings.
-
-2008-09-26 Werner LEMBERG <wl@gnu.org>
-
- * tmac/trace.tmac: Add copyright message.
- Use `.de1' where possible to make source code more readable.
- (so, mso, als, rn): Restore escape character before executing the
- request.
- (de, de1, am, am1): Trace `.foo' also if called as `\\[foo]'.
-
-2008-09-24 Werner LEMBERG <wl@gnu.org>
-
- Fix incompatibility between `.de1' and `.do'. Without this change,
- the following snippet
-
- .de1 xx
- . tm \\n(.C
- ..
- .cp 1
- .do xx
-
- prints 1 instead of 0.
-
- * src/roff/troff/input.cc (do_request): If a macro gets processed,
- call tok.next().
- (interpolate_macro): Add optional argument. Update callers.
- (request::invoke): Add optional argument.
- (macro::invoke): Add optional argument to delay call of tok.next().
-
- * src/roff/troff/request.h (request_or_macro): Add argument to
- `invoke' member. Update all derived classes.
-
- * doc/groff.texinfo: Improve documentation of .do request.
-
-2008-09-09 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-old.tmac (FT): Initialize properly. Reported by Tadziu
- Hoffmann.
-
-2008-09-06 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc-common (Dd, Os, Dt): Reset `doc-command-name' to make
- `.Nm' work properly if next manual page is printed.
-
-2008-08-20 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/tbl.man: Document computation of element widths.
-
-2008-08-20 Alexey Gladkov <legion@altlinux.ru>
- Werner LEMBERG <wl@gnu.org>
-
- Add default encoding option -D to preconv and groff.
-
- * src/preproc/preconv/preconv.cpp (default_encoding): Make it an
- array.
- Update all users.
- (main): Handle new option -D.
- (usage): Updated.
- * src/preproc/preconv/preconv.man: Updated.
-
- * src/roff/groff/groff.cpp (main): Handle new option -D.
- (synopsis, help): Updated.
- * src/roff/groff/groff.man: Updated.
-
-2008-07-26 Werner LEMBERG <wl@gnu.org>
-
- * tmac/eqnrc (.EQ, .EN): Provide default definitions. Reported
- by Denis M. Wilson.
-
- * tmac/www.tmac (.EQ, .EN, .TS, .TE): Fix definitions.
-
-2008-07-24 Denis M. Wilson <dmw@oxytropis.plus.com>
-
- New options -f and -k for afmtodit.
-
- * src/afmtodit/afmtodit.pl: New options `-f NAME' sets the internal
- name of the groff font.
- New option `-k' disables output of kerning data.
- * src/afmtodit/afmtodit.man, NEWS: Document new options.
-
-2008-07-18 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/table.cpp (table::compute_separation_factor): Emit
- warning messages if table gets squeezed.
- (table::compute_widths): Fix computation of AVAILABLE_REG.
- Emit warning if table is wider than line length.
-
- * src/preproc/tbl/tbl.man: Minor improvements.
-
-2008-05-02 Larry Jones <lawrence.jones@siemens.com>
-
- * contrib/chem/Makefile.sub (README, examples/README): In makefiles,
- the `$<' macro is only guaranteed to be defined in inference rules,
- not in explicit target rules. Since there is only one input file in
- the places where it is used, the `$?' macro (which is guaranteed to be
- defined for both kinds of rules) is a suitable replacement.
-
- * hdtbl/examples/fonts_n.in, hdtbl/examples/fonts_n.in: Most
- versions of ls don't have a `--color' option.
-
-2008-04-30 Larry Jones <lawrence.jones@siemens.com>
-
- * Makefile.comm (depend.temp): Add `EXTRA_CCFLAGS'.
-
-2008-04-29 Larry Jones <lawrence.jones@siemens.com>
-
- * src/eqn/script.cpp (script_box::output): Portability fix.
-
-2008-04-05 Dorai Sitaram <ds26gte@yahoo.com>
-
- Add better support for `.TAG #<label>' in non-HTML documents: In
- case of a forward reference in a call to .URL, write `(see below)'.
- In case of a backwards reference use the page number instead. The
- reference gets stored in a string `TAG_<label>' and can be
- overridden while calling `.TAG' with its new optional argument --
- this is useful for a second-pass system which resolves forward
- references.
-
- * tmac/www.tmac (www:url_check_tag): New function.
- (URL): Use it.
- (TAG): Add optional argument to define string `TAG_<label>'.
-
-2008-03-24 Werner LEMBERG <wl@gnu.org>
-
- * tmac/trace.tmac (so, mso): Added.
-
- * tmac/www.tmac (PIMG): Replace `.ie' (without `.el') with `.if'.
- If used with -mtrace, and this clause was active, the macro was
- executed twice.
-
- * tmac/pspic.tmac (PSPIC): Accept option `-C' for orthogonality.
- This makes `.PIMG -C <file>' (from www.tmac) work on non-HTML
- devices.
- * man/groff_tmac.man: Document it.
-
-2008-02-26 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cpp: s/safer_flag/unsafe_flag/.
- Update all occurrences so that \n[.U] works as advertised. Bug
- reported by Dorai Sitaram.
-
-2008-02-17 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo: Improve documentation of .cf request.
-
-2008-01-19 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/html/pre-html.cpp (usage): Don't describe options but
- mention that it should never be called stand-alone.
-
- * tmac/groff_www.man, doc/groff.texinfo, man/groff_font.man,
- man/groff_tmac.man, man/groff_out.man, README, README.MinGW,
- src/roff/groff/groff.man: Mention -Txhtml.
-
- * man/groff_font.man, man/groff_tmac.man, man/roff.man: Revised.
-
-2008-01-16 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/font.cpp (font::contains, font::get_code):
- Handle single-letter names correctly.
-
- * doc/groff.texinfo, man/groff_diff.man: Extend documentation of \^
- and \|.
- * NEWS: Updated.
-
-2008-01-15 Werner LEMBERG <wl@gnu.org>
-
- * man/groff_font.man: Revised.
-
-2008-01-14 Werner LEMBERG <wl@gnu.org>
-
- * man/groff.man: Mention glyph and characters.
- Minor other updates.
- * man/groff_char.man: Minor updates.
- * man/groff_diff.man: Better clarification between characters and
- glyphs.
-
-2008-01-12 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo: Fix top-level structure to make it compilable
- again with all texinfo modes. Reported by Jrg van den Hoff
- <j.van_den_hoff@fzd.de>.
-
-2008-01-11 Werner LEMBERG <wl@gnu.org>
-
- * doc/pic.ms: Mention that compass points of line objects are
- arbitrarily located.
-
-2008-01-06 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/node.cpp (left_italic_corrected_node::add_self):
- Don't remove itself if there is no glyph associated with the node
- yet. This happens, for example, in this situation:
-
- .ll 15000u
- .ft I
- x x
- (\,f
-
-2008-01-05 Werner LEMBERG <wl@gnu.org>
-
- * man/groff_char.man, man/groff.man: Revised.
-
- * src/preproc/eqn/lex.cpp (troff_defs): Fix typo.
-
-2008-01-04 Werner LEMBERG <wl@gnu.org>
- * */*: s/Osanna/Ossanna/.
-
- * */*.man: Replace .URL with .UR/.UE (except in groff_www.tmac).
- Replace .MTO with .MT/.ME (except in groff_www.tmac).
- Insert `\:' in URLs where appropriate.
- Don't include www.tmac (except in groff_www.tmac).
-
- * man/groff.man (.ESC[]): Fix font of closing bracket.
- (.ESCq): Fix font of closing quote character.
- Many other improvements.
-
-2007-12-30 Bernhard Fisseni <bfi@ikp.uni-bonn.de>
-
- * src/devices/grohtml/post-html.cc
- (html_printer::writeHeadMetaStyle): Fix CSS output.
-
-2007-12-29 Werner LEMBERG <wl@gnu.org>
-
- * tmac/ec.tmac: Add CM fonts to the .fspecial lines; those fonts
- contain additional glyphs (like some uppercase Greek letters).
-
-2007-12-06 Werner LEMBERG <wl@gnu.org>
-
- * NEWS: Updated.
-
-2007-12-06 Colin Watson <cjwatson@debian.org>
-
- * src/roff/nroff/nroff.sh: Add options -w and -W.
- * src/roff/nroff/nroff.man: Document them.
-
-2007-12-06 Karl Berry <karl@freefriends.org>
-
- * tmac/hyphenex.pl: Update header output.
-
-2007-11-29 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grotty/tty.cpp (tty_printer::line): Fix line lengths.
-
-2007-11-20 Werner LEMBERG <wl@gnu.org>
-
- * doc/pic.ms: Add Heinz-Jrgen's 3d boxes example.
-
-2007-11-17 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/nroff/nroff.sh: Handle GROFF_TYPESETTER environment
- variable. Problem reported by Michael G Schwern
- <schwern@pobox.com>.
-
- * src/roff/nroff/nroff.man: Document it.
- Other minor updates.
-
-2007-11-17 Heinz-Jrgen Oertel <hj.oertel@t-online.de>
-
- * src/groff/preproc/pic/lex.cpp (table): Add box attributes
- `xslanted' and `yslanted'.
-
- * src/groff/preproc/pic/object.cpp (object_spec::object_spec):
- Initialize `xslanted' and `yslanted'.
- (graphic_object): Add methods `set_xlanted' and `set_yslanted'.
- (closed_object): Ditto.
- Add members `xslanted' and `yslanted'.
- (box_object::print): Use them.
- (object_spec::make_object): Handle slant values.
- * src/groff/preproc/pic/object.h (IS_XSLANTED, IS_YSLANTED): New
- constants.
- (object_spec): Add members `xslanted' and `yslanted'.
- * src/groff/preproc/pic/pic.y (XSLANTED, YSLANTED): New left-valued
- tokens.
- Add rules for them.
-
- * src/groff/preproc/pic/pic.man, NEWS, doc/pic.ms: Document above
- changes.
-
-2007-11-16 Werner LEMBERG <wl@gnu.org>
-
- * tmac/hyphenex.pl: Generate copyright notice (this has been
- approved by Barbara Beeton).
- * tmac/hyphenex.us: Updated.
-
-2007-11-10 Michail Vidiassov <master@iaas.msu.ru>
-
- * tmac/doc-syms (doc-str-St--susv3): New string.
- * tmac/groff_mdoc.man: Document it.
-
-2007-11-08 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/preconv/preconv.cpp (emacs_to_mime): Add `utf-16be',
- `utf-16le', `utf-16be-with-signature', `utf-16le-with-signature'.
- (is_comment_line): Handle '\" and '\# also.
-
- * src/preproc/preconv/preconv.man: Revise and make complete.
-
-2007-10-25 Werner LEMBERG <wl@gnu.org>
-
- * tmac/cs.tmac: New file holding Czech strings, contributed by
- Marcela Maslanova <mmaslano@redhat.com>.
- * tmac/hyphen.cs, tmac/hyphenex.cs: New hyphenation pattern files
- for Czech, taken from CTAN.
- * LICENSES: Updated.
- * tmac/Makefile (NORMALFILES): Add Czech stuff.
- * doc/groff_tmac.man: Mention cs.tmac.
-
-2007-10-21 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cpp (do_ps_file): Handle `%X' in header
- comments correctly. Reported by Frank Jahnke
- <jahnke@sonatabio.com>.
-
-2007-10-02 Ruslan Ermilov <ru@FreeBSD.org>
-
- * tmac/doc-common, tmac/groff_doc.man: Add FreeBSD 6.2, document
- FreeBSD 5.5 and 7.0.
-
- * tmac/doc-syms: Give better names for System V releases.
-
-2007-09-25 Gaius Mulley <gaius@glam.ac.uk>
-
- * doc/Makefile.in, doc/Makefile.sub (.ms.html): Add -P-V switch to
- the production of html files.
- (pic.html): Ditto.
- Remove background colour switch.
- (.SUFFIXES, clean): Handle *.xhtml files.
-
- * src/devices/grohtml/grohtml.man: Document that -V option now
- generates an HTML-4.01 validator or XHTML validator.
-
- * src/devices/grohtml/html-text.cpp (html_text::end_tag,
- html_text::start_tag): Suppress <small>, <big>, and <color> tags if
- we are inside a <pre> block.
-
- * src/devices/grohtml/post-html.cpp
- (html_printer::handle_valid_flag): Add a parameter to indicate
- whether it needs to generate a paragraph block.
- (html_printer::write_navigation): Updated.
- (html_printer::do_file_components): Generate an HTML-4.01 blue
- validator button also.
-
-2007-09-23 Axel Kielhorn <A.Kielhorn@web.de>
-
- * man/groff.man: Fix URL of CSTR 54.
-
-2007-09-23 Werner LEMBERG <wl@gnu.org>
-
- * man/groff_char.man: Normalize character set names as defined
- by IANA. Based on a patch from Axel Kielhorn.
-
- * src/preproc/refer/label.y: Undo change from 2007-09-19.
-
-2007-09-19 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cpp (interpolate_arg): Remove compiler
- warning.
-
- * src/preproc/eqn/pile.cpp (pile_box::output, matrix_box::output):
- Remove compiler warning.
-
- * src/preproc/refer/label.y: Remove compiler warning.
-
- * src/preproc/pic/pic.y: Remove doubled token entries.
-
-2007-09-19 Gaius Mulley <gaius@glam.ac.uk>
-
- * doc/groff.texinfo: Document new .O register and add cross
- reference entries.
-
- * NEWS: Updated.
-
- * src/devices/grohtml/grohtml.man: Document new -V and -y options.
-
- * src/devices/grohtml/html-table.cpp: Add support for XHTML 1.1.
- (html_table:: emit_colspan, html_table::emit_td): New methods.
- (html_table::emit_col): Use html_table::emit_td.
- (html_table::emit_table_header): Use html_table::emit_colspan if
- dialect xhtml is specified.
- (html_table::finish_row): Updated.
-
- * src/devices/grohtml/html-table.h (html_table): Declare
- emit_colspan, emit_td.
-
- * src/devices/grohtml/html-text.cpp: Modified tags to comply with
- xhtml if this dialect was requested.
-
- * src/devices/grohtml/html-text.h (html_dialect): New enumeration.
- (html_text): Add new variable `dialect'.
-
- * src/devices/grohtml/post-html.cpp: Modify header tags to be XHTML
- compliant.
- (valid_flag, groff_sig, dialect): New global variables.
- (html_printer::handle_valid_flag, html_printer::do_math,
- html_printer::write_html_anchor, html_printer::write_xhtml_anchor,
- html_printer::do_math, html_printer::handle_valid_flag): New
- methods.
- (html_printer::emit_line, html_printer::emit_raw,
- html_printer::do_check_center, html_printer::write_title,
- write_rule, html_printer::writeHeadMetaStyle, generate_img_src,
- html_printer::begin_page): Altered to be XHTML compliant.
- (html_printer::write_header): Updated.
- (html_printer::troff_tag): Call do_math.
- (html_printer::insert_split_file, html_printer::do_file_components,
- html_printer::write_navigation): Create XHTML file components if
- necessary and also produces a groff signature if requested.
- (~html_printer): Call writeHeadMetaStyle at appropriate places
- depending upon html_dialect.
- (html_printer::special): Handle new tags `html<?p>' and `math<?p>'.
- (main): Added options -x, -V, and -y.
- (usage): Updated.
-
- * src/preproc/eqn/box.cpp: Create a distinction between
- the MathML device and the XHTML device.
- (do_text): Issue a newline at the end of the equation if XHTML was
- specified.
- (box::top_level): Prefix the output of an equation by the .MATHML
- macro.
- (output_string): Suppress \n if XHTML was specified.
-
- * src/preproc/eqn/main.cpp (xhtml): New global flag.
- (inline_equation): Skip leading spaces after inline equation for
- XHTML device.
- (main): Set `xhtml' flag if `-Tmathml:xhtml' is specified.
-
- * src/preproc/eqn/eqn.h (xhtml): New external flag.
-
- * src/preproc/eqn/text.cpp (entity_table): Fix typo.
-
- * src/preproc/html/pre-html.cpp (html_dialect): New enumeration.
- (dialect, eqn_flag): New global variables.
- (html_system): Improve debugging support.
- (alterDeviceTo): Test for -Txhtml when altering device to the image
- device and reset to -Txhtml.
- (addZ): Renamed to...
- (addArg): This.
- Introducea a general parameter.
- (print_args): New debugging function.
- (char_buffer::run_output_filter): Use print_args and addArg rather
- than addZ.
- (char_buffer::do_html, char_buffer::do_image): Add -rxhtml=1 command
- line parameter as an argument to the html generation of text when
- xhtml is needed. Include -e on the command line if mathml is
- required.
- (scanArguments): Allow -e, -V, -y and -x options.
- -V, -y are handled by the back end. -e sets `eqn_flag'.
- -x determines HTML dialect.
-
- * src/roff/groff/groff.cpp (possible_command): New method
- `clear_name'.
- (main): Set eflag if -e is present on command line.
- Set is_xhtml if -Txhtml is present.
- Pass `-x x' to the HTML pre and post processors.
- Pass `-e' to the HTML pre processor if required.
- Pass `-Tmathml:xhtml' to eqn if XHTML is requested.
-
- * src/roff/troff/input.cpp (init_input_requests): Introduce new
- number register `\n[.O]'.
-
- * tmac/s.tmac: (LP): Use .nop for semantic sugar.
- (cov*ab-init) reformat.
- (@EQ): Use EQN-HTML-IMAGE and friends rather than HTML-IMAGE.
- (CHECK-FOOTER-AND-KEEP): Define FS, FE such that they use
- <cite></cite> for the html device rather than generate images for
- footnotes.
-
- * tmac/troffrc-end: Define EQN-HTML-IMAGE,
- EQN-HTML-IMAGE-END, EQN-HTML-IMAGE-RIGHT,
- EQN-HTML-IMAGE-LEFT, EQN-HTML-IMAGE-INLINE,
- EQN-HTML-DO-IMAGE, EQN-HTML-IMAGE-END as null strings.
-
- * tmac/www.tmac: (HTML<?p>): New macro.
- (MATH<?p>): New macro.
- (IMG, PIMG, MPIMG, HR): Use XHTML compliant syntax.
- (www-emit-ltag): New macro.
- (www-push-li): Updated.
- (ULS): Ensure that tags are balanced in order by use of
- www-emit-ltag.
- (ULE): Likewise: Use www-emit-ltag and shut down paragraphs in
- order.
- (OLS, OLE, DLS, DLE): Ditto.
- <global>: Define EQ and EN to EQN-HTML-IMAGE and EQN-HTML-IMAGE-END
- respectively.
- (www-li-ul, www-li-ol, www-li-dl): Updated.
- (EQN-HTML-IMAGE, EQN-HTML-IMAGE-RIGHT, EQN-HTML-IMAGE-LEFT,
- EQN-HTML-IMAGE-INLINE, EQN-HTML-DO-IMAGE, EQN-HTML-IMAGE-END,
- MATHML): New macros.
-
-2007-09-17 Werner LEMBERG <wl@gnu.org>
-
- * man/groff_font.man: Document `unicode' keyword.
- * doc/groff.texinfo (DESC File Format): Synchronize with
- groff_font.man.
-
-2007-09-15 Werner LEMBERG <wl@nu.org>
-
- * man/groff.man: Document `\_'.
- * doc/groff.texinfo: Ditto.
- Remove references to `\@' which isn't a valid escape sequence in
- groff.
-
-
- * tmac/unicode.tmac: Add ` and '.
- * tmac/html.tmac: Load unicode.tmac.
-
-2007-09-14 Werner LEMBERG <wl@gnu.org>
-
- * tmac/unicode.tmac: Make `-' a pure input character by mapping it
- to `hy'.
-
- * src/roff/troff/input.cpp (init_charset_table): Handle `hy'.
-
-2007-09-11 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/string.cpp (string::remove_spaces): Fix memory
- allocation.
-
- * src/preproc/tbl/table.cpp (table::allocate): Initialize
- `blockflag' array.
-
-2007-09-10 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * README.MinGW: Add warnings about use of MSYS-RXVT, and about
- defective GnuWin32 versions of netpbm/libpng.
-
-2007-07-15 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * tmac/s.tmac (cov*first-page-init): Remove invoking trap, to avoid
- possible recursion.
-
-2007-07-11 Werner LEMBERG <wl@gnu.org>
-
- * gendef.sh: Add shebang.
-
-2007-07-05 Werner LEMBERG <wl@gnu.org>
-
- * tmac/papersize.tmac: Fix dimensions of executive paper format.
- Reported by John Rupley <rupley@u.arizona.edu>.
-
-2007-07-02 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * tmac/s.tmac (cov*first-page-init): Emit error message if not in
- top-level environment.
-
-2007-06-12 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/xditview/TODO, NEWS: Updated.
- * src/devices/xditview/Makefile.sub (install_data, uninstall_sub):
- Handle `GXditview-color'.
- * src/devices/xditview/gxditview.man: Updated.
-
- * m4/groff.m4 (GROFF_APPRESDIR_CHECK): Updated.
- * m4/codeset.m4, m4/glibc21.m4, m4/iconv.m4, m4/lib-link.m4: Updated
- from `gnulib' git repository.
-
- * configure.ac: Updated.
- * configure: Regenerated (using autoconf 2.61).
-
- * config.guess, config.sub: Updated from `config' CVS repository.
- * config.rpath, install-sh, mkinstalldirs: Updated from `gnulib' git
- repository.
-
-2007-06-12 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
-
- * src/devices/xditview/GXditview.ad: Split off color definitions
- into...
- * src/devices/xditview/GXditview-color.ad: This new file.
-
-2007-06-08 Fabrice Mnard <menard.fabrice@wanadoo.fr>
-
- * tmac/fr.tmac: Handle chapter system for `me'.
-
-2007-06-05 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
-
- * src/devices/xditview/xditview.c (main): Add support for
- accelerators.
-
- * src/devices/xditview/GXditview.ad: Updated.
- Make widget more colourful.
-
-2007-05-30 Werner LEMBERG <wl@gnu.org>
-
- * tmac/groff_mdoc.man: Convert `-' to `\-' where appropriate.
- Recommend `tbl' instead of `-column' lists for more complicated
- cases.
-
-2007-05-21 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grops/ps.cpp (ps_printer::set_char): Handle subfonts
- correctly.
-
-2007-04-10 Werner LEMBERG <wl@gnu.org>
-
- In pic, make rounded boxes work with colors. Reported by Urs Eggli
- <Urs.Eggli@zuerich.ch>.
-
- * src/preproc/pic/common.h (common_output), src/preproc/pix/output.h
- (output): Add color parameter to `rounded_box' member function.
-
- * src/preproc/pic/common.cpp (common_output::rounded_box): Use it.
-
- * src/preproc/pic/object.cpp (box_object::print): Pass `color_fill'
- to `out->rounded_box'.
-
-2007-04-09 Michail Vidiassov <master@iaas.msu.ru>
-
- * font/devps/generate/textmap: Add Greek letters and some more.
-
- * src/utils/afmtodit/afmtodit.tables: Change values of `Delta',
- `Omega', and `mu' to the ones from aglfn.txt.
-
-2007-04-08 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * tmac/s.tmac (SN): Define unconditionally.
- (SN-STYLE): New string; define.
-
- * NEWS, tmac/groff_ms.man, doc/groff.texinfo (SN-STYLE): Document it.
-
-2007-03-22 Werner LEMBERG <wl@gnu.org>
-
- * tmac/pspic.tmac: Fix harmless numeric overflow warning. Reported
- by Jrg van den Hoff <j.van_den_hoff@fzd.de>.
-
-2007-03-20 Werner LEMBERG <wl@gnu.org>
-
- * tmac/trace.tmac (rn): Added.
- (nr, ds, ds1, as, as1, substring): Restore escape character while
- executing the macro.
- (nr): Remove dead code.
-
- * src/preproc/eqn/box.cpp (box::top_level): Use \E in string
- definitions to make them traceable.
-
-2007-03-19 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cpp (get_copy): Add third argument to control
- whether \E shall be expanded.
- (get_char_for_escape_name): Allow \E.
-
-2007-03-15 Werner LEMBERG <wl@gnu.org>
-
- * tmac/s.tmac (MO, CH, pg*OH, pg*EH, pg*OF, pg*EF, *, [., .],
- par*define-font-macro, \[hooko]): Use \E to make it traceable.
-
- (ref*field): Add argument to control the space between previous and
- current argument.
- Update all callers.
- (ref*add-N): Fix handling of opening parenthesis. Problem reported
- by Jrg van den Hoff <j.van_den_hoff@fzd.de>.
-
-2007-03-14 Werner LEMBERG <wl@gnu.org>
-
- * tmac/trace.tmac (als): Added.
- (de, de1, am, am1): Make traced macros aliased with .als work.
-
-2007-02-25 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/xditview/TODO: Add some more items.
-
- * Makefile.comm (.man.n): Add @APPRESDIR@.
- Sort entries.
-
- * src/devices/xditview/gxditview.man: Document GXditview resource
- file.
- Other documentation enhancements based on a patch from Jrg.
-
-2007-02-25 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
- Joerg van den Hoff <j.van_den_hoff@fzd.de>
-
- * src/devices/xditview/GXditview.ad: Make all keys work regardless
- of the current mouse position.
-
-2007-02-20 Werner LEMBERG <wl@gnu.org>
-
- * tmac/groff_man.man: Revised to improve visual appearance.
- Reduce use of future tense.
-
- * tmac/groff_trace.man: Revosed to improve visual appearance.
-
-2007-02-19 Eric S. Raymond <esr@snark.thyrsus.com>
-
- Make groff.man viewer-portable.
-
- * tmac/groff.man: Eliminate use of .eo/.ec.
- (.REQ): Surround args 2 through N with quotes. This will enable us
- not to rely on the shift request, which is nonportable.
- (ExecFF): Remove. The code is simpler without it.
-
-2007-02-18 Eric S. Raymond <esr@snark.thyrsus.com>
-
- * tmac/groff_www.man: Viewer-portability fixes.
-
-2007-02-16 Eric S. Raymond <esr@snark.thyrsus.com>
-
- * man/groff.man: Remove some unneeded code and a no-longer-used
- inclusion of the www macros.
-
-2007-02-12 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/table.cpp (compute_span_width): Fix use of
- AVAILABLE_REG.
- (table::compute_widths): Simplify.
-
-2007-02-11 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/table.h: Don't include `stdbool.h'.
- (table): Replace `bool' type with `char' for orthogonality.
- Update all users.
-
- * src/preproc/tbl/table.cpp (block_entry::do_divert): Fix usage of
- AVAILABLE_REG and COLCOUNT_REG.
- (table::table): Fix order call of initializers.
- (table::~table): Deallocate `blockflag'.
-
-2007-02-09 Eric S. Raymond <esr@snark.thyrsus.com>
-
- A try at the new rule for block column allocation is now enabled by
- the new `experimental' global option: The horizontal space up to the
- right margin which is not used by columns without text blocks is
- evenly distributed to the columns with text blocks.
-
- It doesn't work right as yet; there appears to be some error in the
- computation of `3avail', the available line length. The purpose of
- this patch is (a) to make experimenting with other formulas easy,
- and (b) leave the infrastructure for flag `experimental' in place
- for future experiments. Do not document any behavior associated
- with this flag!
-
- * src/preproc/tbl/table.h: Include `stdbool.h'.
- (table): Make `flags' public.
- Add `count_block_columns' function.
- Add `blockflag' array.
- Add `EXPERIMENTAL' enumeration value.
-
- * src/preproc/tbl/table.cpp (AVAILABLE_REG, COLCOUNT_REG): New
- macros.
- (table_entry): New member `parent' so that class and subclass
- members can set a parent field. Update all users.
- (block_entry::do_divert): Handle `EXPERIMENTAL' flag.
- (block_entry::do_width): Set the parent's `blockflag'.
- (table::allocate): Handle `blockflag'.
- (table::count_block_columns): New function.
- (compute_span_width): Adjust AVAILABLE_REG.
- (table::compute_widths): Handle COLCOUNT_REG and AVAILABLE_REG.
-
- * src/preproc/tbl/main.cpp (process_options): Handle `experimental'
- option.
-
-2007-02-08 Zhao, Yu (William) <yzhao2@alcatel-lucent.com>
-
- * src/devices/grodvi/dvi.cpp (draw_dvi_printer::draw) <'e'>: Set
- line thickness.
-
-2007-02-08 Werner LEMBERG <wl@gnu.org>
-
- * man/groff_out.man (offset): Make it work reliably.
-
-2007-02-07 Eric S. Raymond <esr@snark.thyrsus.com>
-
- * man/groff_out.man: Simplify some font changes so \fP is less
- likely to do something surprising.
-
- * man/groff_out.man: We can simplify the command macros still
- further if we stop trying to hide structural requests inside them.
- Also, fix some instances of \} at start of line without a dot, and
- make some font changes explicit in strings.
-
- * man/groff_out.man: Cleanup -- remove now-unneeded uses of .do and
- .cp.
-
- * man/groff_out.man: Final step: Reduce x-command, get rid of eo/ec
- calls and fix macros to do without them. File should now be
- viewer-portable.
-
- * man/groff_out.man: Fourth step: Eliminate use of eqn in favor of
- micromotions that produce the same visual result and can be lifted
- to XML-DocBook.
-
- * man/groff_out.man: Third step: Reduce Da-comand, fix a
- call-sequence bug in the original.
-
- * man/groff_out.man: Second step: Reduce D-commmand and D-command+,
- move font-change escapes to portable form.
-
- * man/groff_out.man: First step in macro simplification; eliminate
- list1..n, simplify .offset and .index_offset so they no longer
- require groff-specific features or eqn (instead, use troff
- micromotions for subscripting).
-
-2007-02-06 Eric S. Raymond <esr@snark.thyrsus.com>
-
- * src/preproc/eqn/eqn.man: Minor corrections.
-
- * tmac/an-ext.tmac: Change .UR/.UE and .MT/.ME so the start macro no
- longer takes a second argument that is pasted to the end of the
- generated text. Instead, the end macro takes an argument that does
- the same thing.
-
- * man/ditroff.man, man/groff_diff.man, man/groff.man,
- man/groff_out.man, man/groff_tmac.man, man/roff.man,
- src/roff/groff/groff.man, src/roff/grog/grog.man,
- tmac/groff_man.man, tmac/groff_trace.man: Update accordingly.
-
- * src/roff/troff/troff.man: .SY and .YS are canned macros now,
- so we can use them here.
-
-2007-02-05 Eric S. Raymond <esr@snark.thyrsus.com>
-
- * src/preproc/eqn/lex.cpp, src/preproc/eqn/eqn.man:
- By popular demand, make ... set three lower dots again
- and introduce a new predefined macro 'cdots' to set
- three centered dots.
-
-2007-02-05 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/eqn/eqn.man: Revised.
-
- * src/preproc/eqn/text.cpp (map, special_char_boc::output): Use
- `const'.
- (spacing_type): Fix typo.
- (special_to_entity): Use `const'.
- Remove unused variable.
- * src/preproc/eqn/other.cpp (font_box::output): Use `const'.
-
-2007-02-05 Eric S. Raymond <esr@snark.thyrsus.com>
-
- * src/devices/grotty/grotty.man: \m[] and \M[] aren't portable,
- which is a shame as the effect was cute.
-
-2007-02-04 Eric S. Raymond <esr@snark.thyrsus.com>
-
- * man/groff_tmac.man, man/groff_diff.man: Portability conversion;
- rip out over-elaborate macrology, use .EX/.EE and .UR/.UE where
- possible, remove preamble declarations and macros that are no
- longer needed. Conversion checked using the protocol described in
- tmac/TESTING-HINTS.
-
-2007-02-03 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-old.tmac (LP, IP, HP): Use .ns to suppress additional
- vertical space.
-
-2007-02-03 Eric S. Raymond <esr@snark.thyrsus.com>
-
- * tmac/groff_man.man: Documented the extension macros, and
- added portability advice.
-
- * MORE.STUFF: More-stuff entries for doclifter and pic2plot.
-
-
- Add support for MathML output to eqn.
-
- The strategy used is very simple and relies on the fact that the box
- models of eqn and Presentation MathML differ in only trivial ways.
- It leaves the grammar and existing internal object structures
- unchanged. A new global, `output_format', is defined as an
- enumerated type with values {troff, mathml}. Most of the functions
- and methods that emit actual output acquire a top-level conditional,
- dispatching on this global, which has one arm for troff mode and one
- for MathML mode. In most cases the MathML arm is drastically
- simpler.
-
- (This strategy could be easily generalized to support other output
- formats. TeX is a possibility that leaps to mind.)
-
- The only even moderately tricky changes are in the lexer. Some of
- the predefined macros used constructs like `up', `down', `fwd',
- `back', and `vcenter' that have no equivalents in MathML. I
- attacked this problem in these ways:
-
- 1. I eliminated three uses of `back' to compose characters in favor
- of using equivalent groff specials `\(<<', `\(>>', and `\(<>'
- that did not exist when these macros were written. (This will be
- a quality improvement for troff users.)
-
- 2. I eliminated one use of `vcenter' by using \\(md. (Likewise...)
-
- 3. I then split the table of pre-definitions in three; one large
- common table and two small troff-specific and MathML-specific
- tables. Use of troff-only operations (up, down, back, fwd,
- vcenter) is now confined to the former. The latter now uses
- `size big' and drops out the explicit positioning operations,
- counting on MathML processors to do them.
-
- POTENTIAL TROUBLE SPOTS:
-
- Here are notes for reviewers on places I'm not 100% sure I've done
- the right thing:
-
- * In the process of preparing the troff table, I translated three
- definitions (dot_def, dotdot_def, and utilde def) that previously
- used explicit \v escapes to use `up' and `down' instead. I
- modeled the new definitions on the way `vec' and `dyad' work, but
- it's possible I got something subtle wrong.
-
- * I'm not certain the MathML implementation of font_box::output() is
- right, because I don't quite get what the switcheroo between
- `current_roman_font' and `old_roman_font' is supposed to
- accomplish. It does seem to generare good MathML, though.
-
- Finally, I made one purely cosmetic change in `text.cpp'; I replaced
- with an enum some magic numbers for spacing types that I thought
- were too ugly to live.
-
- REMAINING ISSUES:
-
- The entirety of eqn is translated when `-TMathML' is specified,
- with the following exceptions...
-
- Limitations that cannot be fixed include non-support for special,
- up/down/fwd/back, and vcenter.
-
- Limitations that might be fixable include non-support for mark and
- lineup. I will investigate further, but if these can be implemented
- at all it's going to be in a very complicated and nasty way.
-
- The way character boxes are output means that each digit of a
- multi-digit number gets its own <mn></mn> tag pair in the MathHTML.
- While this is not technically wrong for Presentation MathML, it is
- ugly and inefficient. Fixing this will require implementing a
- little state machine in the `text.cpp' output method.
-
- * src/preproc/eqn/box.cpp, src/preproc/eqn/delim.cpp,
- src/preproc/eqn/eqn.h, src/preproc/eqn/eqn.man,
- src/preproc/eqn/lex.cpp, src/preproc/eqn/limit.cpp,
- src/preproc/eqn/list.cpp, src/preproc/eqn/main.cpp,
- src/preproc/eqn/other.cpp, src/preproc/eqn/over.cpp,
- src/preproc/eqn/pile.cpp, src/preproc/eqn/script.cpp,
- src/preproc/eqn/sqrt.cpp, src/preproc/eqn/text.cpp,
- src/preproc/eqn/eqn.man: MathML output mode.
-
- * NEWS: Document it.
-
-2007-02-02 Eric S. Raymond <esr@snark.thyrsus.com>
-
- * src/roff/groff/groff.man: Converted to use .SY/.OP/.YS
- and for cross-viewer portability. Conversion checked
- using the protocol described in tmac/TESTING-HINTS.
-
-2007-02-02 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-ext.tmac (ME): Don't use `\:'.
-
- * src/roff/grog/grog.man: Further refinements and normalizations.
-
-2007-02-02 Eric S. Raymond <esr@snark.thyrsus.com>
-
- * src/roff/grog/grog.man: Converted to use .SY/.OP/.YS and for
- cross-viewer portability. Conversion checked using the protocol
- described in tmac/TESTING-HINTS.
-
-2007-02-01 Eric S. Raymond <esr@thyrsus.com>
-
- * tmac/TESTING-HINTS: Added.
-
-2007-02-01 Eric S. Raymond <esr@thyrsus.com>
-
- Enable the support for Bell archaisms on .SC, so the `-r bell'
- switch is no longer needed to format old AT&T papers like
- the EQN user guide.
-
- * tmac/s.tmac (.SC, .UC, .P1, .P2): Updated.
-
- * tmac/groff_ms.man, doc/groff.texinfo, NEWS: Updated.
-
-2007-02-01 Eric S. Raymond <esr@thyrsus.com>
-
- Add some Bell labs extensions to the -ms macros.
-
- * tmac/s.tmac (.SC, .UC, .P1, .P2) [bell]: New macros.
-
- * tmac/groff_ms.man, doc/groff.texinfo, NEWS: Document `-r bell'.
-
-2007-01-30 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-ext.tmac (\n[EX]): Rename to \n[mX].
- (\n[mH]): New register (set if grohtml is used).
- (\n[SY]): Rename to \n[mS].
- (\n[a]): Rename to \n[mA].
- (\n[i]): Rename to \n[mI].
- (mU): New auxiliary input trap macro.
- (UR, UE): Replace stub with real definition.
- (URL): Remove.
- (MT, ME): New macros.
- (MTO): Remove.
- (EX, EE): Don't insert vertical space.
- Use a register to store (and restore) the current font.
-
- * man/ditroff.man, man/groff_diff.man, man/roff.man: Revised, based
- on patches from Eric Raymond.
- Fix URL addresses.
-
-2007-01-22 Gaius Mulley <gaius@glam.ac.uk>
-
- * tmac/an-old.tmac (an-trap, HP): Make `HP' work as expected.
-
-2007-01-22 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-ext.tmac: Protect against being sourced twice.
- (URL, EE): Use always two backslashes.
- (MTO): New macro.
-
-2007-01-16 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-ext.tmac: Remove code for grodvi.
- (SY): Fix typos.
- Don't insert empty line.
- (URL, TQ): Fix typos.
-
-2007-01-14 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-ext.tmac: New file, containing extension macros
- for -man. See discussion on the groff mailing list for
- background information.
- * tmac/an-old.tmac: Load an-ext.tmac.
- Decorate .ds and as with comment escapes where appropriate.
- * tmac/Makefile.sub (NORMALFILES): Add an-ext.tmac.
-
-2007-01-05 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/tbl.man: Document .T# and \n[TW].
-
-2007-01-04 Gaius Mulley <gaius@glam.ac.uk>
-
- Make -me macros ready for grohtml.
-
- * tmac/e.tmac: Load devtag.tmac.
- (need_eo_h, need_eo_tl, need_tl): New registers.
- (check_need_title, (x-html, )x-html, xp-html): New macros.
- (@h, hl, ip, @p, sh, (b, (l, EQ, EN, TS, TE, PS, PE, GS, GE, r, i,
- b, rb, bi, bx, (x, )x, xp): Adapt for use with grohtml.
- (bp): Rename to @b only if output device is not html.
-
-2007-01-01 Werner LEMBERG <wl@gnu.org>
-
- * man/groff_font.man: Document empty lines.
-
- * src/utils/afmtodit/afmtodit.pl: Always print a header comment at
- the very beginning of the output.
- [!$opt_x]: Fix typo.
-
- * font/devps/*: Regenerate font definition files.
-
-2007-01-01 Werner LEMBERG <wl@gnu.org>
-
- * font/devps/generate/Makefile (AFMTODIT): Use -c flag.
-
- * font/devps/*: Regenerate font definition files.
-
-2006-12-31 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.in (oldfontdir): New variable.
- (MDEFINES): Add $(oldfontdir).
- (uninstall_dirs): Remove `current' link.
- Remove $(oldfontdir).
-
- * Makefile.comm (oldfontsubdir): New variable.
- (install_dev): Install files collected in $(OLDDEVFILES) into
- $(oldfontsubdir).
- (uninstall_dev): Remove data in $(oldfontsubdir).
- (.man.n): Handle @OLDFONTDIR@.
-
- * src/devices/grodvi/grodvi.man, src/devices/grohtml/grohtml.man,
- src/devices/grolbp/grolbp.man, src/devices/grolj4/grolj4.man,
- src/devices/grotty/grotty.man, src/devices/xditview/gxditview.man:
- Document GROFF_FONT_PATH.
-
- * src/devices/grops/grops.man: Document GROFF_FONT_PATH and
- old font description files.
-
- * font/devps/Makefile.sub (OLDDISTFILES, OLDDEVFILES): New
- variables.
-
- * font/devps/old/*: New directory, holding the previous version
- of the 35 Adobe core font description files.
-
- * font/devps/*: Regenerated the 35 Adobe core fonts, using the
- Adobe-Core35_AFMs-229.tar.bz2 bundle from ftp.dante.de.
-
- * NEWS: Document font update.
-
-2006-12-31 Werner LEMBERG <wl@gnu.org>
-
- * font/devps/generate/Makefile (symbolsl.afm): Use $(srcdir).
-
- * Makefile.comm (fonts): New (empty) target.
- * Makefile.in (TARGETS): Add `fonts'.
-
- * MANIFEST: Add `chem'.
-
- * doc/groff.texinfo (Changing Fonts): Font translations with .ftr
- can't be chained.
-
-2006-12-26 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/grn/hdb.cpp: Include gprint.h later. From NetBSD.
-
-2006-12-19 Werner LEMBERG <wl@gnu.org>
-
- Add support for German. For activation, simply use -mde or -mden
- (for traditional and new orthgraphy, respectively) as the last
- macro package.
-
- * tmac/de.tmac, tmac/den.tmac, tmac/hyphen.det, tmac/hyphen.den,
- tmac/hyphenex.det: New files, partly taken from CTAN.
- * LICENSES: Updated list of hyphenation patterns.
- * man/groff_tmac.man: Mention de.tmac and den.tmac.
- * NEWS: Updated.
-
-2006-12-11 Werner LEMBERG <wl@gnu.org>
-
- Support up to 32 macro arguments in pic (and up to 16 on EBCDIC
- hosts).
-
- * src/preproc/pic/lex.cpp (ARG1): Redefine. Update all users.
- (MAX_ARG): New macro. Use it everywhere to replace hard-coded
- limit of 9 arguments.
- (process_body): Handle argument numbers with more than a single
- digit.
- (interpolate_macro_with_args): Protect against exceeding number of
- arguments.
-
- * NEWS, src/preproc/pic/pic.man, doc/pic.ms: Document it.
-
-2006-12-10 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.in (site.exp, docheck): Commented out. Not working
- currently.
- (check): Just emit dummy message.
-
-2006-12-08 Werner LEMBERG <wl@gnu.org>
-
- During installation, create soft link from <version> to `current' in
- <datadir>/groff.
-
- * Makefile.comm (install): Renamed to...
- (do_install): This.
- (prefix_must_exist): Removed. Code moved to Makefile.in.
-
- * Makefile.in (TARGETS): Remove `install'.
-
- (install): New target which first creates the directory given by
- --prefix, then calling `make' to do the installation, and finishing
- with the creation of the soft link.
-
-2006-11-21 Werner LEMBERG <wl@gnu.org>
-
- * doc/Makefile.sub (uninstall_sub): Fix names for info files.
-
-2006-11-18 Werner LEMBERG <wl@gnu.org>
-
- * man/roff.man, doc/groff.texinfo: Improve history of roff, based on
- information from Tom Van Vleck <thvv@multicians.org>.
-
-2006-11-16 Werner LEMBERG <wl@gnu.org>
-
- * tmac/62bit.tmac: New macro package.
- * tmac/Makefile.sub (NORMALFILES): Add it.
- * NEWS: Document it.
-
- * tmac/trace.tmac: Protect against being loaded again.
- (nr): Always show result.
-
- * doc/groff.texinfo (Input Encodings): Document latin-5.
-
- * man/grof_tmac.man: Document sv, latinX, cp1047, 60bit, ec.
-
-2006-11-13 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo (Page Location Traps) [.wh]: Give more details
- on negative trap positions.
-
-2006-11-10 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.comm (.man.n): Handle @DATASUBDIR@.
-
-2006-11-09 Werner LEMBERG <wl@gnu.org>
-
- * INSTALL: Move information about external installation from
- INSTALL.gen into this file.
- Updated.
-
- * INSTALL.gen: Update to new version (from texinfo CVS).
-
-2006-11-09 Bernd Warken
-
- * INSTALL.gen: Extend the file by information on `external
- installation'. Reorder the installation instruction as `normal
- installation'.
-
-2006-11-08 Werner LEMBERG <wl@gnu.org>
-
- * doc/Makefile.sub (install_data): Take care of proper paths while
- installing info files. Bug reported by Bernd Warken.
-
-2006-11-06 Bernd Warken
-
- * src/roff/grog/grog.pl: Rewrite.
- - Call by `#! /usr/bin/env perl'. That isn't replaced.
- - Rename usage() to version().
- - Use warnings.
- - For `use strict', start all global variables with an upper case
- character. Use `my' for all variables. Use several new variables.
- - Add option `-h'.
- - Add copyright to GPL and Emacs comment.
- - Handle several `-m*' options.
- - Fix handling of `-ms' and `-mm'. Add .TL and .NH.
- - Allow options after file names.
- - Allow only one `-' parameter (standard input).
- - Add option abbreviations.
- - Expand the usage information.
- - Add `chem'.
- - Add single quote "'" as additional first character and allow
- arbitrary space after the first character.
-
- * src/roff/grog/grog.sh: Rewrite.
- - Remove option `-e' of `sed'.
- - Allow file names with space characters.
- - Add option `-h'.
- - Add copyright to GPL.
- - Handle several `-m*' options.
- - Fix handling of `-ms' and `-mm'. Add .TL and .NH.
- - Allow options after file names.
- - Allow only one `-' parameter (standard input).
- - Add option abbreviations.
- - Expand the usage information.
- - Add `chem'.
- - Add single quote "'" as additional first character and allow
- arbitrary space after the first character.
-
- * src/roff/grog/Makefile.sub:
- - Add copyright to GPL.
- - Remove `grog:'. Move `grog.old:' to `grog:' in order to have a
- fair chance to choose between the shell version and the Perl
- version of `grog'. This is now again comparable to grog in groff
- version 1.10.
-
- * src/roff/grog/grog.man: Rewrite.
- - Move the license to GPL.
- - New sections: OPTIONS, DETAILS, EXAMPLES, COPYING.
- - Take over some setup and macros from `groffer'.
- - Add information on options.
-
-2006-10-28 Werner LEMBERG <wl@gnu.org>
-
- * tmac/trace.tmac: Improve tracing of `.nr'.
- Trace `.substring' also.
-
- * NEWS: Updated.
-
-2006-10-28 Bernd Warken
-
- * man/roff.man, src/roff/groff/groff.man: Add `chem', fix position
- of groff development site, fix fonts.
-
- * News: Add information on `chem' and `groffer'.
-
-2006-10-26 Bernd Warken
-
- * Makefile.in (OTHERDIRS, NOMAKEDIRS): Add `chem' bundle.
-
-2006-10-26 Werner LEMBERG <wl@gnu.org>
-
- Add `\$^' escape to handle the parameters to a macro as a string
- argument.
-
- * src/roff/troff/input.h (DOUBLE_QUOTE): New special character.
-
- * src/roff/troff/input.cpp (input_iterator, input_stack,
- macro_iterator): Add `space_follows_arg' member function.
- (macro_iterator::add_arg): Add parameter to set the `space_follows'
- flag.
- (arg_list): Add member `space_follows'.
- Update constructor and all callers.
- (decode_args): Store discarded double quotes.
- (interpolate_args): Handle DOUBLE_QUOTE.
- Add `\$^' escape.
- (get_copy, token::next, composite_glyph_name): Handle DOUBLE_QUOTE.
-
- * tmac/trace.tmac: Trace .nr, .ds, .ds1, .as, .as1.
-
- * docs/groff.texinfo (Parameters), man/groff.man,
- man/groff_diff.man, NEWS: Document it.
-
-2006-10-24 Bernd Warken
-
- * Makefile.in (NOMAKEDIRS): Add groffer subdirectories.
-
-2006-10-24 Werner LEMBERG <wl@gnu.org>
-
- * tmac/groff_trace.man: Mention problem with `\\\\'.
-
-2006-10-23 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo (Expressions): Improve documentation of `!'.
-
- * tmac/trace.tmac (return): Don't call `substring'.
-
-2006-09-10 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cpp (read_size): Revert previous change
- w.r.t. `\s-[-...]'.
-
- * doc/groff.texinfo (Fractional Size Types): Clarify syntax of \s.
-
-2006-09-09 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cpp (read_size): Fix `\s[-\n[.s]]' so that it
- behave the same as `\s-[\n[.s]]' (this is, emit a warning and set
- point size to 1). Reported by Gunnar Ritter.
- Also catch `\s-[-...]' and friends (causing an error).
-
-2006-09-06 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/env.cpp (environment::do_break): Insert zero-width
- space only if there is no previous space. This fixes a bug which
- caused unwanted filling of the last line in a paragraph. Thanks to
- Gunnar Ritter for an analysis.
-
-2006-09-03 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/groff/groff.cpp (main): Pass -U flag to pic also.
- Reported by Jennifer Sayers <jenjen@isu.usyd.edu.au>.
-
-2006-09-01 Nick Stoughton <nick@msbit.com>
- Werner LEMBERG <wl@gnu.org>
-
- Add a request `pev' to print environment information (similar to
- `pnr' and `ptr' to print number registers and traps).
-
- * src/roff/troff/env.h (environment): Add member function print_env.
-
- * src/roff/troff/env.cpp: (environment::print_env): New function to
- print a given environment state.
- (print_env): New global function to iterate through the
- environments, printing each one.
- (init_env_requests): Register `pev'.
-
- * doc/groff.texinfo (Debugging), man/groff.man, man/groff_diff.man,
- NEWS: Document `pev' request.
-
-2006-09-01 Bernd Warken
-
- * src/preproc/soelim/soelim.cpp (usage): Fix option argument of
- `-I' to `dir'.
-
-2006-09-01 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/pic/main.cpp (usage): Add missing options.
-
-2006-08-25 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/soelim/soelim.man: Document how to insert `\' and ` '
- in file names.
-
-2006-08-19 Werner LEMBERG <wl@gnu.org>
-
- * configure: Regenerated.
-
-2006-08-18 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * m4/groff.m4 (GROFF_MAKEINFO): Correct `makeinfo version testing
- logic; it previously caused an `expr' syntax error, if no version of
- `makinfo' was present. Also, remove dependency on `makeinfo' in VPATH
- builds, if an up to date `groff.info' is present in either `builddir'
- or in `srcdir'.
-
-2006-08-12 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
-
- * font/devps/prologue.ps: Add BPhook.
-
- * src/devices/grops/grops.man: Document BPHook.
- Reorder some sections for better readability.
-
-2006-08-12 Werner LEMBERG <wl@gnu.org>
-
- * src/include/lib.h (getlocale): New macro.
- (setlocale, LC_ALL, LC_CTYPE) [!HAVE_SETLOCALE]: Define, as
- suggested by Bruno.
-
- * src/preproc/preconv/preconv.cpp (main): Use getlocale.
-
-2006-08-11 Werner LEMBERG <wl@gnu.org>
-
- Add new flag to .cflags to enable hyphenation without looking at
- hcode values.
-
- * src/roff/troff/charinfo.h (charinfo): New enumeration value
- `IGNORE_HCODES'.
- New member function `ignore_hcodes'.
-
- * src/roff/troff/node.cpp (break_char_node::add_self,
- node::add_char): Updated.
-
- * doc/groff.texinfo, man/groff_diff.man, NEWS: Document it.
-
-2006-08-09 Werner LEMBERG <wl@gnu.org>
-
- Support composite Unicode characters again. Reported by Colin.
-
- * font/devhtml/R.proto: Renamed to...
- * font/devhtml/R.in: This.
-
- * font/devutf8/R.proto: Renamed to...
- * font/devutf8/R.in: This.
- Add `charset' line.
-
- * font/make-Rproto: New script.
- * font/devhtml/R.proto, font/devutf8/R.proto: Generated.
-
-2006-07-26 Werner LEMBERG <wl@gnu.org>
-
- * README: Fix description of CVS access. Reported by Joachim.
-
-2006-07-11 Werner LEMBERG <wl@gnu.org>
-
- Add a request `.fzoom' and a number register `.zoom' to magnify
- fonts.
-
- * src/include/font.h (font): Add member variable `zoom'.
- Add member functions `set_zoom' and `get_zoom'.
- Remove `static' attribute from `scale' member function.
-
- * src/libs/libgroff/font.cpp (font::font): Updated.
- (scale_round): New version with three parameters to handle zoom
- factor.
- (font::scale, font::get_width): Handle zoom factor.
- (font::set_zoom, font::get_zoom): New functions.
- (font::load): Handle `zoom' while computing `space_width'.
-
- * src/roff/troff/env.h: Declare `env_get_zoom'.
- (environment): Add member function `get_zoom'.
-
- * src/roff/troff/env.cpp (environment::get_zoom): New function.
- (init_env_requests): Initialize `.zoom' register.
-
- * src/roff/troff/node.cpp (font_info): New member functions
- `set_zoom' and `get_zoom'.
- (tfont): New member function `get_zoom'.
- (env_get_zoom): New function.
- (troff_output_file::set_font): Handle zoom factor.
- (font_zoom_request): New function.
- (init_node_requests): Initialize `fzoom' request.
-
- * docs/groff.texinfo (Changing Fonts), man/groff.man,
- man/groff_diff.man, NEWS: Document `fzoom' request and `.zoom'
- register.
-
- * src/roff/troff/TODO: Updated.
-
-2006-07-10 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo (Drawing Requests): Improve documentation of
- \D'P ...'.
-
-2006-07-02 Werner LEMBERG <wl@gnu.org>
-
- * man/groff_tmac.man: Document usage of .PSPIC within diversions.
-
-2006-07-01 Werner LEMBERG <wl@gnu.org>
-
- * tmac/pspic.tmac: Make .PSPIC work for all devices.
- Print image file name for devices which don't support PS image
- inclusion.
- Handle multiple inclusions.
- Add lots of comments.
-
- * tmac/dvi.tmac, tmac/html.tmac, tmac/ps.tmac: Don't load
- pspic.tmac.
-
- * tmac/troffrc: Load pspic.tmac.
-
- * man/groff_tmac.man: Update .PSPIC documentation.
-
- * NEWS: Updated.
-
-2006-06-29 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cpp (interpolate_macro):
- s/probably/possibly/, as suggested by Keith.
-
-2006-06-28 Werner LEMBERG <wl@gnu.org>
-
- Add support for \D'p...' to grotty.
-
- * src/devices/grotty/grotty.cpp (tty_printer::draw): Move most of
- its code to...
- (tty_printer::line): This function.
- (tty_printer::draw): Rewritten; just call either draw_line or
- draw_polygon.
- (tty_printer::draw_line, tty_printer::draw_polygon): New functions.
-
- * src/devices/grotty/grotty.man, NEWS: Document it.
-
-2006-06-27 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/refer/command.h (have_bibliography): New variable
- declaration.
-
- * src/preproc/refer/command.cpp (bibliography_command): Set
- `have_bibliography'.
-
- * src/preproc/refer/refer.cpp: Initialize `have_bibliography'.
- (output_references): Emit warning only if `have_bibliography' is
- set.
-
-2006-06-15 Michail Vidiassov <master@iaas.msu.ru>
-
- * font/devps/Makefile.sub (DISTFILES): Add freeeuro.afm.
- * font/devps/generate/Makefile (clean): Don't remove symbolsl.afm
- and zapfdr.afm.
-
-2006-06-15 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/tbl.man: Document limitations of .TS/.TE within a
- macro (as suggested by Tadziu Hoffmann).
-
-2006-06-12 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/tbl.man: Add example for use of .TS/.TE within a
- macro (as suggested by Tadziu Hoffmann).
-
-2006-06-05 Werner LEMBERG <wl@gnu.org>
-
- * tmac/strip.sed: Strip `\#' also.
-
- * doc/groff.texinfo (Operators in Conditionals): Document usage of
- \? for string comparison.
-
-2006-06-04 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo: Add more index entries for copy-in mode.
- (Changing Fonts) <.ft>: Document that a font definition file must
- not be called `DESC'.
-
-2006-05-31 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cpp (token::next) <\N>: Catch negative values
- here.
-
- * doc/Makefile.sub (EXAMPLEFILES): Move gnu.eps to...
- (PROCESSEDEXAMPLEFILES): Here.
-
-2006-05-30 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/font.cpp (font::load): Reject fonts called
- `DESC'.
- Reduce number of false positives for `.if F ...' conditionals.
- Improve warning messages.
-
-2006-05-29 Werner LEMBERG <wl@gnu.org>
-
- * tmac/Makefile.sub: Add copyright notice.
- (NORMALFILES): Add man.tmac and ms.tmac.
- (SPECIALFILES): Remove man.tmac and ms.tmac.
- (CLEANADD): Remove man.tmac-sed and ms.tmac-sed.
- (install_data, uninstall_sub): Don't handle man.tmac and ms.tmac
- specially.
- (stamp-sed): Don't handle man.tmac and ms.tmac.
- Remove obsolete components in sed's regexp.
-
- * doc/Makefile.sub (EXAMPLEFILES): Add gnu.eps.
-
- * Makefile.in (OTHERDIRS, NOMAKEDIRS): Add hdtbl.
-
-2006-05-28 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo (History): Correct death circumstances of Joe
- Ossanna.
-
-2006-05-27 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-old.tmac (an-do-tag): Simplify.
-
-2006-05-26 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-old.tmac (an-do-tag): Make margin characters work.
- (an-header, an-p-footer): Use named environment.
-
- * src/roff/troff/env.cpp (environment::copy): Copy margin character
- node.
-
-2006-05-21 Werner LEMBERG <wl@gnu.org>
-
- * tmac/trace.tmac (de1): Fix serious typo (.di -> .do) and minor
- omissions.
-
-2006-05-11 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * src/roff/groff/groff.man: Remove superfluous word `intermediate'.
-
-2006-05-10 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * src/roff/groff/groff.man: Update copyright notice.
- Improved wording to describe effect of `-Z' option.
-
-2006-05-06 Werner LEMBERG <wl@gnu.org>
-
- * tmac/www.tmac: Decorate `.ds' with trailing `\"' where missing.
- Normalize handling of `"' in arguments.
- (PIMG): Remove debug message.
- Simplify code.
-
-2006-05-05 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grohtml/post-html.cpp (page::add_and_encode): Don't
- swallow character immediately after `\[...]'.
- Simplify code.
-
-2006-05-02 Gaius Mulley <gaius@glam.ac.uk>
-
- * tmac/www.tmac (PIMG): Fix the HTML device specific components.
-
-2006-05-02 Larry Kollar <kollar@alltel.net>
-
- * tmac/www.tmac (PIMG): Really default to `-C' if the alignment
- option is missing.
-
-2006-04-30 Michail Vidiassov <master@iaas.msu.ru>
-
- * src/utils/afmtodit/afmtodit.pl: New option `-c' to add font
- information as a comment in output.
- * src/utils/afmtodit/afmtodit.man, NEWS: Document it.
-
-2006-04-26 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grohtml/post-html.cpp (html_printer::~html_printer):
- Handle current_paragraph only if it is non-NULL.
-
- * src/libs/libdriver/input.cpp (parse_x_command <'F'>, do_file
- <'F'>): Use `get_extended_arg' to behave as documented. Reported by
- Bill Ward <william.a.ward.jr@erdc.usace.army.mil>.
-
-
- Surround the (pseudo) file name for the .pso request with `<' and
- `>'.
-
- * src/roff/troff/node.cpp (real_output_file, troff_output_file): Add
- second parameter to `really_put_filename' and `put_filename'.
- (troff_output_file::really_put_filename): Emit `<' and `>' around
- filename if second argument is set.
- * src/roff/troff/node.h: Updated.
-
- * src/roff/troff/input.cpp (file_iterator::file_iterator,
- file_iterator::set_location): Update to changes in node.cpp.
-
-2006-04-25 Tetsurou Okazaki <okazaki@FreeBSD.org>
-
- * src/preproc/preconv/preconv.cpp (do_file): Fix conditional
- preprocessor expression (I18N -> HAVE_ICONV).
- (main): Fix handling of option `-h'.
- Fix conditional preprocessor expression.
-
-2006-04-04 Werner LEMBERG <wl@gnu.org>
-
- Implement new number register `.br' which is set to 1 if a macro has
- been called as .foo and to 0 if called as 'bar. This is useful for
- -mtrace so that requests can be reliably traced too.
-
- * src/roff/troff/input.cpp (input_iterator): Add virtual function
- `get_break_flag'.
- (macro_iterator): Add `with_break' member and `get_break_flag'
- function.
- Update constructors.
- (input_stack): Add function `get_break_flag'.
- (break_flag_reg): New number register class.
- (input_init_requests): Register `.br'.
-
- * src/roff/troff/TODO: Updated.
-
- * tmac/trace.tmac: s/!!sp/!!!sp/.
- Modify definitions of `de', `de1', `am', and `am1' to use \n[.br].
-
- * docs/groff.texinfo (Requests), man/groff.man, man/groff_diff.man,
- NEWS: Document it.
-
-2006-03-29 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grops/ps.cpp: s/must not/should not/ in warning
- messages where appropriate.
-
-2006-03-28 Werner LEMBERG <wl@gnu.org>
-
- * configure.ac: Call AC_PROG_EGREP.
- * configure: Regenerated.
-
- * Makefile.in (EGREP): New variable.
- (MDEFINES): Add $(EGREP).
-
- * src/roff/grog/grog.sh: Treat .TH between .TS and .TE properly
- (bug reported by Robert Goulding <Goulding.2@nd.edu>).
- Use @EGREP@.
-
- * src/roff/grog/Makefile.sub (grog, grog.old): Use $(EGREP).
-
-2006-03-27 Werner LEMBERG <wl@gnu.org>
-
- Add two requests `.device' and `.devicem' which are equivalent to
- `\X' and `\Y', respectively.
-
- * src/roff/troff/input.cpp (device_request, device_macro_request):
- New functions.
- (init_input_requests): Register them.
-
- * doc/groff.texinfo (Postprocessor Access), man/groff_diff.man,
- man/groff.man, NEWS: Document them.
-
-2006-03-27 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/roff/troff/input.cpp (encode_char): Emit special characters
- for -Thtml as `\[...]'.
- * src/devices/grohtml/post-html.cpp (page::add_and_encode): Updated.
-
- * doc/groff.texinfo (Postprocessor Access) <\X>: Updated.
-
-2006-03-27 Werner LEMBERG <wl@gnu.org>
-
- * tmac/Makefile.sub (NORMALFILES, SPECIALFILES): Add various missing
- files.
-
-2006-03-26 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo (Writing Macros): More documentation on
- end-of-macro symbol of `.de'.
- (Diversions): Minor addition to `.di' description.
-
- * src/devices/grops/grops.man: Some clarifications regarding
- insertion of PostScript snippets.
-
-2006-03-25 Michail Vidiassov <master@iaas.msu.ru>
-
- Add rules to generate `symbolsl.afm'.
-
- * font/devps/generate/zapfdr.sed,
- font/devps/generate/symbolsl.awk: New files.
-
- * font/devps/generate/Makefile (symbolfont, PRINTAFM): New
- variables.
- (SS, clean): Updated.
- (freeeuro.afm): Use $(srcdir).
- (symbolsl.afm): New rule.
- (zapfdr.afm): Use zapfdr.sed.
-
-2006-03-22 Dwight Aplevich <aplevich@uwaterloo.ca>
-
- * src/preproc/pic/pic.y (expr <INT>): Fix code.
-
-2006-03-22 Jrgen Grahn <jgrahn@algonet.se>
-
- * tmac/sv.tmac: Add missing translations and activate support for
- other macro packages.
-
-2006-03-21 Francis GUDIN <fgudin@nerim.net>
-
- * tmac/doc-syms (Dx): New macro to identify DragonFly.
- (doc-str-St--ieee1275-94, doc-str-St--isoC-amd1,
- doc-str-St--isoC-tcor1, doc-str-St--isoC-tcor2): New standard
- strings.
- (doc-operating-system-FreeBSD-5.5, doc-operating-system-FreeBSD-7.0,
- doc-operating-system-NetBSD-1.6.3, doc-operating-system-NetBSD-4.0
- doc-operating-system-DragonFly-*): New operating system strings.
-
- * tmac/groff_mdoc.man, NEWS: Document `Dx'.
-
-2006-03-21 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/pic/pic.y (object_spec THEN): For compatibility with
- both DWB pic and dpic, make
-
- right;
- line then down;
-
- equal to
-
- right;
- line right then down;
-
- instead of
-
- right;
- line 0 then down;
-
- * doc/pic.ms: Document this.
-
-2006-03-20 Werner LEMBERG <wl@gnu.org>
-
- * doc/pic.ms: With permission of Eric Raymond, put it under the
- GPL.
-
- * NEWS: Updated.
-
-2006-03-19 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/pic/pic.y (expr <INT>): Really return integer part.
-
- * src/preproc/pic/objects.cpp (object_spec::make_line): Handle `at'
- attribute in combination with `with'. Bug reported by Jennifer
- Sayers <jenjen@mail.usyd.edu.au>.
-
-2006-03-19 Miklos Somogyi <msom@netspace.net.au>
-
- * doc/groff.texinfo (Manipulating Spacing): Improve documentation of
- `.sp'.
-
-2006-03-18 Werner LEMBERG <wl@gnu.org>
-
- * LICENSE: Renamed to...
- * LICENSES: This. Collect all licensing information in this file.
- * tmac/README, src/libs/snprintf/README: Removed.
-
- * src/devices/grops/grops.man: Add section how to install fonts.
-
- * src/utils/xtotroff/xtotroff.c: Add GPL.
-
-2006-03-17 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.comm (.y.cpp): Fix #line arguments in output.
-
-2006-03-13 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/tbl.man: Mention default length of text blocks.
-
- * tmac/doc-common (Os): Add more Darwin versions.
- * tmac/groff_mdoc.man: Document them.
-
- * doc/groff.texinfo (Operators in Conditionals): Mention that `c'
- works with \N'...' also.
- * man/groff_diff.man: Ditto. Remove use of future tense where
- possible.
-
-2006-03-12 Michail Vidiassov <master@iaas.msu.ru>
-
- * font/devps/generate/make-zapfdr, font/devps/symbolsl.ps,
- font/devps/zapfdr.ps: Add `%%EndComments' line.
-
-2006-03-10 Larry Kollar <kollar@alltel.net>
-
- * doc/groff.texinfo (Headers and footers): Document PT, HD, and BT.
-
-2006-03-10 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grops/ps.cpp (ps_printer::do_exec, ps_printer::do_def,
- ps_printer::do_mdef): Overlong lines now cause a warning message,
- not an error.
-
-2006-03-09 Werner LEMBERG <wl@gnu.org>
-
- * font/devps/generate/make-zapfdr: New script for generating
- `zapfdr.ps'.
-
-2006-03-08 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.css (pre): Fix `background-color' value.
-
-2006-03-04 Larry Kollar <kollar@alltel.net>
-
- * tmac/groff_ms.man: Document PT, HD, and BT.
-
-2006-03-04 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/node.cpp (make_glyph_node): Improve warning message
- for single-letter glyph names.
-
-2006-03-02 Werner LEMBERG <wl@gnu.org>
-
- * tmac/sv.tmac: New file; currently holding only the Swedish strings
- for -mm.
- * tmac/hyphen.sv: New hyphenation pattern file for Swedish, taken
- from CTAN.
- * tmac/README: Updated.
-
-2006-02-27 Werner LEMBERG <wl@gnu.org>
-
- * tmac/trans.tmac (Liec, Letdate, Letns!14): Add it (for -mm).
- * tmac/fr.tmac: Add French translations.
-
- * tmac/composite.tmac: Add entry for `:'.
-
-2006-02-26 Werner LEMBERG <wl@gnu.org>
-
- * doc/Makefile.sub (HTMLEXAMPLEFILESALL): New variable.
- (CLEANADD): Use it.
- (install_html, uninstall_sub): Updated.
-
-2006-02-26 Bruno Haible <bruno@clisp.org>
-
- Introduce Unicode fonts.
-
- * font/devhtml/DESC.proto: Mark as unicode.
- * font/devhtml/R.proto: Remove all charset entries that are already
- in glyphuni.cpp.
- * font/devutf8/DESC.proto: Mark as unicode.
- * font/devutf8/R.proto: Remove all charset entries.
- * src/include/font.h (font): New static field `is_unicode'.
- Change order of fields.
- * src/libs/libgroff/font.cpp: Include unicode.h.
- (font::font): Update for changed order of fields.
- (font::contains, font::get_width, font::get_height, font::get_depth,
- font::get_italic_correction, font::get_left_italic_correction,
- font::get_subscript_correction, font::get_character_type,
- font::get_code, font::get_special_device_encoding): Handle both the
- explicitly enumerated glyphs and use general code for Unicode fonts.
- (font::load): Make the charset section optional when the font is
- declared unicode.
- (font::load_desc): Recognize the `unicode' attribute.
- * src/libs/libgroff/fontfile.cpp (font::is_unicode): New variable.
-
-2006-02-26 Claudio Fontana <claudio@gnu.org>
-
- * Makefile.in: Add comment about DESTDIR.
-
- * Makefile.sub: Add DESTDIR to install and uninstall targets
- to support staged installations.
- * Makefile.comm: Likewise.
- * doc/Makefile.sub: Likewise.
- * contrib/eqn2graph/Makefile.sub: Likewise.
- * contrib/grap2graph/Makefile.sub: Likewise.
- * contrib/pic2graph/Makefile.sub: Likewise.
- * src/devices/xditview/Makefile.sub: Likewise.
- * src/preproc/eqn/Makefile.sub: Likewise.
- * src/roff/grog/Makefile.sub: Likewise.
- * src/roff/nroff/Makefile.sub: Likewise.
- * src/utils/afmtodit/Makefile.sub: Likewise.
- * src/utils/indxbib/Makefile.sub: Likewise.
- * tmac/Makefile.sub: Likewise.
-
-2006-02-24 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list): Use entry
- for \-.
- Remove commented out entries for \' and \` (there are no such glyph
- names).
-
- * src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list): Remove
- commented out entries for \' and \`.
-
-
- * */*: s/legal/valid/ where appropriate.
-
-2006-06-23 Werner LEMBERG <wl@gnu.org>
-
- * font/devhtml/R.proto, font/devutf8/R.proto: Remove incorrect \'
- and \` entries.
-
-2006-02-22 Werner LEMBERG <wl@gnu.org>
-
- Remove all remaining traces from the `shc' glyph.
-
- * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list),
- src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list): Remove
- entry for `shc'.
-
- * font/devlatin1/R.proto, font/devcp1046/R.proto: Replace `shc'
- entry with unnamed glyph.
-
- * tmac/html/tmac: Remove `shc' entry from call to `.cflags'.
-
- * src/preproc/preconv/preconv.cpp (unicode_entity): Handle U+00AD
- specially.
-
-2006-02-22 Bruno Haible <bruno@clisp.org>
-
- Concretize the `glyph' datatype.
-
- * src/include/font.h (glyph): Remove class.
- (glyph): Renamed from struct `glyphinfo'.
- (glyph_to_index): New inline function.
- (glyph_to_name): Make extern, not inline.
- (glyph_to_number): Update.
- (font): Use `glyph *' instead of `glyph'.
-
- * src/libs/libgroff/nametoindex.cpp (charinfo): Inherit from class
- `glyph'. Make `name' field public.
- (character_indexer, number_to_glyph, name_to_glyph): Use `glyph *'
- instead of `glyph'.
- (glyph_to_name): Renamed from `glyph::glyph_name'.
-
- * src/roff/troff/charinfo.h (charinfo): Inherit from class `glyph'.
- Use `glyph *' instead of `glyph'.
-
- * src/roff/troff/input.cpp (name_to_glyph, number_to_glyph): Use
- `glyph *' instead of `glyph'.
- (glyph_to_name): Renamed from `glyph::glyph_name'.
-
- * src/libs/libgroff/font.cpp: Use `glyph *' instead of `glyph',
- and `glyph_to_index' instead of `glyph::glyph_index'.
-
- * src/include/printer.h (printer): Use `glyph *' instead of `glyph'.
- * src/libs/libdriver/printer.cpp: Likewise.
- * src/devices/grodvi/dvi.cpp: Likewise.
- * src/devices/grohtml/post-html.cpp: Likewise.
- * src/devices/grolbp/lbp.cpp: Likewise.
- * src/devices/grolj4/lj4.cpp: Likewise.
- * src/devices/grops/ps.cpp: Likewise.
- * src/devices/grotty/tty.cpp: Likewise.
-
-2006-02-22 Werner LEMBERG <wl@gnu.org>
-
- * font/devdvi/generate/tc.map: Add `sr' glyph.
- * font/devdvi/*TC: Regenerated.
-
- * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list): Use entry
- for `sqrt'.
-
-2006-02-21 Werner LEMBERG <wl@gnu.org>
-
- * man/groff_char.man: Explain `***' marker.
-
-2006-02-17 Bruno Haible <bruno@clisp.org>
-
- * src/libs/libgroff/nametoindex.cpp (character_indexer): Rename
- methods and fields from *_index to *_glyph.
- (character_indexer::named_char_glyph): Test for `charNNN' name
- here...
- (name_to_glyph): ... not here.
-
-2006-02-17 Bruno Haible <bruno@clisp.org>
-
- * src/include/font.h (name_to_glyph): Renamed from
- font::name_to_index.
- (number_to_glyph): Renamed from font::number_to_index.
- (glyph_to_name): Renamed from font::index_to_name.
- (glyph_to_number): Renamed from font::index_to_number.
- * src/libs/libgroff/nametoindex.cpp: Likewise.
- * src/roff/troff/charinfo.h (charinfo::as_glyph): Renamed from
- charinfo::get_index.
-
- * src/roff/troff/input.cpp: All callers changed.
- * src/roff/troff/node.cpp: Likewise.
- * src/libs/libgroff/font.cpp: Likewise.
- * src/devices/grops/ps.cpp: Likewise.
- * src/devices/grohtml/post-html.cpp: Likewise.
- * src/libs/libdriver/printer.cpp: Likewise.
-
-2006-02-17 Werner LEMBERG <wl@gnu.org>
-
- * src/include/ptable.h, src/include/itable.h
- (NEXT_PTABLE_SIZE_DEFINED): Use it to avoid multiple declaration
- of external symbol `next_ptable_size' (used by both header files).
-
-2006-02-15 Bruno Haible <bruno@clisp.org>
-
- * src/include/font.h (glyphinfo): New class.
- (glyph): Change internal representation.
- Change constructor signature.
- New method glyph::glyph_number().
- (glyph::glyph, glyph glyph::undefined_glyph, glyph::glyph_index,
- glyph::operator==, glyph::operator!=): Update.
- (font::index_to_name, font::index_to_number): New functions.
-
- * src/include/itable.h: New file, based on src/include/ptable.h.
-
- * src/libs/libgroff/nametoindex.cpp: Include itable.h.
- (class charinfo): New class.
- (class character_indexer): Change table result type from `int' to
- `class charinfo'.
- Add table with integer key.
- (character_indexer::character_indexer): Update.
- (character_indexer::ascii_char_index): Update.
- (character_indexer::numbered_char_index): Use NULL as name, not a
- string starting with a space.
- (character_indexer::named_char_index): Update.
- (font::number_to_index, font::name_to_index): Remove no-op cast.
- (glyph::glyph_name): New method.
- * src/roff/troff/charinfo.h (class charinfo): Inherit from class
- glyphinfo.
- (NUMBERED): Remove flag bit.
- (charinfo::numbered, charinfo::get_index): Update.
-
- * src/roff/troff/input.cpp (charinfo::charinfo): Update.
- (charinfo::set_number, charinfo::get_number): Update.
- (glyph::glyph_name): New method.
-
-2006-02-15 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list): Fix
- entries for `>>', `<<', `*f', and `+f'. Reported by Bruno.
-
-2006-02-13 Werner LEMBERG <wl@gnu.org>
-
- * font/devps/prologue.ps (RE): Check `UniqueID' also, similar to
- dvips.
-
-2006-02-11 Werner LEMBERG <wl@gnu.org>
-
- * src/include/font.h: s/glyph_t/glyph/.
- Update all callers.
-
- * src/devices/grotty/tty.cpp: s/glyph/tty_glyph/.
- s/output_character_t/output_character/.
-
-2006-02-11 Bruno Haible <bruno@clisp.org>
-
- New accessor method glyph_t::glyph_name().
-
- * src/include/ptable.h (declare_ptable): Add a return value to the
- `define' method, and declare a `lookupassoc' method.
- (implement_ptable): Return the stored key in `define'. Implement
- lookupassoc.
- * src/include/font.h (glyph_t): Add `name' field. Add an argument
- to the constructor.
- (glyph_t::glyph_name): New method.
-
- * src/libs/libgroff/nametoindex.cpp (character_indexer): Change
- return type of methods and field member type to glyph_t.
- (character_indexer::character_indexer): Update.
- (character_indexer::ascii_char_index): Allocate a name for the
- glyph.
- Return a glyph_t with name.
- (character_indexer::numbered_char_index): Return a glyph_t without a
- name.
- (character_indexer::named_char_index): Return a glyph_t with a name.
- (font::number_to_index, font::name_to_index): Update.
-
- * src/roff/troff/input.cpp (charinfo::charinfo): Use the symbol as
- the glyph's name.
-
-2006-02-11 Bruno Haible <bruno@clisp.org>
-
- * src/devices/grotty/tty.cpp (output_character_t): New type.
- (tty_printer::make_bold, tty_printer::add_char,
- tty_printer::put_char): Change argument type to output_character_t.
- (crossings): Change element type to output_character_t.
-
-2006-02-11 Bruno Haible <bruno@clisp.org>
-
- Make the glyph data type abstract.
-
- * src/include/font.h (glyph_t): New class.
- (name_to_index, number_to_index): Change return type to glyph_t.
- (font::contains, font::get_width, font::get_height, font::get_depth,
- font::get_character_type, font::get_kern, font::get_skew,
- font::get_italic_correction, font::get_left_italic_correction,
- font::get_subscript_correction, font::get_code,
- font::get_special_device_encoding, font::add_entry,
- font::copy_entry, font::add_kern, font::hash_kern): Change argument
- type to glyph_t.
-
- * src/libs/libgroff/font.cpp (font_kern_list): Change members
- type and constructor argument types to glyph_t.
- (font::contains, font::get_width, font::get_height, font::get_depth,
- font::get_character_type, font::get_kern, font::get_skew,
- font::get_italic_correction, font::get_left_italic_correction,
- font::get_subscript_correction, font::get_code,
- font::get_special_device_encoding, font::add_entry,
- font::copy_entry, font::add_kern, font::hash_kern): Change argument
- type to glyph_t.
- (font::load): Use glyph_t variables.
-
- * src/libs/libgroff/nametoindex.cpp (name_to_index,
- number_to_index): Change return type to glyph_t.
-
- * src/roff/troff/charinfo.h (charinfo::index): Change type to
- glyph_t.
- (charinfo::get_index): Change return type to glyph_t.
-
- * src/roff/troff/env.cpp: Include font.h.
-
- * src/roff/troff/node.cpp: Include font.h before charinfo.h.
-
- * src/roff/troff/input.cpp: Include font.h before charinfo.h.
- (charinfo::charinfo): Update.
- (name_to_index, number_to_index): Change return type to glyph_t.
-
- * src/include/printer.h (printer::set_char_and_width): Change return
- type to glyph_t.
-
- * src/libs/libdriver/printer.cpp (printer::set_char_and_width):
- Change return type to glyph_t.
-
- * src/devices/grodvi/dvi.cpp (dvi_printer::set_char): Change
- argument type to glyph_t.
-
- * src/devices/grohtml/post-html.cpp (page::add_and_encode): Update.
- (html_printer::space_glyph): Renamed from space_char_index.
- (html_printer::add_to_sbuf, html_printer::sbuf_continuation,
- html_printer::overstrike, html_printer::set_char): Change argument
- type to glyph_t.
- (html_printer::set_char_and_width): Change return type to glyph_t.
-
- * src/devices/grolbp/lbp.cpp (lbp_printer::set_char): Change
- argument type to glyph_t.
-
- * src/devices/grolj4/lj4.cpp (lj4_printer::set_char): Change
- argument type to glyph_t.
-
- * src/devices/grops/ps.cpp (ps_printer::space_glyph): Renamed from
- space_char_index.
- (ps_printer::set_subencoding, ps_printer::set_char): Change argument
- type to glyph_t.
-
- * src/devices/grotty/tty.cpp (tty_printer::set_char): Change
- argument type to glyph_t.
-
-2006-02-11 Bruno Haible <bruno@clisp.org>
-
- * src/roff/troff/input.cpp (font::name_to_index): Never return a
- negative value.
-
- * src/libs/libgroff/font.cpp (font::load): Remove failure tests for
- font::name_to_index.
-
-2006-02-10 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo (Assigning Formats): Number registers are always
- interpolated.
- Apply some rephrasing, contributed by Michael Burt.
-
-2006-02-07 Werner LEMBERG <wl@gnu.org>
-
- * tmac/fr.tmac <ms>: Set `HY' register.
-
-2006-02-07 Werner LEMBERG <wl@gnu.org>
-
- Add framework for simple adaptation of the main macro packages (mm,
- me, ms, mom) to different locales. In particular, add support for
- French. For activation, simply use `-mfr' as the last macro
- package. This feature has been contributed by Fabrice Mnard
- <menard.fabrice@wanadoo.fr>.
-
- * tmac/fr.tmac, tmac/trans.tmac, tmac/hyphen.fr, tmac/LOCALIZATION:
- New files.
- * tmac/README: Mention hyphen.fr.
- * man/groff_tmac.man: Mention fr.tmac.
- * NEWS: Updated.
-
-2006-01-27 Werner LEMBERG <wl@gnu.org>
-
- * man/groff_font.man: Updated documentation of `entity_name' field.
- Avoid future tense.
-
-2006-01-27 Bruno Haible <bruno@clisp.org>
-
- * font/devhtml/R.proto: Remove the entity names from the font's
- special_encoding_encoding column.
- * src/devices/grohtml/post-html.cpp (get_html_entity): New function,
- handling the entity names here.
- (get_html_translation): Use it. Change return type to `const
- char *'.
- (page::add_and_encode): Update, removing a useless cast.
-
-2006-01-26 Werner LEMBERG <wl@gnu.org>
-
- This change is based on a patch by Bruno Haible <bruno@clisp.org>.
-
- * src/include/device.h: Add comments.
- * src/include/font.h: Add comments.
- * src/include/unicode.h: Likewise.
- * src/include/ptable.h, src/libs/libgroff/ptable.cpp: Likewise.
-
-2006-01-26 Keith Marshall <keith.d.marshall@ntlworld.com>
+ * doc/texinfo.tex: Updated from `texinfo' repository.
- Suppress `.st' request emission by `grn'.
+ * src/roff/groff/groff.cpp (main) <'v'>: Update copyright year.
- * src/preproc/grn/main.cpp (USE_ST_REQUEST): New macro.
- (conv): Use it.
+2013-02-07 Werner LEMBERG <wl@gnu.org>
-2006-01-22 Werner LEMBERG <wl@gnu.org>
+ * src/libs/gnulib/*: Update `gnulib' files.
- * install-sh: New version; taken from texinfo CVS.
+2013-02-02 Gilles Espinasse <g.esp@free.fr>
-2006-01-21 Werner LEMBERG <wl@gnu.org>
+ [grohtml] Don't ignore return value of `dup'.
- * src/preproc/preconv/preconv.cpp (main): Set program_name. Bug
- reported by Alexander E. Patrakov <patrakov@ums.usu.ru>.
+ * src/preproc/html/pushback.cpp (pushBackBuffer::pushBackBuffer,
+ pushBackBuffer::~pushBackBuffer): Abort if `dup' fails.
-2006-01-19 Bruno Haible <bruno@clisp.org>
+2013-01-30 Bernd Warken <groff-bernd.warken-72@web.de>
- Let `make -k install' install more files.
+ * tmac/groff_man.man: Fix wrong connection for tbl(1).
- * Makefile.in (MAKE_K_FLAG): New variable. Use it everywhere where
- $(MAKE) and $(MDEFINES) are used.
- (CPROGDIRS): Remove $(XPROGDIRS). Treat $(XPROGDIRS) like
- $(CPROGDIRS) everywhere.
- ($(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) $(TTYDEVDIRS)): Don't depend
- on $(XPROGDIRS).
- ($(OTHERDIRS)): Likewise.
+2013-01-29 Werner LEMBERG <wl@gnu.org>
+ * doc/groff.texinfo: Fix documentation of .LP macro in ms.
+ Problem reported by Omari Norman <omari@smileystation.com>.
- * src/devices/grohtml/post-html.cpp (get_html_translation): Remove
- failure test for font::name_to_index -- it can never fail.
+2013-01-29 Werner LEMBERG <wl@gnu.org>
-2006-01-19 Werner LEMBERG <wl@gnu.org>
+ * doc/Makefile.sub (uninstall_sub): Handle `gnu.eps'.
- * src/devices/grops/grops.man: Fix section on creating EPS files.
- Don't use future time in manual.
- Other minor fixes.
+2013-01-29 Werner LEMBERG <wl@gnu.org>
-2006-01-15 Gaius Mulley <gaius@glam.ac.uk>
+ Building clean-ups.
- * tmac/www.tmac: New macro LINKSTYLE which allows users to set
- various typographical URL attributes for non-HTML devices.
+ * Makefile.in: Use $(top_srcdir) where appropriate.
+ * Makefile.sub (M4MACROS): Add `fcntl-o.m4' and `localcharset.m4'.
- * tmac/groff_www.man: Document LINKSTYLE.
+ * font/devpdf/Makefile.sub (UTILFILES): Removed, unused.
+ (MOSTLYCLEANADD): Add `BuildFoundries'.
+ * src/devices/gropdf/Makefile.sub (MOSTLYCLEANADD): Add `pdfmom'.
-2006-01-11 Werner LEMBERG <wl@gnu.org>
+2013-01-24 Bernd Warken <groff-bernd.warken-72@web.de>
- * configure.ac: Test for getc_unlocked (needed for localcharset).
- * configure, src/include/config.hin: Regenerated.
+ * Add a shell command to 'MANIFEST' that displays all man source
+ files and their section.
- * src/libs/libgroff/Makefile.sub (EXTRA_CFLAGS): Define
- ENABLE_RELOCATABLE.
+2013-01-22 Bernd Warken <groff-bernd.warken-72@web.de>
- * src/libs/libgroff/relocatable.h: New dummy header file for
- localcharset.c.
+ * Add email address in all files having the name.
- * src/libs/libgroff/localcharset.c: Updated to (unchanged) CVS
- gnulib version.
+2013-01-14 Deri James <deri@chuzzlewit.myzen.co.uk>
-2006-01-10 Bruno Haible <bruno@clisp.org>
+ * src/devices/gropdf/gropdf.pl (do_x, do_p, do_s, Set_LWidth): The
+ grops driver defaults to round linecaps and linejoins, gropdf
+ incorrectly used butt caps and miter joins.
- Work around unportability of nl_langinfo(CODESET).
+ (Since the MOM package expects to use butt caps and miter joins
+ (emitting the necessary postscript code to change the caps and
+ joins), gropdf now parses the same postscript commands.)
- * m4/glibc21.m4: New file, from gnulib.
- * Makefile.sub (M4MACROS): Add m4/glibc21.m4.
- * configure.ac: Also test for stddef.h, and invoke jm_GLIBC21.
- * Makefile.in (HOST, GLIBC21): New variables.
- (MDEFINES): Pass them to subdirectories.
- * src/include/relocate.h (relocatep): Define with C linkage.
- * src/include/localcharset.h: New file, from gnulib.
- * src/libs/libgroff/localcharset.c: New file, from gnulib with a
- modification for relocate().
- * src/libs/libgroff/config.charset: New file, from gnulib.
- * src/libs/libgroff/ref-add.sin: New file, from gnulib.
- * src/libs/libgroff/ref-del.sin: New file, from gnulib.
- * src/libs/libgroff/Makefile.sub (EXTRA_CFLAGS): Also define LIBDIR.
- (OBJS): Add localcharset.o.
- (CSRCS): Add localcharset.c.
- (all): Add dependencies to charset.alias, ref-add.sed, ref-del.sed.
- (charset.alias): New rule.
- (PACKAGE): New variable.
- (ref-add.sed, ref-del.sed): New rules.
- (MKINSTALLDIRS): New variable.
- (install_data): Depend on install_charset_data.
- (install_charset_data): New rule for creating or updating
- charset.alias.
- (uninstall_sub): Depend on uninstall_charset_data.
- (uninstall_charset_data): New rule for uninstalling or updating
- charset.alias.
- * src/preproc/preconv/preconv.cpp: Include localcharset.h instead
- of <langinfo.h>.
- (main): Initialize default_encoding from locale_charset() instead of
- nl_langinfo(CODESET).
+ * src/devices/gropdf/gropdf.man: Document the handling of linecaps
+ and linejoins.
+
+ * tmac/pdf.tmac (pdfbookmark): Fix bug where the current
+ PDFOUTLINE.FOLDLEVEL may not be honoured if warnings of the type
- * aclocal.m4, configure, src/include/config.hin: Regenerated.
-
-2006-01-10 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/preconv/preconv.cpp (conversion_iconv): Use
- ICONV_CONST in call to iconv. Reported by Robert Goulding.
-
-2006-01-07 Werner LEMBERG <wl@gnu.org>
-
- * font/devps/generate/freeeuro.sfd: Run auto-hinter with recent
- fontforge version.
- Bump font version to 001.001.
-
- * font/devps/generate/Makefile (freeeuro.afm, freeeuro.pfa):
- Call fontforge, not pfaedit.
-
- * font/devps/freeeuro.afm, font/devps/freeeuro.pfa: Regenerated.
-
-2006-01-05 Ruslan Ermilov <ru@FreeBSD.org>
-
- * tmac/doc-common: Add new FreeBSD and NetBSD versions.
- * tmac/groff_mdoc.man: Updated.
-
-2006-01-05 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/preconv/preconv.cpp: s/debug/debug_flag/.
- (raw_flag): New global variable.
- (do_file): Use .lf to set file name (if `raw_flag' isn't set).
- Don't pass BOM to `conversion_utf8'.
- (usage): Updated.
- (main): Handle `-r' command line switch to set `raw_flag'.
- (get_BOM): Fix encodings in `BOM_table'.
-
- * src/preproc/preconv/preconv.man: New file. Not complete yet.
- * src/preproc/proconv/Makefile.sub (MAN1): New variable.
-
-2006-01-04 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/preconv/preconv.cpp (emacs_to_mime): As suggested by
- Bruno, comment out most encodings to support only a small set of
- coding tags, thus reducing potential problems with legacy encodings
- and character sets in the future.
- Add many XEmacs coding tags (now commented out).
- Add `cp1047'.
- (check_encoding_tag): Renamed to...
- (check_coding_tag): This.
- (get_BOM): Return encoding as specified by BOM.
- Test for UTF32-LE too.
- (do_file): Don't check for coding tag if a BOM has been found.
-
-2006-01-03 Bruno Haible <bruno@clisp.org>
-
- * m4/groff.m4: Renamed from aclocal.m4.
- * m4/codeset.m4: New file, from gnulib.
- * m4/iconv.m4: New file, from gnulib.
- * m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4: New files, from
- gnulib.
- * config.rpath: New file, from gnulib.
- * config.guess, config.sub: New files, from gnulib.
- * Makefile.sub (M4MACROS): New variable.
- (configure): Fix typo.
- (aclocal.m4): New rule.
- (stamp-h.in): Depend on aclocal.m4.
- * configure.ac: Invoke AM_ICONV and AM_LANGINFO_CODESET.
- * Makefile.in (LIBICONV): New variable.
- (MDEFINES): Pass it to recursive makes.
- * src/preproc/preconv/preconv.cpp: Use HAVE_LANGINFO_CODESET and
- HAVE_ICONV instead of I18N macro.
- * src/preproc/preconv/Makefile.sub (EXTRA_LDFLAGS): New variable.
-
- * aclocal.m4, configure, src/include/config.hin: (Re)generated.
-
-2006-01-03 Werner LEMBERG <wl@gnu.org>
-
- * doc/Makefile.in (webpage.html): Simplify.
- * doc/Makefile.sub (webpage.html): Synchronize with doc/Makefile.in.
- * doc/webpage.ms, tmac/groff_www.man, tmac/www.tmac: Minor updates.
-
-2006-01-01 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc-common (Os): Add some Darwin versions.
- * tmac/groff_mdoc.man: Document them.
-
-2006-01-01 Bruno Haible <bruno@clisp.org>
-
- * src/preproc/preconv/preconv.cpp (emacs_to_mime): Various
- corrections:
- . Don't map ascii to latin-1.
- . Don't use IBMxxx encodings but cpxxx for portability.
- . Map cp932, cp936, cp949, cp950 to itself.
- (emacs2mime): Protect calls to strcasecmp.
- (conversion_iconv): Add missing call to iconv_close.
- (do_file): Emit error message in case of unsupported encoding.
-
-2005-12-31 Werner LEMBERG <wl@gnu.org>
-
- Integrate preconv into the groff binary. Changes based on a patch
- from Michail Vidiassov.
-
- * src/roff/groff/pipeline.h (MAX_COMMANDS): Increase by 1.
-
- * src/roff/groff/groff.cpp (PRECONV_INDEX): New macro.
- (SOELIM_INDEX): Updated.
- (help, synopsis): Updated.
- (main): Add command line options `-k' and `-K enc' to select
- encoding.
- Add support for GROFF_ENCODING environment variable.
-
- * src/roff/groff/groff.man: Updated and revised.
-
-
- Start with autoconf support for preconv.
-
- * configure.ac: Call AC_C_BIGENDIAN.
- * configure, src/include/config.hin: Regenerated.
-
-2005-12-30 Werner LEMBERG <wl@gnu.org>
+ macro warning: adjusted level n bookmark; should be <= n
- New preprocessor `preconv' to convert input encodings to something
- groff can understand. Not yet integrated within groff. Proper
- autoconf stuff is missing too.
+ Added copyright and mention debt owed to Keith Marshall for original
+ `pdfmark.tmac', upon which `pdf.tmac' is largely based.
- Tomohiro Kubota has written a first draft of this program, and some
- ideas have been reused (while almost no code has been taken
- actually).
+ * font/devpdf/Foundry.in, font/devpdf/util/BuildFoundries.pl
+ (LocateFile): The font for EURO had the wrong entry in the
+ `download' file (it pointed to The font in the build directory,
+ which is wrong). It has always been permissable to include a path
+ along with the font name in the Foundry file, but until now the font
+ had to exist to be valid. It is now permitted to start the path
+ with an asterisk which tells BuildFoundry to use the path/filename
+ in the download file without checking if the font exists. This
+ allows the font to be found in `../devps' even though it is not
+ there during the build (if source and build are different), but will
+ be there after the install.
- * src/preproc/preconv/preconv.cpp. src/preproc/preconv/Makefile.sub:
- New files.
+2013-01-13 Werner LEMBERG <wl@gnu.org>
- * MANIFEST, Makefile.in (CCPROGDIRS), test-groff.in
- (GROFF_BIN_PATH): Add preconv.
+ [eqn] Fix display of matrices in nroff output.
-2005-12-12 Werner LEMBERG <wl@gnu.org>
+ Problem reported by Andy Spencer <andy753421@gmail.com>.
- * aclocal.m4 (GROFF_MAKEINFO): Fix regexps to be POSIX conformant.
- In particular, don't use `\+' since it is a GNU sed extension.
+ * src/preproc/eqn/pile.cpp (pile_box::compute_metrics,
+ matrix_box::compute_metrics): Fix rounding.
- * configure: Regenerated.
-
-2005-12-09 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/make-uniuni: New script to generate uniuni.cpp.
-
- * src/libs/libgroff/uniuni.cpp: Regenerated, using data from Unicode
- 4.1.0.
-
-
- * src/utils/afmtodit/make-afmtodit-tables: New script to generate
- afmtodit.tables.
-
- * src/utils/afmtodit/afmtodit.tables: New file, representing Unicode
- 4.1.0 data.
-
- * src/utils/afmtodit/afmtodit.pl (%unicode_decomposed,
- %AGL_to_unicode): Removed. Replace it with a tag.
-
- * src/utils/afmtodit/Makefile.sub (afmtodit): Adjust sed expression
- to replace tag with actual file contents.
+2013-01-07 Deri James <deri@chuzzlewit.myzen.co.uk>
-2005-12-08 Werner LEMBERG <wl@gnu.org>
+ * tmac/europs.tmac: Protect against missing fonts.
- The change 2005-06-20 can indeed cause problems, so we follow the
- advice by using marks.
+2013-01-07 Deri James <deri@chuzzlewit.myzen.co.uk>
- * font/devps/prologue.ps (PBEGIN): Use `mark'.
- (PEND): Use `cleartomark'.
+ * font/devpdf/util/BuildFoundries.pl (LoadFoundry): Improve warning.
-2005-12-07 Michail Vidiassov <master@iaas.msu.ru>
+2013-01-07 Werner LEMBERG <wl@gnu.org>
- * src/utils/afmtodit.pl: Fix kerning output to avoid warnings for
- glyphs which have kern values but aren't handled (glyph variants,
- for example).
+ [tbl] Allow characters #, `, and ' as eqn delimiters.
-2005-12-02 Werner LEMBERG <wl@gnu.org>
+ While problems ` and ' have been unintentionally introduced rather
+ recently, the limitation regarding # was there from the beginning.
- * src/devices/grops/ps.cpp (ps_printer::get_subfont): Use correct
- subfont index. Reported by Michail Vidiassov <master@iaas.msu.ru>.
+ At the same time, fix a small bug causing `.lf' requests not
+ starting a line.
-2005-11-28 Gaius Mulley <gaius@glam.ac.uk>
-
- * doc/Makefile.in: Separate rule for webpage.html so that extra
- command line options can be passed to grohtml.
- * doc/groff.css: Change all margins to 0%.
- * doc/webpage.ms: Now use new macros ALN, LNS, and LNE so that left
- navigation is exploited. Also update webpage to contain new
- sections on licenses, mailing lists, cvs/ftp access, groff
- dependencies, and bug reports.
- * tmac/groff_www.man: Document the new macros ALN, LNS, and LNE.
- * tmac/www.tmac: Implement the new macros ALN, LNS, and LNE.
-
-2005-11-25 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/devices/grohtml/post-html.cpp
- (html_printer::do_file_components): Add fputs calls to emit the
- head contents and shut down the head tag whenever a new file
- component is generated.
-
-2005-11-22 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/devices/grohtml/post-html.cpp (html_printer::flush_page): Add
- call to flush_text to flush any outstanding html tags on the
- paragraph stack.
-
-2005-11-18 Werner LEMBERG <wl@gnu.org>
-
- * aclocal.m4 (GROFF_MAKEINFO): Use `groff.info' in tests.
- Announce makeinfo version.
- * configure: Regenerated.
+ * src/preproc/tbl/table.cpp (table::init_output,
+ table::compute_expand_width, table::compute_separation_factor,
+ table::define_bottom_macro, table::do_bottom): Temporarily switch
+ off eqn delimiters, wrapping the code into a `.ig' block. This uses
+ the new functionality just added to eqn.
-2005-11-18 Mike Frysinger <vapier@gentoo.org>
+ * src/preproc/eqn/eqn.man, src/preproc/tbl/tbl.man: Updated.
- * Makefile.in: Declare proper dependencies between make targets.
+2013-01-06 Werner LEMBERG <wl@gnu.org>
- * doc/Makefile.in: Rename groff info page to `groff.info'.
- * doc/Makefile.sub: Likewise.
- * doc/groff.texinfo: Likewise.
+ [eqn] Add `delim on'.
-2005-11-17 Peter O'Gorman <mlists@thewrittenword.com>
-
- * src/utils/pfbtops/pfbtops.c, src/utils/xtotroff/xtotroff.c: Move
- definition of __GETOPT_PREFIX to the beginning of file to ensure
- that it is defined even on platforms where getopt.h is already
- included by other header files.
-
-2005-11-10 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/devices/grohtml/post-html.cpp (html_printer::do_heading):
- Reset font to NULL to ensure that a font block is recreated during
- the next paragraph.
-
-2005-11-04 Werner LEMBERG <wl@gnu.org>
-
- * aclocal.m4 (GROFF_MAKEINFO): Fix sed expression.
- * configure: Regenerated.
-
-2005-10-27 Werner LEMBERG <wl@gnu.org>
-
- * aclocal.m4 (GROFF_MAKEINFO): New function for checking whether
- makeinfo 4.8 or newer is available.
- * configure.ac: Call GROFF_MAKEINFO.
- * configure: Regenerated.
-
- * Makefile.in (MAKEINFO): Use autoconf variable.
- (MDEFINES): Add MAKEINFO.
+ * src/preproc/eqn/lex.cpp (start_delim_saved, end_delim_saved): New
+ global variables.
+ (do_delim): Handle `delim on' to restore previous start and end
+ delimiters.
- * doc/Makefile.in (MAKEINFO): Use autoconf variable.
- * doc/Makefile.sub (MAKEINFO): Remove.
+ * src/preproc/eqn/eqn.man, NEWS: Document it.
-2005-10-26 Werner LEMBERG <wl@gnu.org>
+2013-01-02 Deri James <deri@chuzzlewit.myzen.co.uk>
- * REVISION: Set to 3.
+ [gropdf] Various minor fixes.
-2005-10-17 Werner LEMBERG <wl@gnu.org>
+ * src/devices/gropdf/gropdf (do_x) <'X'> <'pdfpic'>: Using
- Mention $MANPAGER variable used with some `man' systems.
+ \X'pdf: pdfpic'
- * doc/webpage.ms, src/devices/grotty/grotty.man, NEWS: Updated.
+ with a zero width now works correctly.
-2005-09-13 Werner LEMBERG <wl@gnu.org>
+ (LoadPDF): Scale width in proportion to given height.
- * tmac/hyphenex.us: New version (`ushyphex.tex' from ftp.dante.de).
+ (do_s): In some circumstances a font size change is emitted before
+ current font is established. Fix handles this situation.
-2005-09-04 Werner LEMBERG <wl@gnu.org>
+2012-12-30 Werner LEMBERG <wl@gnu.org>
-Version 1.19.2 released
+Version 1.22.1 released
=======================
- * tmac/groff_ms.man, doc/groff.texinfo: Synchronize.
-
- * doc/webpage.ms: Updated.
-
- * install-sh, mkinstalldirs: New versions; taken from texinfo CVS.
-
-2005-09-04 Jrgen Grahn <jgrahn@algonet.se>
-
- * tmac/groff_ms.man: Document `PO' better.
+ Due to CVE-2012-3386, ftp.gnu.org rejected uploading of version 1.22
+ -- in other words, 1.22 has never been released.
-2005-09-03 Werner LEMBERG <wl@gnu.org>
+ * NEWS, REVISION, doc/groff.texinfo, doc/webpage.ms: Updated.
- * NEWS: Document grotty changes.
-
-2005-09-01 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- Backward compatibility support for `man' program.
+ * Makefile.in (NOMAKEDIRS): Updated.
- * tmac/an-old.tmac (LL): Initialize it to respect prior LL register
- assignment, prior `.ll' request and then package defaults, in this
- specified order of decreasing priority.
+2012-12-30 Werner LEMBERG <wl@gnu.org>
- * tmac/groff_man.man, doc/groff.texinfo (Man options): Document
- altered `LL' register initialization priorities.
+ * src/libs/gnulib/*: Update `gnulib' files.
-2005-08-29 Gary W. Swearingen <garys@opusnet.com>
+ Because we currently don't support `gnulib-tool' directly but add
+ everything to the CVS repository, and many internal details of the
+ gnulib setup has changed, it is necessary to do redo the import.
- * tmac/groff_mdoc.man: Go into more details how the `AUTHORS'
- section should look like.
+ . Temporarily rename `src/libs/gnulib' to `src/libs/gnulib.old'.
-2005-08-29 Werner LEMBERG <wl@gnu.org>
+ . Call
- * tmac/groff_mdoc.man: The month's name in a call to .Dd shouldn't
- be abbreviated.
+ gnulib-tool --create-testdir \
+ --dir=src/libs/gnulib \
+ wcwidth
-2005-08-27 Bernd Warken
+ . Manually move directories `src/libs/gnulib/gl{lib,m4}' to
+ `src/libs/gnulib/{lib,m4}', and do `s/gllib/lib/' and `s/glm4/m4/'
+ in all files to `convert' the gnulib testbed to a standard gnulib
+ configuration as maintained by gnulib-tool. Additionally, remove
+ the directory `src/libs/gnulib/gltests' and the references to
+ `gltests' in all files.
- * tmac/groff_man.man: Add man(7) too SEE ALSO and more minor
- fixes.
+ (All of this could be done with a script, but I hope that this is
+ eventually replaced with migrating groff as a whole to gnulib and
+ its setup).
-2005-08-11 Bernd Warken
+ . Call
- * tmac/www.tmac (URL, MTO): Handle empty \\$1 better.
+ gnulib-tool --add-import \
+ --dir=src/libs/gnulib \
+ wcwidth
-2005-08-09 Bernd Warken
+ to update everything.
- * tmac/www.tmac (URL, MTO): Use bold series if color support is
- deactivated.
+ . Merge the changed, new, and deleted files into `gnulib.old',
+ delete `gnulib', rename `gnulib.old' to `gnulib', then commit.
-2005-08-02 Bernd Warken
+2012-12-28 Werner LEMBERG <wl@gnu.org>
- * doc/Makefile.sub (uninstall_sub): Use --remove, not --delete
- as argument to $(INSTALL_INFO). The latter isn't portable.
- Remove $(HTMLEXAMPLEFILES) too.
+ [doc] More documentation generation rules.
- * Makefile.in (uninstall_dirs): Remove $(datadir)/doc/groff and
- $(datadir)/doc too.
- Suppress warning messages and return always true.
+ * doc/Makefile.in (.texinfo.txt): New rule.
+ (.texinfo.html): Use `LANG='.
+ (split-html): New target.
- * tmac/Makefile.sub (uninstall_sub): Remove www.tmac too.
+2012-12-28 Werner LEMBERG <wl@gnu.org>
-2005-07-02 Bernd Warken
+ * doc/fixinfo.sh: Make it work with makinfo 4.13 also.
- * src/devices/xditview/gxditview.man: Change many `.I' to `.B'.
- * man/groff_out.man: More markup and minor improvements.
- * src/roff/groff/groff.man: Minor improvements.
+2012-12-28 Werner LEMBERG <wl@gnu.org>
-2005-06-28 Werner LEMBERG <wl@gnu.org>
+ Split ChangeLog.
* ChangeLog: Split off older entries into...
- * ChangeLog.115 ChangeLog.116, ChangeLog.117, ChangeLog.118: New
- files.
-
-2005-06-26 Bernd Warken
-
- * src/devices/xditview/gxditview.man: More minor fixes.
-
-2005-06-24 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/pic/troff.cpp (troff_output::set_fill,
- troff_output::set_color, troff_output::reset_color): Use .bcolor and
- .fcolor instead of \m and \M, respectively.
-
-2005-06-23 Bernd Warken
-
- * src/devices/xditview/gxditview.man: More minor fixes.
- * README: Formatting issues.
- Mention some problems with Debian.
-
-2005-06-23 Bernd Warken
-
- * src/devices/xditview/gxditview.man: Revised and improved.
-
-2005-06-22 Werner LEMBERG <wl@gnu.org>
-
- Another round in fixing getopt problems. Hopefully the last one!
- This time we use the getopt stuff from gnulib and define a prefix
- unconditionally so that there are no collisions with any other
- getopt implementations. This is a slight waste of space in case
- we already use a GNU getopt implementation, but on
- the other hand it really simplifies life.
-
- * src/include/getopt.h: Use gnulib version.
-
- * src/include/getopt_int.h: Use gnulib version.
-
- * src/include/groff-getopt.h: Removed. Obsolete now.
-
- * src/include/lib.h: Regarding getopt, don't handle any platform
- specially; just include getopt.h.
- (__GETOPT_PREFIX): Define (before getopt.h).
-
- * src/include/Makefile.sub (HDRS): Updated.
-
- * src/libs/libgroff/getopt1.c, src/libs/libgroff/getopt.c: Use
- gnulib version.
-
- * src/libs/libgroff/Makefile.sub (EXTRA_CFLAGS): Set
- __GETOPT_PREFIX.
-
- * src/utils/pfbtops/pfbtops.c, src/utils/xtotroff/xtotroff.c
- (__GETOPT_PREFIX): Define (before getopt.h).
-
-2005-06-21 Werner LEMBERG <wl@gnu.org>
-
- * src/include/lib.h: Provide a fix for Mac OS X to not include
- groff-getopt.h.
-
-2005-06-20 Denis M. Wilson <dmw@oxytropis.plus.com>
-
- * font/devps/prologue.ps (EP): Dont' use `bind'. Reason: Using
- `bind' to define a procedure which contains `showpage' means that an
- invocation of `showpage' may execute wrongly (the exact effect
- depending on the interpreter). Not usually a problem except under
- transformations, such as combining pages.
- (PEND): Don't call `clear'. Reason: Using `clear' in the definition
- of /PEND means that stack underflow will occur if the stack is
- deliberately non-empty before document inclusion. If included
- files are found to be generally badly behaved, we could replace the
- `clear' with `mark' in /PBEGIN and `cleartomark' in /PEND (I've
- never found this necessary).
-
-2005-06-20 Jrgen Grahn <jgrahn@algonet.se>
-
- * src/preproc/soelim/soelim.cpp (do_file): Append trailing zero
- earlier to get correct error message.
-
-2005-06-16 Bernd Warken
- * src/roff/nroff/nroff.sh: Add support for iso-8859-15.
-
-2005-06-15 Werner LEMBERG <wl@gnu.org>
-
- Another try to update getopt files. This time we add a dummy
- gettext.h file to satisfy the dependency.
-
- * src/include/getopt.h, src/libs/libgroff/getopt.c,
- src/libs/libgroff/getopt1.c: Updated from GNU libc CVS.
-
- * src/include/getopt_int.h: New file (from GNU libc CVS).
-
- * src/include/gettext.h: Dummy file which just defines a gettext()
- macro.
-
- * src/include/groff-getopt.h: Updated.
-
- * src/include/Makefile.sub (HDRS): Add getopt_int.h and gettext.h.
-
-
- * src/libs/libdriver/input.cpp (IntArray): Remove superfluous
- `const' keywords in return value.
-
- * src/preproc/html/pushback.cpp (pushBackBuffer::~pushBackBuffer):
- Remove redundant variable `old'.
- (pushBackBuffer::skipToNewline): Remove redundant variable `ch'.
-
- * src/preproc/tbl/main.cpp (process_table): Remove redundant
- variable `c'.
-
-
- Fix more friend name injection problems since modern C++ compilers
- fail otherwise. We simply provide (global) declarations for all
- functions declared as friends. This is not really necessary but
- doesn't harm.
-
- * src/preproc/eqn/lex.cpp: Provide declarations for get_char,
- peek_char, and get_location.
-
- * src/preproc/refer/ref.h: Provide declarations for
- compare_reference, same_reference, same_year, same_date,
- same_author_last_name, and same_author_name.
-
- * src/roff/troff/div.h: Provide declarations for do_divert and
- page_offset.
-
- * src/roff/troff/env.h: Provide declarations for title_length,
- space_size, fill, no_fill, adjust, no_adjust, center, right_justify,
- vertical_spacing, post_vertical_spacing, line_spacing, line_length,
- indent, temporary_indent, do_underline, do_input_trap, set_tabs,
- margin_character, no_number, number_lines, leader_character,
- tab_character, hyphenate_request, no_hyphenate,
- hyphen_line_max_request, hyphenation_space_request,
- hyphenation_margin_request, line_width, tabs_save, tabs_restore,
- line_tabs_request, widow_control_request, and do_divert.
-
- * src/roff/troff/input.cpp: Provide declaration for chop_macro.
-
- * src/roff/troff/node.cpp: Provide declarations for class
- tfont_spec.
- Provide declaration for make_tfont.
-
-2005-05-29 Werner LEMBERG <wl@gnu.org>
-
- * doc/fdl.texi: Updated to version 1.2. Reported by Bernd Warken.
-
-2005-05-28 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grolbp/lbp.cpp, src/devices/grolbp/lbp.h: Remove
- redundant semicolons.
-
- * src/preproc/eqn/Makefile.sub, src/preproc/html/Makefile.sub,
- src/preproc/soelim/Makefile.sub, src/preproc/tbl/Makefile.sub:
- Define `MLIB'. Some compilers need this for linking with libgroff.
-
-2005-05-27 Werner LEMBERG <wl@gnu.org>
-
- * MANIFEST, README, doc/webpage.ms: Updated.
-
-2005-05-26 Werner LEMBERG <wl@gnu.org>
-
- * All affected files: Update postal address of FSF.
-
-2005-05-25 Keith Marshall <keith.d.marshall@ntlworld.com>
- Bernd Warken
-
- * README: More fixes.
-
- * README.CVS: Removed. Its contents is now part of the README file.
-
-2005-05-21 Werner LEMBERG <wl@gnu.org>
-
- * README: Updated. Based on a patch from Bernd Warken.
-
-2005-05-16 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- Miscellaneous script portability enhancements.
-
- * aclocal.m4: (GROFF_CSH_HACK): Add space in shebang prototype for
- generated conftest.sh script, conforming to portability
- recommendation in autoconf docs.
- * configure: Likewise, for code generated by GROFF_CSH_HACK.
- * contrib/eqn2graph/eqn2graph.sh: Add space in shebang, conforming
- to portability recommendation in autoconf docs.
- * contrib/grap2graph/grap2graph.sh: Likewise.
- * contrib/pic2graph/pic2graph.sh: Likewise.
- * font/devps/generate/afmname: Likewise.
- * src/devices/xditview/ad2c: Likewise.
- * src/preproc/eqn/neqn.sh: Likewise.
- * src/roff/grog/grog.pl: Likewise.
- * src/roff/grog/grog.sh: Likewise.
- * src/roff/nroff/nroff.sh: Likewise.
- * PROBLEMS: Likewise, in embedded script examples.
-
-2005-05-16 Keith Marshall <keith.d.marshall@ntlworld.com>
+ * ChangeLog.121: this new file.
- Improve portability of `pdfroff' shell script.
+2012-12-28 Werner LEMBERG <wl@gnu.org>
- * arch/misc/shdeps.sh: Add space in shebang, conforming to
- portability guidelines in `autoconf' docs.
- (PATH_SEARCH_SETUP): New substitution; emits PATH_SEPARATOR
- initialization code. Used by contrib/pdfmark/pdfroff.sh's
- `searchpath' function.
-
-2005-05-14 Werner LEMBERG <wl@gnu.org>
-
- * contrib/pic2graph/pic2graph.sh, contrib/graph2graph.sh,
- contrib/eqn2graph.sh: Add option `-trim' to `convert' which is
- needed for newer ImageMagick versions.
-
-2005-05-07 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/refer/refer.man: Many small typographic fixes.
-
-2005-05-06 Jeff Conrad <jeff_conrad@msn.com>
-
- * src/devices/grohtml/post-html.cpp (assert_state::~assert_state):
- Use `char *' cast for a_delete.
-
-2005-05-03 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/maxpathname.cpp: Include stdlib.h.
- src/libs/libgroff/relocate.cpp: Use path_name_max everywhere.
-
-2005-05-03 Jeff Conrad <jeff_conrad@msn.com>
-
- * src/devices/grohtml/post-html.cpp: Use casts to `char *' if using
- `a_delete' for `const char *'.
-
-2005-05-03 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grohtml/post-html.cpp,
- src/devices/grohtml/html-table.cpp,
- src/devices/grohtml/html-text.cpp, src/devices/grohtml/output.cpp:
- Replace malloc/free with new/delete/a_delete.
-
- * src/devices/grolbp/lbp.h: Remove superfluous semicolons which
- are prohibited with ANSI C++.
- (lbpprintf, vdmprintf): Remove useless `inline' keyword (since the
- function has a variable number of arguments).
-
- * src/preproc/grn/main.cpp (doinput): Change return type to `int'.
- Simplify function and update all callers.
-
-2005-05-02 Werner LEMBERG <wl@gnu.org>
-
- Undo getopt changes from 2005-04-30. We don't want a dependency
- on gettext.
-
- * src/include/getopt_int.h: Removed.
-
- * src/include/getopt.h, src/include/groff-getopt.h,
- src/include/Makefile.sub, src/libs/libgroff/getopt.c,
- src/libs/libgroff/getopt1.c: Revert to previous version.
-
-
- * src/include/nonposix.h (access) [_MSC_VER]: New macro.
-
- * src/include/posix.h (F_OK): Define conditionally.
-
- * src/devices/grotty/tty.cpp (tty_printer::make_underline): Use
- different variable name in second `for' loop to avoid MSVC compiler
- problem.
-
-2005-04-30 Werner LEMBERG <wl@gnu.org>
-
- AC_TYPE_SIGNAL from current autoconf can fail if CC=g++.
-
- * aclocal.m4 (GROFF_TYPE_SIGNAL): New function.
- * configure.ac: Use GROFF_TYPE_SIGNAL, not AC_TYPE_SIGNAL.
- * configure, src/include/config.hin: Regenerated.
-
- * PROBLEMS: Updated.
-
-
- Update getopt files.
-
- * src/include/getopt.h, src/libs/libgroff/getopt.c,
- src/libs/libgroff/getopt1.c: Updated from GNU libc CVS.
-
- * src/include/getopt_int.h: New file (from GNU libc CVS).
-
- * src/include/groff-getopt.h: Updated.
-
- * src/include/Makefile.sub (HDRS): Add getopt_int.h.
-
-
- * font/devutf8/NOTES: Updated.
-
-2005-04-28 Werner LEMBERG <wl@gnu.org>
-
- Bug fix for Win32 relocatable code. Based on a patch from Keith
- Marshall.
-
- * src/libs/libgroff/maxpathname.cpp (PATH_MAX): Test for `_MAX_PATH'
- also.
-
- * src/libs/libgroff/relocate.c (DEBUG): Define it conditionally.
- (searchpath) [_WIN32]: Use `_fullpath', not `realpath'.
-
-2005-04-28 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- Correct `gnu.eps' handling for build from distribution tarball, with
- separate source and build directories.
-
- * doc/Makefile.sub: (examples.stamp): New target; forces copy of
- grnexmpl.g, groff.css and gnu.eps from source to build directory;
- generate gnu.eps from gnu.xpm if required; touch examples.stamp.
- (prepare_examples): Make it depend on examples.stamp.
- (CLEANADD): Add examples.stamp.
-
-2005-04-27 Werner LEMBERG <wl@gnu.org>
-
- Implement the rule
-
- position: `(' position `)'
-
- in pic.
-
- * src/preproc/pic/pic.y (position, position_not_place): Handle
- additional parentheses.
-
- * doc/pic.ms: Updated.
-
-2005-04-23 Larry Jones <lawrence.jones@ugs.com>
-
- * src/utils/xtotroff/xtotroff.c (MapFont): Fix variable declaration.
-
-2005-04-18 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/groff/pipeline.c: Don't include ctype.h.
-
-2005-04-13 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/nroff/nroff.man: Document option `-M'.
-
-2005-04-13 Bruce Lilly <blilly@erols.com>
-
- * src/roff/nroff/nroff.sh: Make the script accept option `-M'.
-
-2005-04-01 Kees Zeelenberg <kzlg@users.sourceforge.net>
- Werner LEMBERG <wl@gnu.org>
-
- Add binary relocation support for Windows platforms.
-
- * src/include/Makefile.sub (defs.h): Add `INSTALLPATH'.
-
- * src/include/relocate.h, src/libs/libgroff/relocate.cpp: New files.
-
- * src/libs/libgroff/searchpath.cpp: Handle `relocate'.
- (search_path::search_path, search_path::open_file_cautious): Use
- `relocate'.
-
- * src/libs/libgroff/Makefile.sub (OBJS, CCSRCS),
- src/include/Makefile.sub (HDRS): Updated.
-
-2005-04-01 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grohtml/post-html.cpp: Don't use strdup/free but
- strsave/a_delete.
-
- * src/libs/libgroff/font.cpp: Replace strdup with strsave.
-
- * src/libs/libgroff/maxfilename.cpp: Don't include limits.h since
- lib.h already does it.
-
- * src/libs/libgroff/maxpathname.cpp: New file, defining
- path_name_max.
-
- * src/include/lib.h: Add prototype for path_name_max.
-
- * src/libs/libgroff/Makefile.sub (OBJS, CCSRCS): Updated.
-
- * src/include/nonposix.h (PATH_EXT): New macro.
-
-2005-03-28 Werner LEMBERG <wl@gnu.org>
-
- Add support for double- and zero-width characters in grotty.
-
- * src/devices/grotty/tty.cpp (glyph): Add width.
- (tty_printer::make_underline, tty_printer::make_bold,
- tty_printer::add_character): Add parameter to pass character width.
- Update all callers.
- (tty_printer::end_page): Increase hpos by actual character width.
-
- * font/devutf8/R.proto: Specify zero width for non-spacing
- characters.
-
- * tmac/unicode.tmac: Remove definitions for non-spacing entities.
-
- * Makefile.comm (extraclean): Remove more junk files.
-
-2005-03-25 Werner LEMBERG <wl@gnu.org>
-
- * configure.ac: Undo change from 2005-03-24.
- * configure: Regenerated.
-
-2005-03-24 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.in (NOMAKEDIRS): Add contrib/gdiffmk/tests.
- (dist): Search Makefile while descending into $(EXTRADIRS).
-
- * doc/Makefile.in (.PHONY): Add.
- (clean): Don't remove *.png and *.eps.
- Don't handle *.gif.
- (realclean): Remove *.png and *.eps.
- (extraclean): Depend on distclean.
-
- * configure.ac: Add copyright.
- Handle contrib/pdfmark/Makefile.
-
- * configure: Regenerated.
-
-2005-03-18 Larry Kollar <kollar@alltel.net>
-
- Add numbered and definition lists to www.tmac.
-
- * tmac/www.tmac (www-ul-level1, www-ul-level2, www-ul-level3,
- www-ol-level1, www-ol-level2, www-ol-level3, www-ol-tmp): New
- auxiliary string registers.
- (www-ul-level, www-ol-level, www-dl-level, www-ol-ctr1, www-ol-ctr2,
- www-ol-ctr3, www-dl-shift): New auxiliary number registers.
- (www-level): Removed.
- (www-level1, www-level2, www-level3): Initialize to empty.
- (www-level0, www-level4, www-level5, www-level6, www-level7,
- www-level8, www-level9): New string registers.
- (www-push-li, www-pop-li): New macros.
- (www-push-level, www-pop-level): Renamed to...
- (www-push-ul-level, www-pop-ul-level): This.
- Updated.
- (www-push-ol-level, www-pop-ol-level): New macros.
- (ULS, ULE): Updated.
- (OLS, OLE, DLS, DLE): New user macros.
- (LI): Removed. It is aliased to one of...
- (www-li-ul, www-li-ol, www-li-dl): New macros.
-
- * tmac/groff_www.man: Document new macros.
-
- * NEWS: Updated.
-
-2005-03-18 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc-common (doc-operating-system-NetBSD-2.0.1,
- doc-operating-system-NetBSD-2.0.2): New strings.
-
- * tmac/groff_mdoc.man: Updated.
-
-2005-03-17 Werner LEMBERG <wl@gnu.org>
-
- * doc/Makefile.sub (CLEANADD): Add `groff.html'.
-
-2005-03-17 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/hypot.c: Renamed to...
- * src/libs/libgroff/hypot.cpp: This. Updated to C++.
-
- * src/libs/libgroff/Makefile.sub (CCSRCS, CSRCS): Updated.
-
- * src/include/lib.h: Updated.
-
-2005-03-16 Werner LEMBERG <wl@gnu.org>
-
- Add workaround for broken hypot() on Interix.
-
- * src/libs/libgroff/hypot.c: New wrapper file for `hypot'.
-
- * src/libs/libgroff/Makefile.sub (OBJS): Add `hypot.o'.
- (CSRCS): Add `hypot.c'.
+Version 1.22 released
+=====================
- * src/include/lib.h: Declare `groff_hypot'.
+ * NEWS, VERSION, doc/groff.texinfo, doc/webpage.ms: Updated.
- * src/preproc/grn/hgraph.cpp: Don't declare `hypot'.
- Use `groff_hypot'.
+ * config.guess, config.sub: Updated from `config' repository.
- * src/preproc/pic/pic.h: Don't declare `hypot'.
+ * INSTALL.gen: Updated from `gnulib' repository (file `INSTALL').
- * src/preproc/pic/object.cpp (hypot): Use `groff_hypot'.
+ * aclocal.m4, configure: Regenerated.
-2005-03-15 Gaius Mulley <gaius@glam.ac.uk>
+ * doc/texinfo.tex: Updated from `texinfo' repository.
- * src/devices/grohtml/post-html.cpp
- (html_printer::lookahead_for_tables): End .ce properly to avoid a
- segfault.
+ * src/roff/groff/groff.cpp (main) <'v'>: Update copyright year.
-2005-03-15 Werner LEMBERG <wl@gnu.org>
+2012-12-27 Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
- makeinfo 4.8 doesn't produce good HTML output from groff.texinfo.
+ * man/groff_font.man: Typographical improvements and typos.
- * doc/fixinfo.sh: New script to postprocess makeinfo's HTML output.
+2012-12-27 Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
- * doc/Makefile.in (.texinfo.html): Call fixinfo.sh.
+ * man/ditroff.man: Typographical improvements and typos.
-2005-03-14 Werner LEMBERG <wl@gnu.org>
+2012-12-18 Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
- Add Cyrillic support to devutf8 and devhtml.
+ * man/groff_diff.man: Typographical improvements and typos.
- * font/devutf8/R.proto, font/devhtml/R.proto: Add Cyrillic blocks.
+2012-12-16 Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
- * tmac/unicode.tmac: New file.
+ * man/groff.man: Typographical improvements (and one typo).
+ * man/groff_char.man: Typographical improvements.
- * tmac/tty.tmac: Include unicode.tmac if device is utf8.
+2012-10-17 Deri James <deri@chuzzlewit.myzen.co.uk>
- * tmac/Makefile.sub (NORMALFILES): Add unicode.tmac.
+ * src/devices/gropdf/gropdf.pl (do_D): The command \D't N' moves
+ horizontal position by 'N'. gropdf now obeys this rule.
+ (do_t): Fixed kerning issue where width of non-kerned text could be
+ wrongly calculated using previous kern factor.
- * NEWS: Updated.
+2012-09-21 Werner LEMBERG <wl@gnu.org>
-2005-03-02 Keith Marshall <keith.d.marshall@ntlworld.com>
+ * doc/groff.texinfo: Improve documentation of `.ad'.
- * src/libs/libdriver/printer.cpp (check_for_output_error): New
- function. It has been introduced to catch peculiar error contexts
- on MS-Windows platforms.
+2012-09-20 Werner LEMBERG <wl@gnu.org>
-2005-02-28 Werner LEMBERG <wl@gnu.org>
+ * doc/Makefile.sub (uninstall_sub): Fix removal of info files.
- * src/roff/troff/input.cpp (string_iterator::fill): Protect against
- null pointer.
+2012-09-20 Werner LEMBERG <wl@gnu.org>
- * tmac/papersize.tmac: Convert `paper' string contents to lowercase.
+ Simplify environment handling.
- * configure: Regenerated.
+ Suggested by Ivan Shmakov <oneingray@gmail.com>.
- * NEWS: Updated.
+ * doc/Makefile.in, doc/Makefile.sub (GROFF): Don't use export.
-2005-02-28 Keith Marshall <keith.d.marshall@ntlworld.com>
+2012-09-20 Deri James <deri@chuzzlewit.myzen.co.uk>
- Integrate `pdfmark' into normal groff build system;
- install macro `pdfmark' packages, build and install `pdfroff',
- and PDF format documentation.
+ [gropdf] Various minor fixes.
- * Makefile.comm: Add PDFDOCDIR.
+ * font/devpdf/Foundry.in: Add font path to debian `gsfonts' package.
- * Makefile.in: (MDEFINES) ALT_AWK_PROGS, ALT_GHOSTSCRIPT_PROGS,
- pdfdocdir, make_pdfdoc, make_install_pdfdoc: New variables.
- (unstall_dirs): Add pdfdocdir.
+ * font/devpdf/util/BuildFoundries.pl: Handle missing fonts in a more
+ sane way, do NOT abort the complete make run!
- * aclocal.m4: (GROFF_GHOSTSCRIPT_PREFS): New function; support
- `--with-alt-gs' option, set ALT_GHOSTSCRIPT_PROGS.
- (GROFF_GHOSTSCRIPT_PATH): Support `--with-gs' option, force use of
- GROFF_GHOSTSCRIPT_PREFS, set GHOSTSCRIPT.
- (GROFF_HTML_PROGRAMS): Force use of GROFF_GHOSTSCRIPT_PATH; tidy up.
- (GROFF_AWK_PREFS): New function; support `--with-alt-awk' option,
- set ALT_AWK_PROGS.
- (GROFF_AWK_PATH): New function; support `--with-awk' option, force
- use of GROFF_AWK_PREFS.
- (GROFF_PDFDOC_PROGRAMS): New function; force use of GROFF_AWK_PATH
- and GROFF_GHOSTSCRIPT_PATH, set make_pdfdoc and make_install_pdfdoc.
-
- * configure.ac: Add AC_PREREQ(2.59), GROFF_PDFDOC_PROGRAMS.
- Remove GROFF_GHOSTSCRIPT_PATH, (forced by GROFF_PDFDOC_PROGRAMS, and
- also by modified GROFF_HTML_PROGRAMS).
-
-2005-02-27 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/devices/grohtml/html-text.cpp (html_text::do_pre): Preserve
- paragraph spacing.
- (html_text::done_para): Unset `start_space'.
- (html_text::remove_para_align): Call `retrieve_para_space' for the
- spacing.
-
- * src/devices/grohtml/post-html.cpp (html_printer::emit_raw): Unset
- `seen_space'.
- (html_printer::do_check_center): Emit vertical space if necessary.
-
- * src/roff/troff/env.cpp (environment_switch): Preserve
- `seen_space', `seen_eol', and `suppress_next_eol' while switching
- environments.
-
- * src/roff/troff/node.cpp (suppress_node::suppress_node): Set
- `is_special'.
-
-2005-02-20 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/eqn/eqn.man, NEWS: Document various extensions of
- eqn.
-
-2005-02-17 Werner LEMBERG <wl@gnu.org>
-
- * doc/pic.ms, man/groff.man: Fix typos.
-
- * doc/groff.texinfo: Fix typos.
- (\LEmacro): Get proper mathematical spacing.
-
-2005-02-16 Werner LEMBERG <wl@gnu.org>
-
- * aclocal.m4 (GROFF_APPRESDIR_CHECK): Improve warning message.
- * configure: Regenerated with autoconf 2.59b.
-
-2005-02-16 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/devices/grohtml/post-html.cpp (html_printer::is_line_start,
- html_printer::start_font): Fix handling of preformatted text.
-
-2005-02-15 Gaius Mulley <gaius@glam.ac.uk>
-
- These patches modify the indentation implementation to use `<p
- style=margin-left: n%>'. Many thanks to Peter and Larry for
- suggesting this solution. Grohtml only uses tables for `.IP' and
- related tags when the first operand has a short width.
-
- Similarly, they modify all vertical space code. By default, grohtml
- sets up a style sheet which uses no vertical space between `table',
- `pre', and `p' tags. It forces spaces when it needs them using
- `style="margin-top: 1em"'.
-
- * src/devices/grohtml/html-table.cpp: Include `html-text.h'.
- (html_table::emit_table_header, html_table::emit_new_row):
- Rewritten.
- (html_table::set_space): New function.
- (html_indent::html_indent): Don't set `is_used'.
- (html_indent::begin): Rewritten.
- (html_indent::end): Remove code in function.
-
- * src/devices/grohtml/html-table.h: Updated.
- (html_table): Make `out' public.
-
- * src/devices/grohtml/html-text.cpp (html_text::html_text):
- Initialize `start_space' with FALSE.
- (html_text::end_tag) <P_TAG, PRE_TAG>: Updated.
- (html_text::issue_tag): Add argument to handle space style.
- (html_text::start_tag) <P_TAG, PRE_TAG>: Updated.
- (html_text::flush_text): Don't set `start_space'.
- (html_text::push_para): Don't set `p->really_issued'.
- (html_text::do_emittext): Updated.
- (html_text::do_para): Add paremeter to handle space.
- Update all callers.
- (html_text::retrieve_para_space): New function.
-
- * src/devices/grohtml/html-text.h (STYLE_VERTICAL_SPACE): New macro.
- (tag_definition): Remove `really_issued'.
- (html_text): Updated.
-
- * src/devices/grohtml/post-html.cpp (html_printer): Add variables
- `current_column' and `row_space'.
- Update constructor.
- (html_printer::emit_raw, html_printer::write_header,
- html_printer::do_indent, html_printer::do_check_center,
- html_printer::do_tab_ts): Handle vertical space.
- (html_printer:do_tab_te, html_printer::do_end_para): Call
- `remove_para_space'.
- (html_printer::do_col): Rewritten.
- (html_printer::flush_globs): Remove debugging code.
- (html_printer::is_line_start): New function.
- (html_printer::start_font): Use `is_line_start'.
- (html_printer::writeHeadMetaStyle): New function.
- (html_printer::do_file_components, html_printer::~html_printer):
- Call `writeHeadMetaStyle'.
+ * src/devices/gropdf/gropdf: Accept papersize names (i.e. A4) as
+ either upper or lower case.
+ The -p (papersize) option should be length,width (currently reversed
+ - width,length)
- * tmac/www.tmac (www-handle-percent): New macro.
- (MPIMG): Handle percent values for width and height parameters.
- (DC): Updated.
+ * src/devices/gropdf/pdfmom.pl: Support use of GROFF_BIN_PATH.
- * tmac/groff_www.man: Updated.
-
-2005-02-14 Werner LEMBERG <wl@gnu.org>
-
- * src/utils/afmtodit/afmtodit.pl: Remove an incorrect `my' from
- $psname and $italic_angle.
- Immediately restart file input loops if `split' returns an empty
- array.
-
-2005-02-13 Michail Vidiassov <master@iaas.msu.ru>
+2012-09-11 Ralph Corderoy <ralph@inputplus.co.uk>
Werner LEMBERG <wl@gnu.org>
- Update afmtodit to better support Unicode (Michail).
- Update afmtodit to use Perl 5 syntax (Werner).
-
- * src/utils/afmtodit/afmtodit.pl: Don't use `getopts.pl' but
- `Getopts::Std'.
- Decorate variables with `my' where necessary.
- Use `defined' where necessary to avoid warnings.
- Don't use `do' for subroutine calls.
- Other minor syntax updates.
- Check for both `uXXXX[X[X]]' and `uniXXXX'.
- Handle glyph variants properly.
- (%unicode_decomposed, %AGL_to_unicode): Don't use `u' prefix in
- strings.
-
- * src/utils/afmtodit/afmtodit.man: Updated.
-
-2005-02-13 Werner LEMBERG <wl@gnu.org>
-
- Make groff.texinfo work with texinfo 4.8.
-
- * doc/groff.texinfo (@Var): Use @r and @slanted.
- (@defdummy, @Def*): Use @c to avoid empty lines.
- (\angles): Replaced with...
- (\Langlemacro, \Ranglemacro): New TeX macros.
- (@Langlemacro, @Ranglemacro): New variables defined with @set.
- (@angles): Use @Langlemacro and @Ranglemacro.
- (\LE): Replaced with...
- (\LEmacro): New TeX macro.
- (@LEmacro): New variable defined with @set.
- (@LE): Use @LEmacro.
- (@Lparenmacro, @Rparenmacro, @Lbrackmacro, @Rbrackmacro): New
- variables defined with @set.
- (@lparen, @rparen, @lbrack, @rbrack): Replaced with...
- (@Lparen, @Rparen, @Lbrack, @Rbrack): New macros.
- Update all callers.
-
- Other minor updates.
-
- * doc/texinfo.tex: Update to texinfo version 4.8.
-
- * README.CVS: Updated.
-
-2005-02-09 Alejandro Lpez-Valencia <palopez@etb.net.co> (tiny change)
-
- * doc/groff.texinfo (ms Document Control Registers): Document `HY'
- and `FAM' registers.
-
-2005-02-05 Werner LEMBERG <wl@gnu.org>
-
- * tmac/groff_mdoc.man, tmac/doc-common, tmac/doc-ditroff,
- tmac/doc-nroff, tmac/doc-old.tmac, tmac/doc-syms, tmac/doc.tmac:
- Update BSD license.
-
-2005-02-01 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/groff/groff.man: Add information about paper size.
-
-2005-01-25 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/nroff/nroff.sh: Handle `*.ISO8859-1' in locale. From
- NetBSD bin/29114.
-
-2005-01-22 Ruslan Ermilov <ru@FreeBSD.org>
-
- * tmac/doc.tmac (Sm): Improved. It didn't work properly in many
- cases.
- (Re): Emit a warning if called without `.Rs'.
- (doc-finish-reference): Use parameter for decreasing
- `doc-reference-count'.
- (doc-print-reference): Pass specific count parameters to
- `doc-finish-reference'.
-
-2005-01-21 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libdriver/input.cpp (delete_current_env, do_file):
- Reset pointers to zero after deallocation. This fixes a crash
- if a driver is called with multiple input files. Reported by
- Ken Chilton <ken@chiltonfamily.org>.
-
- * src/devices/grops/grops.man: Add more info on DSC.
-
-2005-01-17 Ruslan Ermilov <ru@FreeBSD.org>
-
- * tmac/doc-common (Dd), tmac/doc-ditroff (gX, doc-setup-header):
- Remove dead code.
-
-2005-01-17 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/div.cpp (top_level_diversion::space): Protect
- against division by zero.
-
-2005-01-13 Ruslan Ermilov <ru@FreeBSD.org>
-
- * tmac/doc.tmac (Ef): Restore doc-curr-font and doc-curr-size.
-
-2004-12-19 Werner LEMBERG <wl@gnu.org>
-
- * install-sh: New version; taken from texinfo CVS.
-
-2004-12-17 Werner LEMBERG <wl@gnu.org>
-
- * tmac/devtag.tmac: Protect against loading twice.
- Protect agains compatibility mode.
- * tmac/www.tmac: Protect against loading twice.
- Load `devtag.tmac' before switching off compatibility mode.
- * tmac/an-old.tmac, tmac/s.tmac: Load `devtag.tmac'.
-
-2004-12-16 Mike Bianchi <mbianchi@Foveal.com>
-
- * configure.ac: Produce `contrib/gdiffmk/tests/runtests'.
- * configure: Updated.
-
-2004-12-15 Thomas Klausner <wiz@netbsd.org>
-
- * tmac/doc-syms, tmac/groff_mdoc.man: Add `libpam' library.
-
-2004-12-15 Werner LEMBERG <wl@gnu.org>
-
- Make `test-groff' work again -- previously, wrong paths have been
- used. Additionally, it can now be called from anywhere.
-
- * test-groff.in: Don't test for groff binary. This is no longer
- necessary since the proper paths are determined by `configure'.
- (EXEEXT): Removed. No longer used.
- (srcdir, builddir): Use values provided by the configure script.
- (XENVIRONMENT): Updated.
-
- * INSTALL: Updated.
-
-2004-12-14 Gaius Mulley <gaius@glam.ac.uk>
-
- Make .tag and .taga work for all devices (but only grohtml actually
- handles them).
-
- * src/devices/grohtml/post-html.cpp: s/html-tag/devtag/.
- (text_glob::is_br, page::add_tag, html_printer::troff_tag,
- html_printer::handle_assertion): Don't use hard-coded string
- lengths.
- (html_printer::lookahead_for_table): Reset `tbl' properly if
- necessary.
- (html_printer::devtag): New function, handling `devtag'.
- (html_printer::special): Don't handle `html-tag'.
-
- * src/include/printer.h, src/libs/libdriver/printer.cpp
- (printer::devtag): New virtual function.
-
- * src/libs/libdriver/input.cpp (parse_x_command) <'X'>: Handle
- `devtag'.
-
- * src/roff/troff/env.cpp, src/roff/troff/mtsm.cpp,
- src/roff/troff/node.cpp: s/html-tag/devtag/.
-
- * src/roff/troff/input.cpp (tag, taga): Always call
- curenv->add_node.
-
- * tmac/an-old.tmac, tmac/s.tmac, tmac/troffrc-end: Use DEVTAG*
- macros instead of HTML-TAG*.
-
- * tmac/devtag.tmac: New file, defining the DEVTAG-* macros.
-
- * tmac/www.tmac: Load devtag.tmac.
- Replace HTML-TAG* macros with DEVTAG* macros.
- (HTML, HTML-NS): Changed definitions.
- (URL): Use HTML-NS.
- (HTML-TAG, HTML-TAG-NS, HTML-TAG-NEXT): Removed.
-
- * tmac/Makefile.sub (NORMALFILES): Add devtag.tmac.
-
-2004-12-10 Werner LEMBERG <wl@gnu.org>
-
- Import Mike's `gdiffmk' package.
-
- * contrib/gdiffmk/*: New files.
- * Makefile.in (OTHERDIRS): Add contrib/gdiffmk.
- * NEWS: Updated.
-
-2004-12-08 Werner LEMBERG <wl@gnu.org>
-
- Import Keith's `pdfmark' package. Integration is very preliminary.
-
- * contrib/pdfmark/*: New files.
- * Makefile.in (OTHERDIRS): Add contrib/pdfmark.
- * NEWS: Updated.
-
-2004-12-07 Gaius Mulley <gaius@glam.ac.uk>
-
- Fix a bug with title handling in HTML.
-
- * src/devices/grohtml/post-html.cpp (text_glob::is_nf,
- text_glob::is_fi, text_glob::is_ce): Use strlen to compute string
- length.
- (html_printer::handle_tag_within_title): New function.
- (html_printer::do_title): Use it.
-
- * tmac/s.tmac (TL): Don't set `need_eo_tl'.
- (cov*tl-au-print): Emit `.eo.tl' tag.
-
-2004-12-05 Alejandro Lpez-Valencia <dradul@etb.net.co>
-
- * man/groff_char.man: Minor imrovements.
-
-2004-12-04 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/eqn/eqn.man: Revised.
-
-2004-11-25 Werner LEMBERG <wl@gnu.org>
-
- * src/utils/xtotroff/xtotroff.c: Reformat to be similar to other
- groff source files.
- Include config.h.
- Include limits.h.
- Remove X_NOT_STDC_ENV conditional.
- (Version_string, program_name): New global variables.
- (groff_flag): Removed.
- (MapFont): Updated.
- (usage): Take a stream as argument.
- Use `program_name'.
- Update all callers.
- (main): Add `long_options' array for `--help' and `--version'.
- Make `-g' a dummy option.
- Handle `-v' and unknown options.
- Remove unused `position' variable.
-
- * src/utils/xtotroff/Makefile.sub (MAN1): Define.
- (XLIBS): Add LIBGROFF.
-
- * src/utils/xtotroff/xtotroff.man, src/utils/xtotroff/Makefile.in:
- New files.
-
- * src/devices/xditview/Dvi.c (default_font_map): Split into three
- parts to avoid compiler warning.
- (resources): Don't initialize with `default_font_map'.
- (ClassInitialize): Initialize first element of `resources'.
-
- * src/devices/xditview/Makefile.sub (devdir, xtotroff, DPIS, fonts):
- Removed.
-
- * src/utils/lkbib/lkbib.man, src/utils/lookbib/lookbib.man,
- src/utils/pfbtops/pfbtops.man: Revised, updated.
-
- * configure.ac: Generate src/utils/xtotroff/Makefile.
- * configure: Regenerated.
-
-2004-11-24 Werner LEMBERG <wl@gnu.org>
-
- First fixes to get produce HTML.
-
- * src/devices/grohtml/post-html.cpp (generate_img_src): Add `alt'
- attribute.
-
- * tmac/www.tmac (IMG, PIMG, MPIMG): Add `alt' attribute.
- (HR, LI): Use `HTML</p>', not `HTML'.
-
- * doc/webpage.ms: Minor updates.
-
-2004-11-23 Larry Kollar <kollar@alltel.net>
-
- Add option -S grohtml to determine the file split level.
-
- * src/devices/grohtml/post-html.cpp (split_level): New global
- variable.
- (html_header::determine_header_level): Use split_level.
- (main): Handle `-S' command line option.
- Sort options.
-
- * src/preproc/html/pre-html.cpp (scanArguments): Updated.
-
- * src/devices/grohtml/grohtml.man: Document it.
- Sort options.
-
- * NEWS: Document it.
-
-2004-11-23 Y T <doarhop@hotmail.com>
-
- * tmac/s.tmac (ref*add-V, ref*add-N): New macros for handling
- the volume and number refer entries.
-
-2004-11-22 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grohtml/html-table.cpp
- (html_table::emit_table_header): Don't emit `cols' attribute which
- doesn't exist in HTML 4.0 and is thus invalid.
-
- * NEWS: More minor fixes and updates.
-
-2004-11-18 Werner LEMBERG <wl@gnu.org>
-
- * tmac/www.tmac (HTML-NS, HTML-TAG-NS, HTML-TAG-NEXT): Simplified.
- (HTML</p>): Minor clean-up.
-
- * tmac/groff_www.man: Updated.
-
- * src/devices/grohtml/grohtml.man: Revised and updated.
-
- * NEWS: Updated.
-
-2004-11-18 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/devices/grohtml/post-html.cpp (html_printer::do_heading):
- Fix space insertion.
- (html_printer::do_links): Fix rules generation around automatic
- heading links.
-
- * tmac/www.tmac (LK): Use HTML-TAG-NS.
- (HR): Simplify.
- No longer emit empty line for non-HTML devices.
-
-2004-11-17 Werner LEMBERG <wl@gnu.org>
-
- * doc/Makefile.in (prepare_examples, webpage.html): Handle
- `groff.css'.
-
- * doc/Makefile.sub (EXAMPLEFILES, CLEANNOTSRCDIRADD,
- prepare_examples, webpage.html): Handle `groff.css'.
-
-2004-11-15 Werner LEMBERG <wl@gnu.org>
-
- * NEWS, README, doc/webpage.ms: Updated.
-
- * tmac/www.tmac (HTML, HTML-TAG): Minor clean-ups.
-
-2004-10-30 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/include/printer.h (printer): Remove virtual function
- `round_width'.
- Update all source files.
-
- * src/devices/grohtml/post-html.cpp (html_printer): New member
- function `round_width'.
-
-2004-10-20 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
-
- * src/preproc/tbl/table.cpp (table::do_row): Fix handling of the `d'
- column key letter suffix.
-
-2004-10-14 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.in (check): Depend on `site.exp' and `docheck'.
- (docheck): Run dejagnu's `runtest' if it exists.
- (site.exp): Create dejagnu configuration file.
-
- * Makefile.sub (DISTCLEANFILES): Add files related to dejagnu.
-
-2004-10-13 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grohtml/html-text.cpp (html_text_get_alignment),
- src/devices/grohtml/post-html.cpp (make_val,
- html_printer::handle_state_assertion): Fix compiler warnings.
-
- * src/roff/troff/div.cpp: Include `stringclass.h' and `mtsm.h'.
- (diversion::diversion): Fix order of initializers.
-
- * src/roff/troff/div.h: Don't include `mtsm.h'.
-
- * src/roff/troff/env.cpp: Include `stringclass.h' and `mtsm.h'.
- (environment::environment): Fix order of initializers.
- (environment::make_tag, environment::construct_format_state): Fix
- compiler warnings.
-
- * src/roff/troff/input.cpp: Include `stringclass.h' and `mtsm.h'.
- (input_iterator::input_iterator, macro::macro): Fix order of
- initializers.
-
- * src/roff/troff/mtsm.cpp: Include only necessary header files.
- (state_set::add, state_set::val): Fix compiler warnings.
-
- * src/roff/troff/mtsm.h: Don't include `stringclass.h'.
- (bool_value_state, int_value_state, units_value_state,
- string_value_state): Remove comma after last element which causes
- an error with g++ 3.3.3.
-
- * src/roff/troff/node.cpp: Include `stringclass.h'.
- (hline_node::hline_node, vline_node::vline_node,
- space_char_hmotion_node, left_italic_corrected_node): Fix compiler
- warnings.
- (zero_width_node::zero_width_node): Fix order of initializers.
-
- * src/roff/troff/node.h: Don't include `mtsm.h'.
- (hmotion_node): Fix compiler warnings.
-
- * src/roff/troff/number.cpp: Include `stringclass.h' and `mtsm.h'.
-
-2004-10-12 Gaius Mulley <gaius@glam.ac.uk>
-
- * doc/groff.css: New file.
-
- * doc/webpage.ms: Use `groff.css'.
- Other small fixes.
-
- * tmac/an-old.tmac (need_eo_h): New number register.
- (TH): Emit `.eo.tl' tag after title.
- (SH): Set `need_eo_h'.
- (an-trap): Handle `need_eo_h'.
- (an-do-tag): s/HTML-TAG-NS/HTML-TAG-NEXT/.
-
- * tmac/s.tmac (need_eo_h, need_eo_tl): New number registers.
- (TL): Always start diversion.
- Updated.
- (@AI): Always call `par@reset'.
- (@AB): Update code for -Thtml.
- (cov*tl-au-print): Handle -Thtml.
- (par@reset): Handle `need_eo_tl', `need_eo_h'.
- (@IP): Simplified.
- (@IT-html): Removed.
- (@SH): Set `need_eo_h' for -Thtml.
- (par@TL): s/HTML-TAG/HTMl-TAG-NS/.
- Set `need_eo_tl'.
- (@NH): s/HTML-TAG/HTMl-TAG-NS/.
- Set `need_eo_h' for -Thtml.
- (@EQ, @EN): Don't handle -Thtml specially.
- (par@load-init): Don't handle -Thtml specially.
-
- * tmac/www.tmac (www:paraspace): New macro.
- (HTML-NS, HTML-TAG-NS): Use new `tag' request.
- (HTML</p>, HTML-TAG-NEXT): New macros.
- (HnE): Emit tag `.eo.h' instead of break.
- (HR): s/HTML-NS/HTML/.
- (www-end-nowhere): End diversion only if `www-html' not set.
- Emit `.eo.tl' tag.
- (ULS, ULE): s|HTML|HTML</p>|.
- (LI): Call `www:paraspace'.
- (HEAD): New macro.
-
-2004-10-11 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/roff/troff/request.h (macro): Make `p' public.
- New variable `is_a_diversion'.
- New member function `is_diversion'.
-
-
- * src/devices/grohtml/html.h (simple_output): New member function
- `force_nl'.
-
- * src/devices/grohtml/html-table.cpp (tabs::compatible): Fix
- computation of `total'.
- (tabs::check_init): New function.
- (html_table::emit_table_header): Emit style data.
- (html_table::insert_column): Improved.
-
- * src/devices/grohtml/html-table.h: Updated.
-
- * src/devices/grohtml/html-text.cpp (html_text::html_text):
- Initialize `start_space' with TRUE.
- (html_text::end_tag, html_start_tag): Fix `P_TAG' and `PRE_TAG'
- cases.
- (html_text::flush_text): Set `start_space' flag.
- (html_text::uses_indent, html_text::remove_para_space,
- html_text::get_alignment): New functions.
- (html_text::push_para): Updated.
- (html_text::do_para): Check for empty argument.
- Don't set `space_emitted'.
- (html_text::do_space, html_text::emit_space): Updated.
-
- * src/devices/grohtml/html-text.h (tag_definition): New variable
- `really_issued'.
- (html_text): New member function `uses_indent', `remove_para_space',
- `get_alignment'.
-
- * src/devices/grohtml/output.cpp (simple_output::force_nl): New
- function.
- (simple_output:nl): Always emit `\n'.
-
- * src/devices/grohtml/post-html.cpp: Include `string.h'.
- (BASE_POINT_SIZE): Removed.
- (base_point_size, head_info): New global variables.
- (text_glob): New member functions `is_ll', `is_tl', `is_eo_tl',
- `is_eo_h'.
- (text_glob::is_nf, text_glob::is_fi): Handle `.fi 0' and `.fi 1'
- tags, respectively.
- (page::add_and_encode): Pass additional parameter for tag flag.
- (assert_pos): New structure.
- (assert_state): New class.
- (html_printer): Remove `indentation', `prev_indent'.
- Add variables `troff_indent', `device_indent', `temp_indent'.
- Add variables `seen_indent', `next_indent', `seen_pageoffset',
- `next_pageoffset', `seen_linelenght', `next_linelength',
- `seen_center', `next_center', `seen_space', `seen_break', `as'.
- Add member functions `do_check_center', `do_space', `do_head',
- `get_troff_indent', `restore_troff_indent', `handle_assertion',
- `handle_state_assertion', `do_end_para', `set_char_and_width'.
- Change argument to `do_fill' to `char *'.
- Update constructor.
- (html_printer::emit_raw): Call `shutdown_table'.
- Use new functions.
- (html_printer::do_center): Simplified.
- (html_printer::do_title): Improved.
- (html_printer::write_header): Emit one more newline.
- Use new functions.
- (html_printer::do_heading, html_printer::do_indent,
- html_printer::do_eol, html_printer::do_tab_ts,
- html_printer::do_tab, html_printer::do_tab0,
- html_printer::calc_po_in, html_printer::next_horiz_pos,
- html_printer::remove_courier_tabs,
- html_printer::insert_tab0_foreach_tab, html_printer::begin_page):
- Updated.
- (html_printer::do_linelength, html_printer::do_pageoffset,
- html_printer::do_indentation, html_printer::do_tempindent,
- html_printer::do_tab_te): Simplified.
- (html_printer::do_pointsize): Check whether point size is really
- associated a `.tl' tag.
- (html_printer::do_break): Rewritten.
- (html_printer::troff_tag): Improved.
- (html_printer::flush_globs): Updated.
- (html_printer::lookahead_for_tables): Handle `is_br'.
- Use new functions.
- (html_printer::set_char): Check `sbuf_style.f'.
- (html_printer::write_navigation): Use string comparison.
- (html_printer::~html_printer): Emit `head_info'.
- (html_printer::special): Rewritten.
- (get_str, make_val): New functions.
- (main): New option `s' to set the base point size.
-
- * src/preproc/html/pre-html.cpp (scanArguments): Handle option `s'.
-
-2004-10-10 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/roff/troff/node.cpp: New extern `debug_state'.
- Include `stringclass.h' and `mtsm.h'.
- Implement new classes and class members from `node.h'.
- (real_output_file): Make `fp' public.
- (troff_output_file): New variables `cur_div_level' and `tag_list'.
- Update constructors.
- (troff_output_file::really_print_line): Check whether we should push
- the current troff state and use the state at the start of the
- invocation of this diversion.
- (troff_output_file::add_to_tag_list): New member function.
- (node::add_char): Handle `glyph_comp_np'.
-
- * src/roff/troff/node.h: Include `mtsm.h'.
- (node): New variables `state', `push_state', `div_nest_level',
- `is_special'. Update constructors, all descendants.
- Pass additional argument to `add_char' member function.
- New virtual member functions `is_tag', `debug_node',
- `debug_node_list'. Update all descendants.
- (tag_node): New class for handling tags.
- (output_file): Add variable `state'.
-
-2004-10-09 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/roff/troff/mtsm.cpp, src/roff/troff/mtsm.h: New files,
- providing a minimal troff state machine to emit meta tags for the
- post-grohtml device driver.
-
- * src/roff/troff/Makefile.sub (OBJS, CCSRCS, HDRS): Handle new
- files.
-
-2004-10-09 Werner LEMBERG <wl@gnu.org>
-
- * tmac/trace.tmac: Fix handling of `am' and `am1' calls.
-
-2004-10-06 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/roff/troff/column.cpp (vjustify_node::copy): Updated.
-
- * src/roff/troff/div.h: Include `mtsm.h'.
- (diversion): New variables `any_chars_added', `needs_push',
- `saved_seen_break', `saved_seen_space', `saved_seen_eol',
- `saved_suppress_next_eol', `modified_tag'.
- New virtual member function `is_diversion'. Update all descendants.
-
- * src/roff/troff/div.cpp (diversion::diversion,
- macro_diversion::macro_diversion): Updated.
- (do_divert): Handle `seen_break', `seen_space', `seen_eol',
- `suppress_next_eol'.
- (top_level_diversion::space): Handle `curenv->seen_space'.
- (page_offset): Update tag handling.
- (space_request, blank_line, flush_output): Don't call `add_html_tag'.
-
- * src/roff/troff/env.h (environment): Make `tabs' public.
- Remove `ignore_next_eol', `emitted_node'.
- Update `output_line', `output'.
- New variables `seen_space', `seen_eol', `suppress_next_eol',
- `seen_break'.
- New member functions `construct_state', `make_tag',
- `construct_format_state, `construct_new_line_state,
- `dump_troff_state'.
- Remove `add_html_tag', `make_html_tag'.
-
- * src/roff/troff/env.cpp: New externs `suppress_push',
- `get_diversion_state', `global_diverted_space'.
- (pending_output_line): New variable `was_centered'.
- Update constructor and all callers.
- (pending_output_line::output): Call `curenv->construct_format_state'.
- (environment::environment, environment::copy): Updated.
- (environment::output): Handle `was_centered'.
- (environment::add_char): Handle construct and diversion state.
- (environment::add_node): Handle construct state.
- (environment::newline): Handle `was_centered'.
- (environment::output_line): Updated.
- (environment::possibly_break_line): Updated.
- Update tag handling.
- (environment::add_html_tag): Replaced with...
- (environment::make_tag): New function.
- (environment::add_html_tag_tabs, environment::make_html_tag): Removed.
- (environment::dump_troff_state): New debugging function.
- (environment::construct_state, environment::construct_format_state,
- environment::construct_new_line_state): New functions.
- (environment::do_break): Updated.
- Handle `global_diverted_space'.
- (environment::handle_tag): Update tag handling.
- (point_size, fill, do_break_request): Don't call `add_html_tag'.
- (no_fill): Don't call `add_html_tag'.
- Set `suppress_next_eol'.
- (center, right_justify, line_length, indent, temporary_indent,
- set_tabs):
- Update tag handling.
-
- * src/roff/troff/input.cpp: Don't include `stringclass.h'.
- (input_iterator): New variables `is_diversion', `diversion_state'.
- Update constructors.
- (input_stack): New member functions `get_div_level',
- `get_diversion_state', `check_end_diversion'.
- New variables `div_level', `diversion_state'. Initialize them.
- (suppress_push, global_diverted_space): New global variables.
- (input_stack::finish_get, input_stack::finish_peek,
- input_stack::remove_boundary, input_stack::end_file,
- input_stack::clear, input_stack::pop_macro): Call
- `check_end_diversion'.
- (input_stack::push): Handle `div_level' and `diversion_state'.
- (get_diversion_state): New function.
- (diverted_space_node::reread): Handle `global_diverted_space'.
- (macro::macro): Update constructors.
- (macro::is_diversion): New function.
- (macro::operator=): Set `is_a_diversion'.
- (string_iterator): New member function `is_diversion'.
- (string_iterator::string_iterator): Update constructors.
- (string_iterator::fill): Set `div_nest_level'.
- (macro_iterator): New member function `is_diversion'.
- (do_if_request): Handle `suppress_push'.
- (tag, taga): New functions.
- (init_input_requests): Add `tag' and `taga' requests.
-
-2004-10-05 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/include/font.h (font): New member function
- `get_image_generator'.
- New variables `unscaled_charwidths' and `image_generator'.
-
- * src/libs/libgroff/font.cpp (font::get_width): Always return the
- character's unscaled width if `font::unscaled_charwidths' is set.
- (font::get_image_generator): New function.
- (font::load_desc): Check the `unscaled_charwidths' and
- `image_generator' keywords.
-
- * src/libs/libgroff/fontfile.cpp: Initialize
- `font::unscaled_charwidths' and `font::image_generator'.
-
- * font/devhtml/DESC.proto: s/html/unscaled_charwidths/.
-
- * font/devhtml/Makefile.sub (DESC): Set `image_generator' keyword.
-
- * man/groff_font.man: Document `unscaled_charwidths' and
- `image_generator'.
-
- * src/preproc/html/pre-html.cpp: Include `device.h'.
- (image_gen): New global variable.
- (imageList::createPage): Use `image_gen'.
- (main): Use `image_generator' keyword.
-
-2004-10-04 Gaius Mulley <gaius@glam.ac.uk>
-
- * tmac/html.tmac: Handle \[sqrtex].
-
-2004-10-04 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/include/printer.h (printer): New virtual method `round_width'.
-
- * src/devices/grodvi/dvi.cpp, src/devices/grolbp/lbp.cpp,
- src/devices/grolj4/lj4.cpp, src/devices/grops/ps.cpp,
- src/devices/grotty/tty.cpp (printer::round_width): New function
- member.
-
- * src/devices/grohtml/post-html.cpp (printer::round_width): New
- function member.
- (html_printer::set_numbered_char): Use it.
-
-2004-10-03 Gaius Mulley <gaius@glam.ac.uk>
-
- * aclocal.m4 (GROFF_GHOSTSCRIPT_PATH): New macro.
-
- * configure.ac: Call GROFF_GHOSTSCRIPT_PATH.
-
- * configure: Regenerated.
-
- * Makefile.in (GHOSTSCRIPT): New variable.
- (MDEFINES): Add GHOSTSCRIPT.
-
-2004-10-03 Werner LEMBERG <wl@gnu.org>
-
- * INSTALL.gen: Updated (taken from texinfo CVS).
-
-2004-09-28 Werner LEMBERG <wl@gnu.org>
-
- * NEWS: Updated.
-
-2004-09-28 Heinz-Jrgen Oertel <hj.oertel@surfeu.de>
-
- * tmac/groff_www.man: Revised and updated.
-
-2004-09-26 Werner LEMBERG <wl@gnu.org>
-
- Fix \$@ and \$* to handle any number of arguments.
-
- * src/roff/troff/input.h (BEGIN_QUOTE, END_QUOTE): New special
- characters.
-
- * src/roff/troff/input.cpp (input_iterator::internal_level):
- Removed.
- (input_stack): New member functions `increase_level' and
- `decrease_level'.
- (input_stack::get_level): Don't use `internal_level'.
- (get_copy, token::next): Handle BEGIN_QUOTE and END_QUOTE.
- (end_quote_iterator): Completely removed.
- (interpolate_arg): Build string for \$@ and \$* which is then
- pushed onto the input stack.
-
-2004-09-23 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * tmac/groff_ms.man, doc/groff.texinfo (ms Document Control
- Registers): Document changes from 2004-09-19.
-
-2004-09-23 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-old.tmac (ne): Using default scaling operator.
-
-2004-09-19 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- This change implements the following features:
-
- PORPHANS
- New numeric register: Defines number of lines following LP, PP,
- QP, IP or XP, which must be kept together, before any automatic
- page break. If insufficient space remains on the current page, a
- page break is forced before the new paragraph begins.
-
- HORPHANS
- New numeric register: Sets number of lines of following paragraph
- which must be kept with a heading, defined by NH or SH, before any
- automatic page break. If insufficient space remains on the
- current page, a page break is forced before the heading.
-
- GROWPS
- (Thanks to Joerg van den Hoff, for this idea).
-
- New numeric register: Sets the first level of heading (set with
- NH), which will keep the same point size as body text; e.g. if
- GROWPS is set to 3, .NH 3, .NH 4, ... will produce headings at the
- point size specified by \n[PS], but .NH 2 and .NH 1 will have
- progressively larger point sizes, determined by \n[PSINCR] (see
- below).
-
- PSINCR
- New numeric register: Sets the point size increment for each level
- of heading, (set with NH), below the threshold level set by
- GROWPS; e.g. if \n[PS] = 10, \n[GROWPS] = 3 and \n[PSINCR] = 2.0p,
- then .NH 1 will produce 14pt headings, .NH 2 will produce 12pt,
- and all other levels will remain at 10pt, (because \n[PS] = 10).
-
- SH
- Existing macro now accepts a numeric argument, to make heading
- size match that of NH with same argument value, when the
- GROWPS/PSINCR feature is enabled.
-
- SN-DOT
- New string, set by NH macro, replaces the existing (undocumented)
- use of SN, to represent the assigned section number.
-
- SN-NO-DOT
- New string, set by NH macro, represents the assigned section
- number, but omits the terminal period (periods at intermediate
- levels are retained).
-
- SN
- String set by NH macro, originally undocumented, now implemented
- as an alias for SN-DOT (which reproduces original behaviour).
-
- * tmac/s.tmac (PORPHANS): New register.
- (par*start): Use it.
- (HORPHANS, GROWPS, PSINCR): New registers.
- (SH-NO-TAG, @SH): Use them.
- (@NH): Improved.
-
-2004-09-19 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * NEWS, doc/groff.texinfo (ms Display and Keeps), tmac/groff_ms.man:
- Document the deletion of `Ds' and `De' macros.
-
-2004-09-10 Werner LEMBERG <wl@gnu.org>
-
- In tbl, handle \a as an interpreted leader character if in
- compatibility mode.
-
- * src/preproc/tbl/table.h (PREFIX, PREFIX_CHAR, LEADER,
- LEADER_CHAR): New macros.
- (compatible_flag): New declaration.
-
- * src/preproc/tbl/main.cpp (table_input): Add LEADER_1, LEADER_2,
- LEADER_3, and LEADER_4 to `state'.
- (table_input::get): Handle `\a'.
-
- * src/preproc/tbl/table.cpp (PREFIX): Removed.
- (LEADER_REG): New macro.
- (table::init_output): Define LEADER_REG string register if in
- compatibility mode.
-
- * src/preproc/tbl/tbl.man: Document it.
-
-2004-08-18 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc.tmac (An): Fix error message.
-
-2004-08-06 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/main.cpp (main): Call `fatal' not `error' if a
- file can't be opened. UNIX tbl has the same behaviour.
-
-2004-08-05 Y T <doarhop@hotmail.com>
-
- * src/preproc/grn/hdb.cpp (compatibility_flag): Add declaration.
- (DBRead): If in compatibility mode, take into account the text
- when computing figure boundaries.
-
-2004-08-05 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/soelim/soelim.man: Improved. Based on suggestions
- from Tadziu Hoffmann.
-
-2004-08-03 Werner LEMBERG <wl@gnu.org>
-
- * doc/meref.me: Document `_M' register.
-
-2004-08-03 Martin Husemann <martin@duskware.de>
-
- Make hpftodit work correctly on big-endian systems.
-
- * src/utils/hpftodit/hpftodit.cpp (File): New method
- `get_uint32(char *)'.
- (entry): New member `orig_value'.
- (read_tags): Use new method.
- (output_font_name, read_and_output_pcltypeface, dump_ascii):
- Updated.
-
-2004-08-01 Werner LEMBERG <wl@gnu.org>
-
- * tmac/s.tmac: Undo change 2003-06-29. The proper macro definitions
- are already in X11's `macros.t' file.
-
-2004-08-01 Jeff Conrad <jeff_conrad@msn.com>
-
- * src/utils/hpftodit/hfptodit.cpp (output_font_name, dump_ascii):
- Fix casting bug.
- (read_and_output_pcltypeface): Handle strings with length <= 4.
-
-2004-07-27 Egil Kvaleberg <egil@kvaleberg.no>
-
- * tmac/s.tmac (pg@top): Don't save `PO' register.
- (pg*end-col, pg*end-page): Directly use `PO' register.
-
-2004-07-27 Werner LEMBERG <wl@gnu.org>
-
- * man/groff_tmac.man: Mention `trace' and `pic' macro packages.
-
- * src/preproc/refer/refer.cpp (output_references): Check for
- empty hash table.
- * src/preproc/refer/refer.man: Improve documentation of
- `bibliography' command.
-
-2004-07-26 Werner LEMBERG <wl@gnu.org>
-
- Add requests `fcolor' and `gcolor'.
-
- * src/roff/troff/env.cpp (fill_color_change, glyph_color_change):
- New functions.
- (init_env_requests): Add `fcolor' and `gcolor'.
-
- * src/roff/troff/input.h: Export do_glyph_color and do_fill_color.
-
- * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo
- (Colors): Document new requests.
-
-2004-07-24 Werner LEMBERG <wl@gnu.org>
-
- Add support for fractional point sizes in ms macros. A value for
- PS, VS, FPS, and FVS greater than or equal to 1000 is always divided
- by 1000. For example, `.nr PS 10250' sets the font size to 10.25p.
-
- * tmac/s.tmac (@AU, @AI, par@load-init, par@init, par@reset, NL,
- PX): Handle fractional point sizes for PS, VS, FPS, and FVS.
-
- * tmac/groff_ms.man, docs/groff.texinfo (ms Document Control
- Registers), NEWS: Document it.
-
-2004-07-19 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/pic/lex.cpp (for_input): Add member `from'.
- Update constructor.
- (do_for, for_input::get, for_input::peek): Handle negative `by'.
- * src/preproc/pic/pic.man, doc/pic.ms, NEWS: Document it.
-
-2004-07-08 Thomas Klausner <wiz@netbsd.org>
-
- * tmac/doc-syms (doc-str-St--p1003.1-2004): New string.
- * tmac/groff_mdoc.man: Updated.
-
-2004-07-05 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo (Manipulating Hyphenation): Further improve
- documentation of `hcode'.
-
-2004-07-04 Sang Dae Yu <sdyu@bh.knu.ac.kr>
-
- Improve appearance of arrows in pic.
-
- * src/preproc/pic/object.cpp (draw_arrow): Make outline of filled
- arrow head thin.
- Use two line segments for drawing non-filled arrow head.
- (line_object::print, spline_object::print): Shorten line length to
- avoid arrow sticking.
- (arc_object::print): Take arrow direction into account.
-
-2004-07-03 Heinz-Jrgen Oertel <hj.oertel@surfeu.de>
-
- * tmac/groff_www.man: Update documentation of .MPIMG.
-
-2004-07-03 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-old.tmac (RI): Always start with font `R'.
- (RI, IR): Properly end with font `R'.
-
-2004-07-02 Paul Eggert <eggert@cs.ucla.edu>
-
- * man/ditroff.man, man/groff_font.man, man/groff_out.man,
- src/devices/grohtml/grohtml.man, src/preproc/grn/grn.man,
- src/preproc/pic/pic.man, tmac/groff_man.man, tmac/groff_ms.man:
- Don't pass more than six arguments to .R, .I, .B, etc., for
- compatibility with traditional troff macros.
-
-2004-07-02 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.h: s/COMPATIBLE_SAVE/PUSH_GROFF_MODE/.
- s/COMPATIBLE_RESTORE/POP_GROFFCOMP_MODE/.
- Update all users.
- (PUSH_COMP_MODE): New internal character constant.
- Update all users.
-
- * src/roff/troff/input.cpp (get_copy): Handle PUSH_GROFF_MODE,
- PUSH_COMP_MODE, and POP_GROFFCOMP_MODE.
- (token::next, macro::append): Handle PUSH_COMP_MODE.
- (decode_args): Add PUSH_GROFF_MODE or PUSH_COMP_MODE before and
- POP_GROFFCOMP after each of the decoded arguments to make them
- independent from the compatibility mode status.
- (comp_mode): Add `COMP_ENABLE'.
- (do_define_string, do_define_macro): Handle COMP_ENABLE.
- (define_string, append_string, define_macro, define_indirect_macro,
- append_macro, append_indirect_macro): Handle `compatible_flag'.
- (chop_macro, substring_request, asciify): Handle PUSH_COMP_MODE.
-
- * man/groff_diff.man, doc/groff.texinfo: Updated.
-
-2004-07-01 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo: Improve documentation of `hcode'.
- Use @documentencoding and convert document to latin-1; to do that
- make latin characters active and assign proper macros (within a
- @tex...@end tex environment).
- * doc/Makefile.in (.texinfo.html, groff): Use --enable-encoding.
- * doc/Makefile.sub (groff): Ditto.
-
-2004-06-29 Werner LEMBERG <wl@gnu.org>
-
- Implement two new conditional operators `F <name>' and `S <name>'
- which check whether <name> is a valid font or style, respectively.
-
- * src/libs/libgroff/font.cpp (text_file): Add `silent' member.
- (text_file::text_file): Updated.
- (text_file::error): Don't emit message if `silent' is set.
- (font::load_font): Add optional third argument (which is directly
- passed to `load'.
- (font::load): Add optional second argument to check the header of
- a font only, without emitting warning or error messages.
- * src/include/font.h (font): Updated.
-
- * src/roff/troff/input.cpp (do_if_request): Implement `S' and `F'
- conditionals.
- * src/roff/troff/node.cpp (mount_font_no_translate): Add optional
- fourth argument to check a font without mounting.
- (check_font, check_style): New functions.
- * src/roff/troff/node.h: Updated.
-
- * man/groff_diff.man, man/groff.man, NEWS, doc/groff.texinfo:
- Updated.
-
-2004-06-27 Werner LEMBERG <wl@gnu.org>
-
- Implement new string-valued register `.sty' to return the current
- style name.
-
- * env.cpp (environment::get_style_name_string): New function.
- (init_env_requests): Add `.sty' register.
- * env.h (environment): Updated.
- * node.cpp (font_info): Make `get_style_name' a friend.
- (get_style_name): New function.
- * node.h: Updated.
-
- * man/groff_diff.man, man/groff.man, NEWS, doc/groff.texinfo:
- Updated.
-
-2004-06-15 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/tbl/main.cpp (process_data) <GOT_RIGHT_BRACE>: Handle
- `nospaces' option.
-
-2004-06-10 Colin Percival <colin.percival@wadham.ox.ac.uk>
-
- * doc/meintro.me, doc/meref.me: Don't use \*[td], \n[dy], \*[mo],
- and \n[mo] to avoid dependency on current date.
-
-2004-06-08 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.sub (install_data): New target.
-
-2004-06-04 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libxutil/Makefile.sub (EXTRA_CFLAGS): Define.
-
-2004-06-03 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/xditview/Makefile.sub (EXTRA_LDFLAGS): Fix typo and
- order of libraries.
- (install_data): Add $(srcdir).
-
- * src/utils/xtotroff/Makefile.sub (EXTRA_LDFLAGS): Fix order of
- libraries.
-
-2004-06-02 Werner LEMBERG <wl@gnu.org>
-
- * aclocal.m4 (GROFF_X11): s/have_no_x/groff_no_x/.
- Add X11 stuff to CFLAGS, LDFLAGS, and LIBS temporarily.
- Add test for Xmu library.
- (GROFF_APPRESDIR_OPTION, GROFF_APPRESDIR_CHECK,
- GROFF_APPRESDIR_DEFAULT): New macros.
-
- * configure.ac: Call GROFF_APPRESDIR_OPTION, GROFF_APPRESDIR_CHECK,
- and GROFF_APPRESDIR_DEFAULT.
-
- * configure: Regenerated.
-
- * Makefile.in (appresdir): New variable.
- (MDEFINES): Add appresdir.
-
- * src/devices/xditview/Makefile.sub (EXTRA_LDFLAGS): Add -Xmu and
- -Xt.
- (install_data, uninstall_sub): New targets to handle GXditview.ad.
-
- * src/utils/indxbib/Makefiles.ub (install_data): Depend on
- `$(srcdir)/eign', not `eign'.
-
- * MANIFEST, INSTALL, NEWS, PROBLEMS: Updated.
-
- * man/groff_out.man, man/roff.man, src/devices/grops/grops.man,
- src/devices/xditview/gxditview.man, src/roff/groff/groff.man:
- Protect (g)xditview with `\%' to avoid hyphenation.
- Other minor formatting.
-
-2004-06-01 Werner LEMBERG <wl@gnu.org>
-
- Integrate gxditview into groff's standard directory hierarchy.
-
- * src/xditview/*: Moved to ...
- * src/devices/xditview/*: Here.
- Moved DviChar.h and XFontName.h to src/include.
- Moved DviChar.c and XFontName.c to new directory src/libs/libxutil.
- Split off `xmalloc' into new file src/libs/libxutil/xmalloc.c.
- Moved xtotroff.c to new directory src/utils/xtotroff.
- Provide proper Makefile.sub files (reusing the stuff from
- Imakefile.in).
- DESC renamed to DESC.in.
- Removed GXDitview-ad.h, INSTALL, Imakefile.in.
- Converted everything from K&R to ANSI C.
- Decorated with const where appropriate.
- Cast string constants with `String' and `char *' where appropriate.
- Made it compile with C++ (used as a C compiler).
- Removed other minor compiler warnings.
-
- * src/devices/xditview/device.c: Include config.h, string.h, and
- defs.h.
- Don't declare `exit', `strtok', `strchr', and `getenv'.
- (FONTPATH): Remove.
-
- * src/devices/xditview/font.c: Don't declare `XParseFontName' and
- `XFormatFontName'.
-
- * src/devices/xditview/xditview.c: Include config.h.
- Include stdio.h earlier.
- Protect declaration of `popen' and `pclose' with
- NEED_DECLARATION_POPEN and NEED_DECLARATION_PCLOSE.
- Replace `caddr_t' with `XtPointer'.
- (MakePromptFunc): New typedef.
- (DoPrint): Use RETSIGTYPE.
- (promptfunction): Change type to MakePromptFunc.
- (MakePrompt): Use MakePromptFunc for third argument.
- (xmalloc): Removed.
-
- * src/devices/xditview/ad2c: Add casts to `String'.
-
- * src/include/XFontName.h (XFontNameString): Don't use array
- notation.
- Add prototypes for `XParseFontName', `XFormatFontName',
- `XCompareFontName', and `XCopyFontName'.
-
- * src/include/Makefile.sub (HDRS): Add `DviChar.h' and
- `XFontName.h'.
-
- * src/utils/xtotroff/xtotroff.c: Include getopt.h.
- Don't declare `XParseFontName' and `XFormatFontName'.
- (xmalloc): Removed.
- (main): Remove `optind' and `optarg'.
-
- * Makefile.in (XDEVDIRS, XPROGDIRS, XLIBDIRS): New variables
- (to select programs which need X).
- Make XDEVIDIRS depend on `FORCE'.
- (X_CFLAGS, X_LIBS, X_EXTRA_LIBS, X_PRE_LIBS): New variables (for
- X support).
- (MDEFINES): Updated.
- (LIBDIRS): Use XLIBDIRS.
- (CPROGDIRS): Use XPROGDIRS.
- (DEVDIRS): Remove font directories for gxditview.
- (ALLDIRS, DISTDIRS): Add XDEVDIRS.
- (EXTRADIRS): Remove src/xditview.
-
- * Makefile.sub (DISCLEANFILES): Updated.
-
- * Makefile.comm (LIBXUTIL): New variable.
- (.cpp.o, .cpp.obj): Handle EXTRA_CCFLAGS.
- (.c.o, .c.obj, .y.o): Handle EXTRA_CFLAGS.
-
- * Makefile.cpg, Makefile.ccpg ($PROG): Handle EXTRA_LDFLAGS.
-
- * aclocal.m4 (GROFF_X11): New function.
-
- * configure.ac: Call GROFF_X11.
- Don't create src/xditview/Imakefile.
- Don't emit notice how to build gxditview.
-
- * configure: Regenerated.
-
- * test-groff.in (GROFF_BIN_PATH, XENVIRONMENT): Updated.
-
-2004-05-28 Akihiro Sagawa <sagawa@sohgoh.net>
-
- * Makefile.in (CPPFLAGS): Define.
- (MDEFINES): Add CPPFLAGS.
-
-2004-05-27 Werner LEMBERG <wl@gnu.org>
-
- * arch/misc/Makefile.sub (shdeps.sed): Use $(srcdir).
-
-2004-05-26 Niklas Edmundsson <nikke@acc.umu.se>
-
- Fix problems with `friend name injections'.
-
- * src/preproc/eqn/box.h (make_mark_box, make_lineup_box,
- make_script_box), src/roff/troff/div.h (end_diversions),
- src/roff/troff/env.h (title), input.cpp (process_input_stack): Undo
- change 2004-04-08.
-
-2004-05-25 Bernd Warken <bwarken@mayn.de>
-
- * src/preproc/pic/pic.man, doc/pic.ms: Add example for `command'.
-
-2004-05-25 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/cset.cpp, src/libs/libgroff/lf.cpp,
- src/libs/libgroff/color.cpp: Include lib.h.
-
-2004-05-25 Paul Eggert <eggert@cs.ucla.edu>
-
- * PROBLEMS: Update documentation for problems with Sun C++ 5.0
- through Forte 6u1, and for how to get GNU make on Solaris.
-
-2004-05-24 Werner LEMBERG <wl@gnu.org>
-
- * PROBLEMS: Document problems with gcc 3.4.0 on Sun. Reported
- by Paul Eggert.
-
-2004-05-15 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * arch/misc/Makefile.sub (shdeps.sed): Don't use `$<' in explicit
- rule.
-
-2004-05-14 Werner LEMBERG <wl@gnu.org>
-
- * REVISION: Set to 2.
-
- * aclocal.m4 (GROFF_STDINT_H): Removed.
- (GROFF_INTTYPES_H): Define HAVE_CC_INTTYPES_H.
-
- * configure.ac: Updated.
- * configure, src/include/config.hin: Regenerated.
-
- * src/libs/libgroff/tmpname.cpp: Don't include stdint.h but
- inttypes.h conditionally.
-
-2004-05-13 Werner LEMBERG <wl@gnu.org>
-
-Version 1.19.1 released
-=======================
-
-2004-05-10 Stephen Gildea <http://www.gildea.com/stephen>
-
- * src/preproc/refer/label.y (same_author_last_name,
- same_author_name): Handle empty sort keys.
-
-2004-05-10 Werner LEMBERG <wl@gnu.org>
-
- * NEWS, README, TODO, PROJECTS, PROBLEMS, MANIFEST, doc/webpage.ms,
- tmac/TODO: Updated.
+ * src/preproc/tbl/tbl.man: Better document `d' column specifier.
- * tmac/doc-syms (doc-str-Lb-libposix, doc-str-Lb-libpthread,
- doc-str-Lb-librt): Reset font.
- (Lb): Rename `doc-str-Lb' to `doc-str-Lb1'.
- Provide `doc-str-Lb' to reset font.
- * tmac/groff_mdoc.man: Updated.
+2012-08-31 Deri James <deri@chuzzlewit.myzen.co.uk>
-2004-05-08 Jan Schaumann <jschauma@netmeister.org>
+ Add `pdfmom' to handle mom documents with gropdf.
- * src/preproc/html/pre-html.cpp (make_message): Make it work for
- snprintf versions which don't conform to ANSI C 99 (this is,
- counting the string's trailing null byte in the return value).
+ * Makefile.in (OTHERDIRS): Move contrib/mom to be run after
+ devices/gropdf.
-2004-05-07 Keith Marshall <keith.d.marshall@ntlworld.com>
+ * src/devices/gropdf/gropdf.pl: Various fixes:
- * src/roff/troff/node.cpp (suppress_node::tprint): Don't expect
- that all implementations of sprintf handle null pointers correctly.
+ . Correct image scaling issue.
+ . Handle relative horizontal movement 'h' followed by absolute
+ vertical movement 'V'.
+ . Correct handling of track kerning.
-2004-05-04 Werner LEMBERG <wl@gnu.org>
+ * src/devices/gropdf/pdfmom.pl: New wrapper for mom (pdfmom)
+ using gropdf or grops driver.
+ * src/devices/gropdf/pdfmom.man: New man page.
+ * src/devices/gropdf/Makefile.sub: Updated to handle new files.
- * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
- Document `.U' register.
+2012-08-31 Deri James <deri@chuzzlewit.myzen.co.uk>
- * src/roff/troff/env.cpp (environment::mark_last_line)
- [WIDOW_CONTROL]: Fix scope of `p' for new C++ compilers.
+ * Makefile.in (OTHERDIRS): Move contrib/mom to be run after
+ devices/gropdf.
-2004-05-04 Larry Kollar <kollar@alltel.net>
+ * src/devices/gropdf/gropdf.pl: Various fixes:
- New read-only register `.U'; it returns 1 in safer mode and 0
- otherwise.
+ . Correct image scaling issue.
+ . Handle relative horizontal movement 'h' followed by absolute
+ vertical movement 'V'.
+ . Correct handling of track kerning.
- * src/roff/troff/input.cpp (init_input_requests): Implement `.U'
- register.
+ * src/devices/gropdf/pdfmom.pl: New wrapper for mom (pdfmom)
+ using gropdf or grops driver.
+ * src/devices/gropdf/pdfmom.man: New man page.
+ * src/devices/gropdf/Makefile.sub: Updated to handle new files.
-2004-05-03 Werner LEMBERG <wl@gnu.org>
+2012-08-31 Julien Moutinho <julm+groff@autogeree.net>
- * install-sh, mkinstalldirs: New versions; taken from texinfo CVS.
+ * tmac/www.tmac (www-push-li): Fix indentation.
-2004-04-17 Werner LEMBERG <wl@gnu.org>
+ See
- * src/include/font.h (font): Use `int' for ch_index.
- * src/libs/libgroff/font.cpp (font::alloc_ch_index,
- font::compact): Updated.
+ http://lists.gnu.org/archive/html/bug-groff/2012-08/msg00009.html
- * src/roff/groff/pipeline.c (run_pipeline) [_WIN32]: Fix compiler
- warnings.
+ for the full report.
- * src/roff/troff/div.cpp (begin_page), src/roff/troff/env.cpp
- (hyphen_word): Fix compiler warnings.
- * src/roff/troff/input.cpp (get_char_for_escape_name): Return
- `char'.
- Update all callers.
- (get_delim_number, get_line_arg): Change second argument type to
- `unsigned char'.
- (macro_header::copy, token::next, do_define_string,
- do_define_character, substring_request, asciify_macro,
- unformat_macro, read_size, non_interpreted_node::interpret,
- while_request, main: Fix compiler warnings.
- (read_color_draw_node): Initialize `col'.
+2012-08-08 Eric S. Raymond <esr@thyrsus.com>
- * src/preproc/tbl/table.cpp (horizontal_span, table_entry): Make
- `start_col' and `end_col' of type `int'.
- (vertical_rule): Make `col' of type `int'.
+ TBLization, as discussed on the list. There's a rewrite of
+ this file in panning, but this gets the content clean for now.
- * src/preproc/grn/hdb.cpp (DBRead): Protect call to getc with check
- for EOF.
+ * tmac/groff_mdoc.man: In this file.
- * src/preproc/refer/label.y (uppercase_array, lowercase_array):
- New arrays.
- (format_serial): Use them to remove dependency on ASCII.
+2012-08-09 Werner LEMBERG <wl@gnu.org>
- * src/devices/grops/ps.cpp (ps_printer::define_encoding): Fix
- compiler warning.
- * src/devices/grops/psrm.cpp (resource_manager::supply_resource):
- Ditto.
-
- * src/devices/grotty/tty.cpp (tty_font::load_tty_font): Fix
- compiler warnings.
- (glyph): Change type of `hpos' to `int'.
-
- * src/devices/lbp/lbp.cpp (strsep): Removed. Unused.
- * src/devices/lbp/lbp.h (splinerel): Fix compiler warnings.
-
- * src/utils/tfmtodit.cpp (gf::load): Fix compiler warnings.
-
- * src/utils/pfbtops/pfbtops.c (get_text): Fix compiler warning.
-
-2004-04-16 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grolbp/lbp.h, src/preproc/grn/gprint.h,
- src/preproc/grn/hgraph.cpp, src/preproc/grn/hpoint.cpp,
- src/preproc/html/pushback.cpp, src/preproc/html/pushback.h: Use
- `double' instead of `float' everywhere.
- * src/preproc/grn/main.cpp: Use `double' instead of `float'
- everywhere.
- (main): Add return value.
- * src/preproc/grn/hdb.cpp: Use `double' instead of `float'
- everywhere.
- Update all user functions.
-
- * src/include/search.h, src/include/ptable.h, src/include/printer.h,
- src/preproc/eqn/box.h, src/preproc/pic/object.h,
- src/preproc/refer/refer.h, src/preproc/tbl/table.h,
- src/preproc/tbl/table.cpp, src/roff/troff/env.h,
- src/roff/troff/div.h, src/roff/troff/token.h, src/roff/troff/node.h,
- src/roff/troff/input.cpp, src/roff/troff/request.h,
- src/roff/troff/node.cpp: Don't mix `struct' and `class' in forward
- declarations.
-
- * src/utils/indxbib/signal.c: Include stdlib.h.
-
-2004-04-14 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * tmac/s.tmac (@init, RP): Allow initialization of the PO register
- before the first page.
-
-2004-04-14 Thomas Klausner <wiz@netbsd.org>
-
- * tmac/doc-common (doc-volume-as-*): Use lowercase names.
- (doc-operating-system-*): Updated.
- * tmac/doc-syms (doc-str-St-*): Various small fixes.
- (doc-str-Lb-*): Add more library names.
-
-2004-04-10 Art Haas <ahaas@airmail.net>
-
- * src/utils/hpftodit/hpuni.cpp (hp_msl_to_unicode_list): Don't
- use anonymous type.
-
-2004-04-09 Art Haas <ahaas@airmail.net>
-
- * src/utils/tfmtodit.cpp (lig_chars): Don't use anonymous type.
-
-2004-04-09 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * arch/misc/shdeps.sh: Generate better comment for sed script.
-
-2004-04-08 Art Haas <ahaas@airmail.net>
+ Provide proper Unicode mapping from and to dotless j.
* src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list),
- src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list),
- src/libs/libgroff/uniuni.cpp (unicode_decompose_list),
- src/preproc/eqn/box.cpp (param_table), src/preproc/grn/hgraph.cpp
- (polyfill), src/preproc/grn/main.cpp (polyfill),
- src/preproc/refer/command.cpp (command_table),
- src/utils/tfmtodit.cpp (lig_table): Don't use anonymous types (which
- gcc 3.5 doesn't like).
-
-2004-04-08 Werner LEMBERG <wl@gnu.org>
-
- Removing many compiler warnings. groff should now compile with
- a C++ compiler used for C files also. [Simple variable renamings
- to avoid shadowing aren't logged in detail.]
-
- * src/devices/grodvi/dvi.cpp: Some local variable renamings.
- (draw_dvi_printer::draw) ['c']: Enclose in block.
-
- * src/devices/grohtml/post-html.cpp: Some local variable renamings.
- (page::add_line): Fix typos.
- * src/devices/grohtml/html-text.cpp: Some local variable renamings.
-
- * src/devices/grolbp/lbp.cpp: Don't define _GNU_SOURCE.
- Some local variable renamings.
- * src/devices/grolbp/lbp.h: Some local variable renamings.
-
- * src/devices/grolj4/lj4.cpp, src/devices/grotty/tty.cpp: Some local
- variable renamings.
-
- * src/libs/libbib/index.cpp (index_search_item_iterator::get_tag):
- Remove redundant local variable declaration.
- * src/libs/libbib/map.c (mapread, unmap): Don't use K&R style.
- Don't use `caddr_t' but `void *'.
- Enclose functions with `extern "C"' for C++.
-
- * src/libs/libdriver/input.cpp (remember_filename,
- remember_source_filename): Use cast for string constant.
-
- * src/libs/libgroff/font.cpp, src/libs/libgroff/fontfile.cpp,
- src/libs/libgroff/nametoindex.cpp, src/libs/libgroff/paper.cpp,
- src/libs/libgroff/geometry.cpp: Some local variable renamings.
- * src/libs/libgroff/iftoa.c, src/libs/libgroff/itoa.c: Don't use K&R
- style.
- Enclose functions with `extern "C"' for C++.
- * src/libs/libgroff/quotearg.c (TRUE,FALSE): Define as macros.
- (needs_quoting): Return `int'.
- (quote_arg): Add proper casts to malloc and realloc.
- * src/libs/libgroff/spawnvp.c: Compile code only for MS-DOS and
- various MS Windows environments.
- (spawnvp_wrapper): Add proper cast to malloc.
-
- * src/preproc/eqn/box.h: Remove redundant declarations of
- `make_script_box', `make_mark_box' and `make_lineup_box'.
- * src/preproc/eqn/eqn.y: Remove redundant declaration of `strsave'.
- * src/preproc/eqn/script.cpp, src/preproc/eqn/pile.cpp: Some local
- variable renamings.
-
- * src/preproc/grn/hpoint.cpp: Some local variable renamings.
- * src/preproc/grn/hgraph.cpp: Some local variable renamings.
- (dx, dy): Renamed functions to...
- (deltax, deltay): This.
- * src/preproc/grn/main.cpp: Some local variable renamings.
- (deffont): Add `const'.
- (initpic, conv): Use cast for string constant.
-
- * src/preproc/html/pre-html.cpp: Some local variable renamings.
- (makeFileName, alterDeviceTo, addZ): Use cast for string constant.
- (char_buffer::run_output_filter): Second argument is unused.
- * src/preproc/html/pushback.cpp: Some local variable renamings.
-
- * src/preproc/pic/pic.y: Remove redundant declaration of `do_copy'.
- * src/preproc/pic/object.cpp: Some local variable renamings.
-
- * src/preproc/refer/label.y (lookup_label): Remove redundant
- declaration of local variable.
-
- * src/preproc/soelim.cpp: Remove redundant declaration of
- `interpret_lf_args'.
-
- * src/preproc/tbl/main.cpp: Some local variable renamings.
-
- * src/roff/groff/groff.cpp (main): Use cast for string constant.
- * src/roff/groff/pipeline.c: Enclose declarations of `error',
- `c_fatal', and `i_to_a' with `extern "C"' for C++.
- Don't use C++-style comments.
-
- * src/roff/troff/env.h: Remove redundant declaration of `title'.
- * src/roff/troff/node.h, src/roff/troff/env.cpp,
- src/roff/troff/div.cpp, src/roff/troff/node.cpp: Some local variable
- renamings.
- * src/roff/troff/div.h: Remove redundant declaration of
- `end_diversions'.
- * src/roff/troff/troff.h: Remove redundant declaration of
- `cleanup_and_exit'
- * src/roff/troff/input.cpp: Remove redundant declaration of
- `handle_first_page_transition' and `process_input_stack'.
-
- * src/utils/hpftodit.cpp: Some local variable renamings.
-
- * src/utils/indxbib/signal.c: Enclose functions with `extern "C"'
- for C++.
- Don't define RETSIGTYPE.
- * src/utils/indxbib/indxbib.cpp: Some local variable renamings.
-
- * src/utils/pfbtops/pfbtops.cpp: Don't use K&R style.
- (error): Use `const' in argument.
- (main): Remove redundant declaration of `optind'.
- Move declaration of `Version_string' to top-level.
-
- * PROBLEMS: Document difficulties compiling signal.c if a C++
- compiler is used for C.
-
-2004-04-07 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.sub (DISTCLEANFILES): Add `test-groff'.
-
-2004-04-06 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- Make scripts like nroff.sh and neqn.sh portable across various
- (Unix-like) shell implementations from Cygwin, MSYS, etc., which use
- non-POSIX path separators. The idea is to extend those scripts to
- decide at run-time (of the script) which path separator to use.
-
- * arch/misc/Makefile.sub: New file.
- * arch/misc/shdeps.sh: New file, generating OS dependency fixups.
- This script handles @GROFF_BIN_PATH_SETUP@, replacing it with
- a proper definition of the variable `GROFF_RUNTIME'.
-
- * Makefile.in (SH_DEPS_SED_SCRIPT): New variable.
- (MDEFINES): Add SH_DEPS_SED_SCRIPT.
- (PROGDEPDIRS): New variable.
- `FORCE' it.
- (PROGDIRS): Add PROGDEPDIRS.
-
- * src/preproc/eqn/Makefile.sub (neqn): Call SH_DEPS_SED_SCRIPT.
- Don't substitute @SEP@ and @BINDIR@.
- * src/preproc/eqn/neqn.sh: Use @GROFF_BIN_PATH_SETUP@.
- (PATH): Use GROFF_RUNTIME.
-
- * src/roff/nroff/Makefile.sub (nroff): Call SH_DEPS_SED_SCRIPT.
- Don't substitute @SEP@ and @BINDIR@.
- * src/roff/nroff/nroff.sh: Use @GROFF_BIN_PATH_SETUP@.
- (PATH): Use GROFF_RUNTIME.
-
-2004-04-05 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * src/roff/nroff/nroff.sh: Implement work-around for sh.exe from
- Cygwin which doesn't handle stderr correctly.
-
-2004-03-08 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.comm (install_dev, uninstall_dev): Protect `for' loops
- against empty argument. Problem reported by <cgd@broadcom.com>.
-
-2004-03-05 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * Makefile.in (SEP): Replaced with...
- (RT_SEP, SH_SEP): Separators for the target platform's native path
- separator and the build environment, respectively.
- (fontpath, tmacpath): Use RT_SEP.
- (MDEFINES): Updated.
-
- * doc/Makefile.sub (GROFF_BIN_PATH): Use SH_SEP.
- * src/preproc/eqn/Makefile.sub (neqn): Use SH_SEP.
- * src/roff/nroff/Makefile.sub (nroff): Use SH_SEP.
-
-2004-03-05 Werner LEMBERG <wl@gnu.org>
-
- * font/devlj4/Makefile.sub (LJ4RES): Set to 1200. This helps to
- reduce alignment problems with newer printers which use built-in
- TrueType fonts (instead of the older Intellifonts). The ideal
- solution is to provide a second set of groff metric files, but this
- is extremely time-consuming to produce, given that HP's metric
- files are very rudimentary.
+ src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list): Add it.
-2004-03-01 Werner LEMBERG <wl@gnu.org>
+2012-08-08 Eric S. Raymond <esr@thyrsus.com>
- * src/devices/grolj4/lj4.cpp (main): Fix argument of getopt_long.
- s/operand/argument/ in error message.
+ Added Unicode code point for dotless j.
-2004-03-01 Keith Marshall <keith.d.marshall@ntlworld.com>
+ * man/groff_char.man: In this file.
- * src/roff/groff/groff.cpp (main): Don't allow option -o if -Thtml
- is in use.
+2012-08-08 Werner LEMBERG <wl@gnu.org>
-2004-03-01 Antti Kantee <pooka@netbsd.org>
+ * man/groff_char.man: Clean-ups.
- * tmac/s.tmac (XE): Fix error message.
+2012-08-08 Eric S. Raymond <esr@thyrsus.com>
-2004-02-27 Jeff Conrad <jeff_conrad@msn.com>
+ Elimination of nasty presentation-level macro tangles makes
+ structural translation to XML possible.
- * src/include/nonposix.h (write, dup, dup2, close) [_MSC_VER]:
- New macros.
+ * man/groff_char.man: Clean up the mess, use real TBL tables.
- * src/roff/groff/pipeline.c: Declare strcasecmp.
- (run_pipeline) [_WIN32]: Use function name variants which don't
- start with `_'.
- Fix stream handling.
+2012-07-23 Eric S. Raymond <esr@thyrsus.com>
-2004-02-27 Keith Marshall <keith.d.marshall@ntlworld.com>
+ More elimination of low-level troff hackery in the documentation
+ so it can be lifted to structural markup.
- * src/include/nonposix.h: Fix declaration of `system_shell_name'.
- Declare `spawnvp_wrapper' and macro definitions of spawnvp only
- for platforms which use the native Win32 runtime libraries.
- (FLUSH_INPUT_PIPE) [_UWIN]: Provide non-empty version.
+ * tmac/groff_me.man: Use TBL rather than wacky diversions and .ti
+ requests.
- * src/libs/libgroff/quotearg.c (QUOTE_ARG_MALLOC_ERROR,
- QUOTE_ARG_REALLOC_ERROR): Fix string.
+2012-07-24 Werner LEMBERG <wl@gnu.org>
- * src/preproc/html/pre-html.cpp: Remove declaration of
- `spawnvp_wrapper'.
- Don't use __MINGW32__.
- s/DEBUG_FILE/DEBUG_FILE_DIR/.
- (DEBUG_TEXT, DEBUG_NAME, DEBUG_FILE) [DEBUGGING]: New macros.
- (OUTPUT_STREAM, PS_OUTPUT_STREAM, REGION_OUTPUT_STREAM): New macros.
- (char_buffer::run_output_filter) [MAY_FORK_CHILD_PROCESS]: Fix
- calls to `set_redirection' and `WAIT'.
- [MAY_SPAWN_ASYNCHRONOUS_CHILD]: Remove unused variable `i' and `j'.
- Fix calls to `set_redirection' and `save_and_redirect'.
- (char_buffer::do_html, char_buffer::do_image) [DEBUGGING]: Fix calls
- to `set_redirection' and `save_and_redirect'.
- (usage): Fix message.
- (makeTempFiles, main): Use `DEBUG_FILE'.
+ Fix appearance of groff.texinfo's HTML output.
-2004-02-21 Werner LEMBERG <wl@gnu.org>
+ Cartouches within an `example' environment don't work.
- * src/roff/troff/troff.h (WARN_TOTAL): Fix value.
+ * doc/groff.texinfo (CartoucheExample, endCartoucheExample): New
+ macros. Use them where appropriate.
-2004-02-21 Keith Marshall <keith.d.marshall@ntlworld.com>
+2012-07-17 Ingo Schwarze <schwarze@usta.de>
- * src/libs/libgroff/quotearg.c: New file, providing proper argument
- quoting for MSVC's spawn* and exec* functions.
- * src/libs/libgroff/spawnvp.c: New file, providing a wrapper around
- spawnvp with proper quoting for MSVC.
+ [mdoc] Make `Fl' correctly restore fonts.
- * src/libs/libgroff/assert.cpp (program_name),
- src/libs/libgroff/new.cpp (program_name): Declare as `extern "C"'.
- * src/libs/libgroff/Makefile.sub (OBJS, CSRCS): Updated.
+ * tmac/doc.tmac (doc-flag-recursion): Do it.
- * src/roff/troff/input.cpp (program_name): Declare as `extern "C"'.
+2012-07-07 Eric S. Raymond <esr@thyrsus.com>
- * src/include/error.h (program_name): Declare as `extern "C"'.
- * src/include/nonposix.h [__MSDOS__ ...]: Handle spawnvp.
+ * src/preproc/eqn/eqn.man, src/preproc/grn/grnn.man,
+ src/devices/grodvi/grodvi.man, src/devices/grolj4/grolj4.man,
+ src/devices/grops/grops.man, src/utils/lkbib/lkbib.man,
+ src/utils/indxbib/indxbib.man, src/utils/tfmtodit/tfmtodit.man,
+ src/utils/xtotroff/xtotroff.man:
+ Remove running text in the synopses of various manual pages,
+ as it badly screws up attempts to mechanically parse them.
-2004-02-21 Jeff Conrad <jeff_conrad@msn.com>
+ * contrib/mom/groff_mom.man: Use .URL rather than .UR/.UE, as this is
+ now preferred for manual pages.
- * src/preproc/html/pre-html.cpp [__CYGWIN__ ...]: Declare
- spawnvp_wrapper.
- [MAY_SPAWN_ASYNCHRONOUS_CHILD]: Declare i and j.
+2012-07-03 Werner LEMBERG <wl@gnu.org>
-2004-02-20 Jeff Conrad <jeff_conrad@msn.com>
+ Fix Unicode mapping of Greek stroked and curly phi.
- * src/roff/groff/pipeline.c (cmd) [__MSDOS__ || ...]: New global
- variable.
- (sbasename) [__MSDOS__ || ...]: New function.
- (system_shell_name) [__MSDOS__ || ...]: Use a different, more
- generic algorithm.
- (system_shell_dash_c, is_system_shell) [__MSDOS__ || ...]: Updated.
- (run_pipeline) [_WIN32]: Use _XXX variants for some macros instead
- of XXX.
- Use STDOUT_FILENO instead of hardcoded file handle.
- (signal_catcher) [__MSDOS__]: Moved to non-_WIN32 section.
+ Problem reported by Alkis Georgopoulos <alkisg@gmail.com>;
+ see
-2004-02-19 Werner LEMBERG <wl@gnu.org>
+ https://bugs.launchpad.net/ubuntu/+source/groff/+bug/1008115
- * src/roff/troff/div.cpp: Include nonposix.h after troff.h to
- avoid warnings w.r.t. redefinition of P_tmpdir for some compilers.
+ * src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list): Flip
+ values of U+03C6 and U+03D5.
-2004-02-18 Werner LEMBERG <wl@gnu.org>
+2012-06-13 Deri James <deri@chuzzlewit.demon.co.uk>
- * font/devlj4/Makefile.sub (DEVFILES): Updated to contain all
- new font and mapping files.
+ * src/devices/gropdf/gropdf.pl: When using variable page
+ sizes (with \X'papersize ...') ensure final page is correct
+ size.
-2004-02-18 Jeff Conrad <jeff_conrad@msn.com>
- Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * src/include/nonposix.h (FLUSH_INPUT_PIPE): New macro to empty
- an input pipe. This is needed for the MSVC compiler to make troff's
- `-o' option work.
-
- * src/roff/troff/div.cpp: Include nonposix.h.
- (cleanup_and_exit): Call FLUSH_INPUT_PIPE.
-
-2004-02-17 Werner LEMBERG <wl@gnu.org>
-
- * font/devlj4/generate/special.awk: New script.
- * font/devlj4/generate/Makefile (S): Use special.awk.
- * font/devlj4/*: Regenerated, including the following new files:
- Arial (AR, AB, AI, ABI), Times New Roman (TNRR, TNRB, TNRI, TNRBI),
- MS Symbol (SYMBOL), Wingdings (WINGDINGS).
- * NEWS: Document new lj4 fonts and revised hpftodit.
-
-2004-02-17 Paco Andrs Verd <pandres@dragonet.es>
-
- * src/devices/grolbp/lbp.h (vmdvarc): Fix formatting string.
-
-2004-01-25 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/progname.cpp: Replaced with...
- * src/libs/libgroff/progname.c: New file.
- * src/libs/libgroff/Makefile.sub: Updated accordingly.
-
-2004-01-17 Werner LEMBERG <wl@gnu.org>
-
- * font/devlj4/generate/Makefile (SYMBOL): Use 9nb28703.tfm.
-
-2004-01-16 Jeff Conrad <jeff_conrad@msn.com>
-
- * font/devlj4/generate/wingdings.map,
- font/devlj4/generate/symbol.map: Include unnamed glyphs.
- Use groff glyph names where possible.
- * src/devices/grolj4/lj4_font.man: Minor updates.
-
-2004-01-13 Werner LEMBERG <wl@gnu.org>
-
- * tmac/www.tmac (DC): Handle TTY devices.
-
- * doc/webpage.ms: Document viewCVS from ffii.org.
- * NEWS, README: Updated.
-
- * src/roff/groff/groff.man: Mention lj4_font man page.
-
- * font/devlj4/generate/Makefile (SYMBOLMAP, WINGDINGSMAP): New
- variables.
- (FONTS): Add SYMBOL and WINGDINGS.
- (SYMBOL, WINGDINGS): New targets.
-
-2004-01-13 Jeff Conrad <jeff_conrad@msn.com>
-
- * src/devices/grolj4/lj4_font.man: New man page.
- * src/devices/grolj4/Makefile.sub (MAN5): New variable.
- * src/devices/grolj4.man: Mention lj4_font man page.
-
- * src/utils/hpftodit/hpftodit.cpp (read_map): Handle line comments.
- * src/utils/hpftodit/hpftodit.man: Document it.
- (CW): New macro.
- Remove details about fonts (which are now in lj4_font.man).
-
- * font/devlj4/generate/symbol.map,
- font/devlj4/generate/wingdings.map: New files.
-
-2004-01-12 Werner LEMBERG <wl@gnu.org>
-
- * README: Mention ffii's viewcvs access.
-
-2004-01-09 Werner LEMBERG <wl@gnu.org>
-
- * font/devlj4/generate/special.map: Map MSL 228 to U+221F.
-
-2004-01-09 Jeff Conrad <jeff_conrad@msn.com>
-
- Revert most of the change from 2004-01-03 to better control used
- symbol sets.
-
- * src/utils/hpftodit/hpftodit.cpp (symbol_set): New structure.
- (text_symbol_sets, special_symbol_sets): New arrays.
- (symbol_set_table): New global variable.
- (read_symbol_sets): Use search order given in the text_symbol_sets
- and special_symbol_sets arrays. If command line flag -a is not
- given, search both arrays.
- (output_charset): Require x_height_tag only for command line flag -i.
-
-2004-01-06 Werner LEMBERG <wl@gnu.org>
-
- Implement string-valued registers \n[.m] and \n[.M] to return the
- name of the current drawing and background color, respectively.
-
- * src/roff/troff/symbol.h: Moved to...
- * src/include/symbol.h: Here.
- Small fixes to make it work outside of the `troff' directory.
- * src/roff/troff/symbol.cpp: Moved to...
- * src/libs/libgroff/symbol.cpp: Here.
- Small fixes to make it work outside of the `troff' directory.
-
- * src/include/Makefile.sub (HDRS), src/libs/libgroff/Makefile.sub
- (OBJS, CCSRCS), src/roff/troff/Makefile.sub (OBJS, CCSRCS, HDRS):
- Updated.
+2012-05-24 Werner LEMBERG <wl@gnu.org>
- * src/include/color.h: Include symbol.h.
- (color): Add new field `nm'.
- * src/libs/libgroff/color.cpp (color::color): Updated.
+ * src/roff/grog/grog.pl (process): Fix .so handling.
- * src/roff/troff/dictionary.cpp, src/roff/troff/div.cpp,
- src/roff/troff/node.cpp, src/roff/troff/number.cpp,
- src/roff/troff/reg.cpp: Don't include symbol.h.
+ This does the same as the previous commit.
- * src/roff/troff/env.cpp: Don't include symbol.h.
- (environment::get_glyph_color_string,
- environment_get_fill_color_string): New member functions.
- (init_env_requests): Handle `.m' and `.M' registers.
- * src/roff/troff/input.cpp: Don't include symbol.h.
- (default_symbol): Moved to symbol.cpp/symbol.h.
- (do_glyph_color, do_fill_color, define_color): Pass symbol name
- to color constructor.
- * src/roff/troff/env.h: Updated.
+2012-05-24 Denis M. Wilson <dmw@oxytropis.plus.com>
- * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
- Document new registers.
+ * src/roff/grog/grog.sh: Fix .so handling.
-2004-01-05 Werner LEMBERG <wl@gnu.org>
+ See
- * src/roff/troff/node.cpp (space_node::get_breakpoints,
- space_node::nbreaks): Protect against zero `next' field.
+ http://lists.gnu.org/archive/html/bug-groff/2012-05/msg00000.html
-2004-01-03 Jeff Conrad <jeff_conrad@msn.com>
+ for the report and the bug fix.
- In hpftodit, use the symbol sets offered in the TFM.
+2012-05-24 Ivan Shmakov <oneingray@gmail.com>
- * src/utils/hpftodit/hpftodit.cpp (NO_GLYPH): New constant.
- (symbol_set, text_symbol_sets, special_symbol_sets,
- symbol_set_table): Removed.
- (get_printcode): Removed.
- (read_symbol_sets): Initialize `symbol_set' field with
- `NO_SYMBOL_SET'.
- Simplify code to just use the `kind' value.
- (output_charset): Improve output formatting.
- (dump_symbols): Simplified.
+ Add some generic fallback characters.
-2004-01-02 Werner LEMBERG <wl@gnu.org>
+ * tmac/fallbacks.tmac: New file.
+ * tmac/troffrc: Include it.
+ * tmac/Makefile.sub (NORMALFILES): Include it.
- * font/devlj4/generate/text.map: Add more MSL numbers.
+2012-05-20 Deri James <deri@chuzzlewit.demon.co.uk>
-2004-01-02 Jeff Conrad <jeff_conrad@msn.com>
+ * doc/groff.texinfo: Add extra info about `.asciify'.
+ Document new gropdf options -u and -s.
- * src/utils/hpftodit/hpftodit.cpp (is_decomposed): New macro.
- (text_symbol_sets): Add more symbol sets.
- (debug_flag): New static variable (moved from `main').
- (get_printcode, show_symset): New functions.
- (main): Remove `debug_flag'.
- (output_charset): Use `show_symset'.
- (dump_symbols): Use `show_symset'.
- Print symsets for all glyphs.
- (read_map): Actually call `unicode_to_ucode_make' but this time
- correctly.
+ * src/devices/gropdf/gropdf.man: Remove references to Type 42 fonts,
+ they do not work in PDFs.
+ Document new option -s which adds `statistics' line to end of PDF
+ file showing number of pages in document. This has always been the
+ default behaviour (to add this line), all other software seems to
+ ignore it as intended, but `gs' sometimes complains, so the default
+ is now to omit the statistics.
+ Document new option -u[cmapfilename] to allow a user ToUnicode CMap
+ instead of gropdf's default. If no `cmapfilename' given then do not
+ include any ToUnicode CMap.
-2004-01-01 Werner LEMBERG <wl@gnu.org>
+ * src/devices/gropdf/gropdf.pl <top>: Allow `bundled' flags on
+ command line (i.e. -de = -d -e).
+ Use $RT_SEP as multi path separator, not hard coded `:'. Update all
+ users.
+ New flags -u and -s.
+ Once a custom papersize has been set as \X'papersize x,y' make it
+ sticky so all following pages use custom size.
+ When importing pdf with \X'pdf: pdfpic ...' do not compress objects
+ which are already compressed! This caused problems with PDFs
+ created with ImageMagick, now fixed.
+ (IsText, PutLine, do_t): The troff `u' command can contain a kerning
+ adjustment number, this was not being handled, now fixed.
+ (do_c): The troff `c' command was not being handled correctly, now
+ fixed.
+ (FindChar, RemapChr, do_N): Handle fonts with more than 255 glyphs.
+ ($ucmap): Define CMap ToUnicode to convert ligatures
+ (fl,fi,ff,ffl,ffi) back to individual characters, useful for
+ cut'n'paste and text searching.
+ (LoadFont): Handle it.
+ (ToPoints, GetPoints): Handle `z' unit.
+ (do_x, FixPDFColour, PutHotSpot): Allow Annotation colour to be
+ groff colour, i.e. 0-65535 *3, or #rrggbb, or #rrrrbbbbgggg.
+ (do_p):The papersize width/length in switch -p were reversed,
+ corrected.
- * font/devlj4/generate/text.map, font/devlj4/generate/special.map:
- Fix placement of comments.
+ * src/devices/gropdf/Makefile.sub (gropdf): Use $RT_SEP.
+ Use $fontpath rather than $fontdir (this ensures site-font is
+ included in searches).
-2004-01-01 Jeff Conrad <jeff_conrad@msn.com>
-
- * src/utils/hpftodit/hpftodit.cpp (main): Read map file also if
- option `-d' is given.
- (output_charset): Improve warning messages to give more information.
- (dump_symbols): Make information more precise.
- (usage): Updated.
- (read_map): Don't call unicode_to_ucode_name; the glyph names must
- appear as-is and shouldn't be decomposed.
-
-2003-12-31 Werner LEMBERG <wl@gnu.org>
-
- * src/utils/hpftodit/hpftodit.cpp (dump_tags): Handle posture_tag.
- * font/devlj4/generate/Makefile (IFLAG): Updated to new units.
- (FONTS): Add TrueType font families Arial and Times New Roman.
- (TNRR, TNRB, TNRI, TNRBI, AR, AB, AI, ABI): New targets.
- * font/devlj4/generate/text.map: Fix Unicode values of `fi' and
- `fl'.
-
-2003-12-31 Jeff Conrad <jeff_conrad@msn.com>
-
- * test-groff.in (SEP): Quote value.
- * src/roff/troff/node.cpp (suppress_node::tprint): Change type of
- `tem' to `char*' to avoid deallocation of a pointer to a constant
- object which some compilers don't like.
-
-2003-12-31 Werner LEMBERG <wl@gnu.org>
-
- * font/devlj4/generate (text.map, special.map): Rewritten to work
- with the new hpftodit version.
-
-2003-12-30 Jeff Conrad <jeff_conrad@msn.com>
-
- * src/utils/hpftodit/hpftodit.cpp (output_charset): Emit HP symbol
- set and 8bit character code for all glyphs also.
-
-2003-12-30 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/strcasecmp.c: Updated from gnulib.
-
-2003-12-29 Werner LEMBERG <wl@gnu.org>
+ * tmac/pdf.tmac (PDFBOOKMARK.VIEW, PDFHREF.VIEW, PDFPAGE.Y): Fix
+ strings.
+ (pdfbookmark): Correct handling of bookmark levels.
+ Convert \[em] to hyphen in bookmarks
+ Rather use -N than -T for "named" bookmarks (-T already used for "tag"
+ in pdfmark.tmac)
+ (.pdfclean): New macro which attempts to asciify bookmark text.
+ (.pdfpagename): New wrapper macro for \X'pdf: pagename'.
+ (.pdfswitchtopage): New wrapper macro for \X'pdf: switchtopage'.
- More fixes for MSVC compiler.
+2012-03-10 Werner LEMBERG <wl@gnu.org>
- * doc/Makefile.sub (GROFF_BIN_PATH): Use $(SEP).
+ Fix compiler warnings.
- * src/include/nonposix.h (STDIN_FILENO, STDOUT_FILENO,
- STDERR_FILENO) [_MSC_VER]: Define conditionally.
- (getpid) [_MSC_VER]: Remove.
- Include direct.h and process.h conditionally.
+ * src/preproc/html/pre-html.cpp (alterDeviceTo): Avoid ambiguous
+ if-else clause.
- * src/roff/troff/node.cpp (suppress_node::tprint): Don't use
- parentheses for a_delete.
+ * src/preproc/grn/main.cpp (sccsid): Comment out.
- * src/utils/lookbib/lookbib.cpp: Include nonposix.h.
+ * src/roff/troff/number.cpp (parse_expr) <case '*'>: Add cast.
- * test-groff: Replaced with...
- * test-groff.in: This new template to handle path separator
- properly.
+ * src/devices/xditview/Makefile.sub (EXTRA_CFLAGS): Add `-Dlint' so
+ that unused static ID arrays don't cause a warning.
- * configure.ac: Check for direct.h and process.h.
- Generate test-groff script.
- * configure, src/include/config.hin: Regenerated.
+ (Some) problems reported by Bjarni Ingi Gislason
+ <bjarniig@rhi.hi.is>.
-2003-12-28 Werner LEMBERG <wl@gnu.org>
+2012-03-05 Werner LEMBERG <wl@gnu.org>
- Add integral extension glyph.
- Add new option `-x' to afmtodit to suppress use of built-in AGL.
-
- * font/devhtml/R.proto, font/devutf8/R.proto: Add `u23AE'.
+ * tmac/an-ext.tmac (SY): Handle argument with spaces correctly.
- * font/devps/generate/textmap: Provide entry for `integralex' to
- override (old) PUA value of the AGL.
- * font/devps/generate/Makefile (SS): Add afmtodit option `-x'.
- * font/devps/*: Regenerated.
+ Problem reported by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>.
- * src/utils/afmtodit/afmtodit.pl: Add option `-x'.
- * src/utils/afmtodit/afmtodit.man, NEWS: Updated.
+2012-03-01 Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
-2003-12-27 Werner LEMBERG <wl@gnu.org>
+ [an-old] Fix warnings.
- Add forgotten `coproduct' symbol (already available for DVI).
+ * tmac/an-old.tmac (an-init): Insert missing braces.
- * font/devhtml/R.proto, font/devps/generate/textmap,
- font/devps/symbolmap, font/devutf8/R.proto, man/groff_char.man,
- src/libs/libgroff/uniglyph.cc, src/libs/libgroff/glyphuni.cpp: Add
- U+2210 (\[coproduct]).
+2012-02-26 Werner LEMBERG <wl@gnu.org>
-2003-12-26 Jeff Conrad <jeff_conrad@msn.com>
+ Update configuration files from `gnulib' and `config' repositories.
- hpftodit has been extended to handle TrueType metric files and
- more glyphs. See hpftodit.man for more details.
+ This also fixes a problem with `iconv' on Solaris 10, as reported in
- * src/utils/hpftodit/hpftodit.cpp: Include stdio.h, string.h,
- ctype.h, and unicode.h.
- s/msl/charcode/ everywhere since we now handle Unicode values also.
- (equal, NO, YES, MSL, SYMSET, UNICODE, UNICODE): New macros.
- Use it where appropriate.
- (MULTIPLIER): Replaced with...
- (multiplier): New global static variable.
- (scale): Updated.
- (tag_type): Add more TFM tags.
- (tag_name): New array.
- (ENUM_TYPE, FLOAT_TYPE): Removed.
- (BYTE_TYPE): New value assigned.
- (ASCII_TYPE, RATIONAL_TYPE): New enumeration values.
- (text_symbol_sets, special_symbol_sets): Extended to cover more
- sets.
- (check_type): Add return value.
- (check_units): Add parameters to get ppi and upem values.
- Handle TrueType TFM data.
- (output_font_name): New function.
- (output_charset): Add parameter to handle TFM type.
- Handle TrueType TFMs also.
- (em_fract): New macro.
- (dump_tags): Be much more verbose and handle more tags.
- (dump_ascii, dump_symbol_sets, dump_symbols): New functions.
- (hp_msl_to_ucode_name, unicode_to_ucode_name, is_uname): New
- functions.
- (read_map): Add parameter to handle TFM type.
- Handle both MSL and Unicode mappings.
- (main): Add two new command line options `-a' and `-q'.
- Updated to make use of new functions.
- (usage): Updated.
+ http://lists.gnu.org/archive/html/bug-groff/2012-02/msg00007.html
- * src/utils/hpftodit/hpuni.cpp: New file.
+ * configure.ac: Call `gl_LOCALCHARSET.
+ Call `AM_ICONV' as C++.
- * src/utils/hpftodit/Makefile.sub, src/utils/hpftodit/hpftodit.man:
+ * config.guess, config.rpath, config.sub, install-sh, mkinstalldirs:
Updated.
-2003-12-25 Werner LEMBERG <wl@gnu.org>
-
- * src/include/nonposix.h (read) [_MSC_VER]: Define.
-
-2003-12-24 Werner LEMBERG <wl@gnu.org>
-
- * src/utils/afmtodit/afmtodit.man: Some reformulations as suggested
- by Michail Vidiassov <master@iaas.msu.ru>.
-
-2003-12-20 Werner LEMBERG <wl@gnu.org>
-
- * font/devhtml/R.proto: Add u00{47,67}_0306, u00{53,73}_0327,
- and u0049_0307.
- Add missing latin-2 glyphs.
- * font/devutf8/R.proto: Add missing latin-2 glyphs.
-
- * tmac/troffrc: Load `composite.tmac' earlier.
-
- * tmac/dvi.tmac, tmac/ps.tmac, tmac/lbp.tmac: Add u00{47,67}_0306,
- u00{53,73}_0327, and u0049_0307.
- * tmac/X.tmac: Add u00{47,67}_0306.
- * tmac/tty-char.tmac: Use composite glyph names for readability.
-
- * NEWS: Updated.
-
- * src/include/unicode.h: Remove `extern' keywords.
-
-2003-12-20 Nilgn Belma Bugner <nilgun@superonline.com>
-
- * tmac/latin5.tmac: New file.
-
-2003-12-19 Werner LEMBERG <wl@gnu.org>
-
- Add some glyphs needed for Turkish.
-
- * font/devutf8/R.proto: Add u00{47,67}_0306, u00{53,73}_0327,
- and u0049_0307.
-
- * tmac/composite.tmac: Add `,' as a synonym for `ac' accent.
- * tmac/tty-char.tmac: Add representations for u00{47,67}_0306,
- u00{53,73}_0327, and u0049_0307.
-
-2003-12-18 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grops/ps.cc (ps_output::put_float): Revert change
- from 2001-10-04.
- Remove trailing zeros.
-
-2003-12-17 Werner LEMBERG <wl@gnu.org>
-
- Make \? transparent to end-of-sentence recognition.
-
- * src/roff/troff/input.cc (non_interpreted_node): Add
- `ends_sentence' member function.
-
-2003-12-16 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo: Document `dt' request correctly.
- Other minor typographical improvements.
-
-2003-12-10 Michail Vidiassov <master@iaas.msu.ru>
-
- * src/utils/afmtodit/Makefile.sub (afmtodit): Fix typo.
-
-2003-12-10 Richard Stallman <rms@gnu.org>
-
- * LICENSE: Better wording.
-
-2003-12-09 Werner LEMBERG <wl@gnu.org>
-
- * aclocal.m4 (GROFF_BROKEN_SPOOLER_FLAGS): Set default value to 0.
- * configure, NEWS: Updated.
-
-2003-12-08 Werner LEMBERG <wl@gnu.org>
-
- * FDL: Updated to version 1.2 (from www.gnu.org/copyleft).
-
-2003-12-07 Bernd Warken <bwarken@mayn.de>
-
- * LICENSE: Updated.
-
-2003-12-07 Werner LEMBERG <wl@gnu.org>
-
- * INSTALL: Improved.
-
-2003-12-05 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- Use path separator character of target platform for compiled-in
- default paths.
-
- * aclocal.m4 (GROFF_TARGET_PATH_SEPARATOR): New macro.
- * configure.ac: Use GROFF_TARGET_PATH_SEPARATOR.
- * configure: Regenerated.
- * Makefile.in (SEP): Use GROFF_PATH_SEPARATOR.
-
-2003-12-05 Werner LEMBERG <wl@gnu.org>
-
- * src/include/nonposix.h (PATH_SEP_CHAR): New definition.
- Replace `PATH_SEP[0]' with `PATH_SEP_CHAR' everywhere.
-
-2003-12-04 Bernd Warken <bwarken@mayn.de>
-
- * LICENSE: New file.
-
-2003-12-03 Werner LEMBERG <wl@gnu.org>
-
- * src/utils/afmtodit/afmtodit.pl: Comment out code which handles
- ligatures present in AFM files since groff currently only
- understands some standard ligatures and nothing else.
-
-2003-12-03 Jeff Conrad <jeff_conrad@msn.com>
-
- * src/roff/groff/groff.cpp (main): Don't run the spooler if
- option -v is given.
-
- * src/roff/groff/pipeline.c (run_pipeline) [_WIN32]: Fix error
- messages.
- Close stdout copy.
- Don't use Unix wait flags.
-
-2003-12-02 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/glyphuni.cpp, src/roff/troff/unicode.cpp,
- src/roff/troff/unicode.h, src/roff/troff/uniglyph.cpp,
- src/roff/troff/uniuni.cpp: Moved to...
- * src/libs/libgroff/glyphuni.cpp, src/libs/libgroff/unicode.cpp,
- src/libs/libgroff/unicode.h, src/libs/libgroff/uniglyph.cpp,
- src/libs/libgroff/uniuni.cpp: Here.
-
- * src/include/Makefile.sub.old (HDRS),
- src/libs/libgroff/Makefile.sub (OBJS, CCSRCS),
- src/roff/troff/Makefile.sub (HDRS, PBJS, CCSRCS): Updated.
+ * m4/codeset.m4, m4/glib21.m4, m4/iconv.m4, m4/lib-ld.m4,
+ m4/lib-link.m4, m4/lib-prefix.m4: Updated.
+ * m4/fcntl-o.m4, m4/localcharset.m4: New files.
-2003-12-01 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * src/preproc/htlp/pre-html.cpp (__tmpfile): Renamed to
- `DEBUG_FILE'.
- Updated all users.
-
-2003-12-01 Werner LEMBERG <wl@gnu.org>
-
- * groff.texinfo: Document special behaviour of `.vs 0'.
- Improve documentation of `cflags' request.
- * NEWS: Updated.
-
-2003-11-29 Werner LEMBERG <wl@gnu.org>
-
- * font/devlj4/generate/Makefile (CORONET): Use correct TFM.
- * font/devlj4/CORONET: Regenerated.
-
-2003-11-24 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/env.cpp (hyphen_trie::read_patterns_file): Fix loop
- if processing hyphenation patterns in traditional mode.
- Improve error messages.
-
-2003-11-20 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/node.cpp (troff_output_file::put_char_width,
- troff_output_file::put_char): Fix type of local variable `c'.
-
-2003-11-19 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/groff/pipeline.c (P): Removed. Updated all function
- declarations.
- (i_to_a): Removed. libgroff already provides this function.
- (run_pipeline) [_WIN32]: Don't use itoa but i_to_a.
-
-2003-11-18 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * src/roff/groff/pipeline.c (xstrsignal): Fix usage of
- HAVE_DECL_SYS_LIST.
-
-2003-11-17 Werner LEMBERG <wl@gnu.org>
-
- * COPYING: Use correct version.
-
-2003-11-11 Werner LEMBERG <wl@gnu.org>
-
- LynxOS 4.0.0 doesn't declare vfprintf.
-
- * configure.ac: Check for vfprintf.
- * configure: Regenerated.
- * src/include/lib.h: Handle `NEED_DECLARATION_VFPRINTF'.
- * src/include/config.hin: Regenerated.
-
-2003-11-10 Werner LEMBERG <wl@gnu.org>
-
- LynxOS 4.0.0 has snprintf (without declaration) but no vsnprintf.
-
- * configure.ac: Check for vsnprintf.
- * configure: Regenerated.
- * src/include/lib.h: Handle `NEED_DECLARATION_VSNPRINTF' and
- `HAVE_VSNPRINTF'.
- * src/include/config.hin: Regenerated.
-
-2003-11-09 Werner LEMBERG <wl@gnu.org>
-
- * aclocal.m4: Updated syntax to autoconf 2.59.
- (GROFF_HTML_PROGRAMS): Use AC_FOREACH.
- Don't check for gsos2.
- (GROFF_SRCDIR, GROFF_BUILDDIR): Removed. autoconf 2.59 provides
- working abs_top_srcdir and abs_top_builddir.
-
- * configure.ac: Updated syntax to autoconf 2.59.
- Don't call GROFF_SRCDIR and GROFF_BUILDDIR.
- Replace call to AC_DECL_SYS_SIGLIST with call to AC_CHECK_DECLS.
- * configure: Regenerated.
-
- * Makefile.in, doc/Makefile.in: s/@top_srcdir@/@abs_top_srcdir@/,
- s/@groff_top_builddir@/@abs_top_builddir@/.
-
- * src/roff/groff/pipeline.c (xstrsignal):
- s/SYS_SIGLIST_DECLARED/HAVE_DECL_SYS_SIGLIST/.
-
-2003-11-07 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grodvi/dvi.cpp (draw_dvi_printer::draw) ['a']: Always
- make start angle smaller than end angle to circumvent a bug in tpic
- handling of some versions of dvipdfm (and dvipdfmx).
-
-2003-10-30 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grops/grops.man: Improve section on creating EPS.
-
-2003-10-29 Werner LEMBERG <wl@gnu.org>
-
- * contrib/pic2graph/pic2graph.sh: Fix typo (-P-letter ->
- -P-pletter).
-
-2003-10-28 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo: Fix documentation of `.if'.
-
-2003-10-27 Michail Vidiassov <master@iaas.msu.ru>
-
- * src/utils/afmtodit/afmtodit.pl: Handle unmapped characters of
- the form `uniXXXX' also.
-
-2003-10-27 Werner LEMBERG <wl@gnu.org>
-
- * contrib/eqn2graph/eqn2graph.sh, contrib/grap2graph/grap2graph.sh,
- contrib/pic2graph/pic2graph.sh: Implement secure management of
- temporary files.
- Pass `-P-pletter' to groff to avoid data outside of the converted
- area -- some versions of `convert' (for example 5.3.8) don't check
- the bounding box of the image but always use a fixed image size
- (letter paper format).
- * contrib/eqn2graph/eqn2graph.man, contrib/grap2graph/grap2graph.man,
- contrib/pic2graph/pic2graph.man: Updated.
-
- * src/roff/groff/groff.man: Document $TMP and $TEMP.
-
-2003-10-26 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/pic/troff.cpp (troff_output::simple_circle,
- troff_output::simple_ellipse, troff_output::simple_arc,
- troff_output::simple_line, troff_output::simple_spline,
- troff_output::simple_polygon): Insert a space before arguments.
- (troff_output::set_fill): Emit `\&' before `\D'Fg...' since the
- latter doesn't produce a node, so the following `.sp -1' would do
- the wrong thing.
- Don't emit `.sp -1' after \M. This also doesn't produce a token
- (and we don't have to care about compatibility mode).
- (troff_output::set_color, troff_output::reset_color): Don't emit
- `.sp -1' after \M and \m.
-
- * src/roff/troff/input.cpp (old_have_input): New global variable.
- (input_stack::get): Handle `old_have_input'.
- (process_input_stack) <token::TOKEN_NEWLINE>: Call
- `trapping_blank_line' depending on `old_have_input', not
- `have_input'.
-
-2003-10-20 Keith Marshall <keith.d.marshall@ntlworld.com>
-
- * src/libs/libgroff/tmpfile.cpp [__MSDOS__, _Win32]
- (WIN32_TMPDIR_ENVVAR, MSDOS_TMPDIR_ENVVAR): New macros, providing
- default directory names for temporary files.
- [__MSDOS__, _Win32] (temp_init::temp_init): Use them.
-
- * src/roff/groff/pipeline.c [__MSDOS__]: Include stdlib.h.
- [__MSDOS__] (run_pipeline): Honour environment variables.
- Don't use `tmpnam' but `tempnam' to work around messy
- implementation.
-
- * README.MinGW: New file.
-
-2003-10-16 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/html/pre-html.cpp (write_upto_newline): Don't use
- `(*t)->next' without testing validity of `*t'.
- (usage): Make it more readable.
+ * Makefile.in: Updated.
-2003-10-16 Keith Marshall <keith.d.marshall@ntlworld.com>
+ * src/include/localcharset.h, src/libs/libgroff/config.charset,
+ src/libs/libgroff/localcharset.c: Updated.
- Make html device run under both MS-DOS and Win32.
+ * aclocal.m4, configure, src/include/config.hin: Regenerated.
- * src/preproc/html/pre-html.cpp (MAY_FORK_CHILD_PROCESS,
- MAY_SPAWN_ASYNCHRONOUS_CHILD): New macros to control whether
- spawn or fork+exec has to be used, and whether parent must sleep
- until the child process terminates. Used in
- `char_buffer::run_output_filter'.
- (copyofstdoutfd): Removed.
- (char_buffer): Replace `write_file_html' and `write_file_troff'
- member functions with `emit_troff_output' and `run_output_filter'.
- (DEVICE_FORMAT, HTML_OUTPUT_FILTER, IMAGE_OUTPUT_FILTER): New
- macros.
- (replaceFd): Replaced with...
- (set_redirection): New auxiliary function.
- (waitForChild): Replaced with...
- (save_and_redirect): New auxiliary function for.
+2012-02-20 Werner LEMBERG <wl@gnu.org>
- (char_buffer::do_html, char_buffer::do_image): Simplified, using new
- functions.
+ Update `gnulib' files.
-2003-10-14 Keith Marshall <keith.d.marshall@ntlworld.com>
+ The invocation was
- * aclocal.m4 (GROFF_SYS_NERR): Check stdlib.h also.
- (GROFF_LIBC): New function.
- * configure.ac: Call GROFF_LIBC.
- Check for `kill'.
- * configure: Regenerated.
+ gnulib-tool --add-import \
+ --dir=src/libs/gnulib \
+ wcwidth
- * src/include/lib.h: Handle __MINGW32__.
- * src/include/nonposix.h [_MSC_VER]: Handle __MINGW32__.
- Add macro for `pipe'.
- Define P_tmpdir.
+ Additionally, src/libs/gnulib/configure.ac was adjusted from a
+ `test' run as described in the change from 2010-12-13.
- * src/roff/groff/pipeline.c (run_pipeline): Handle `no_pipe'
- correctly.
+ * src/libs/gnulib/*: Updated.
- * src/utils/indxbib/signal.c (handle_fatal_signal) [!HAVE_KILL]:
- Implement.
+2012-02-15 Deri James <deri@chuzzlewit.demon.co.uk>
-2003-10-12 Werner LEMBERG <wl@gnu.org>
+ [gropdf] Fixes and omissions.
- * src/roff/groff/groff.cpp (help), src/devices/grops/ps.cpp (usage),
- src/roff/troff/input.cc (usage): Updated.
+ * src/devices/gropdf/gropdf.pl (<top>, do_u): Add facility to handle
+ track kerning (.tkf).
+ (do_x, do_p, do_t): If pages are reordered using `pagename' and
+ `switchtopage' keep track of outline bookmarks.
+ (do_x): Handle multiple files on gropdf command line, stitch
+ multiple groff_out files together. In the main read loop any argc
+ values not consumed by options are taken as input files and
+ processed in order. What prevented it working properly before is
+ the way an `x i' (initialize) record has been handled. It now
+ processes the initialization code only in the first file.
+ (PutHotSpot): Allow user to control size of hotspot bounding box on
+ clickable links by setting PDFHREF.LEADING
- * NEWS, doc/groff.texinfo: Updated.
+ * tmac/pdf.tmac (PDFHREF.LEADING): Adjust value.
+ (pdf*href): Pass value of PDFHREF.LEADING to gropdf.
-2003-10-12 Peter Miller <millerp@canb.auug.org.au>
+2012-02-10 Deri James <deri@chuzzlewit.demon.co.uk>
- * src/libs/libgroff/searchpath.cpp
- (search_path::open_file_cautious): New function which also handles
- `-' as stdin and stdout depending on the access mode.
- * src/include/searchpath.h (search_path): Updated.
+ [gropdf] Fix compatibility issues with pdfmark.
- * src/devices/grops/ps.cpp (main): Handle new `-I' switch.
- * src/devices/grops/ps.h: Include `searchpath.h'.
- * src/devices/grops/psrm.cpp (resource_manager::supply_resource):
- Open resource file with `include_search_path.open_file_cautious'.
- * src/devices/grops/grops.man: Document new `-I' switch.
+ * tmac/pdf.tmac (PDFHREF.VIEW.LEADING): Fix value.
+ (pdf:href.opt-X): Add check for -X option for .pdfhref.
- * src/devices/grodvi/dvi.cpp (main), src/devices/grolbp/lbp.cpp
- (main), src/devices/grolj4/lj4.cpp (main),
- src/devices/grotty/tty.cpp (main): Ignore new `-I' switch.
+2012-02-08 Werner LEMBERG <wl@gnu.org>
- * src/preproc/soelim/soelim.cpp (include_list_length, include_list):
- Replaced with...
- (include_search_path): New global variable.
- (include_path_append): Removed.
- (main): Use `include_search_path.command_line_dir' to handle `-I'.
- (do_file): Simplify, using new
- `include_search_path.open_file_cautious'.
+ * src/preproc/pic/main.cpp (do_file): Check for invalid characters.
- * src/roff/groff/groff.cpp (print_commands): Accept file handle as
- parameter.
- (main): Pass arguments to `-I' to both troff and devices.
- Improve handling of `-V'.
- * src/roff/groff/groff.man: Document changes to -I and -V.
+ Problem reported by Doug McIlroy <doug@cs.dartmouth.edu>.
- * src/roff/troff/input.cpp (include_search_path): New global
- variable.
- (next_file, source, ps_bbox_request, transparent_file,
- process_input_file): Use new
- `include_search_path.open_file_cautious'.
- (main) Handle `-I' switch.
- * src/roff/troff/node.cpp (troff_output_file::really_copy_file):
- Use new `include_search_path.open_file_cautious'.
- * src/roff/troff/node.h: New extern symbol `include_search_path'.
- * src/roff/troff/troff.man: Document new `-I' switch.
+2012-01-25 Ingo Schwarze <schwarze@usta.de>
-2003-09-15 Ruslan Ermilov <ru@FreeBSD.org>
+ [mdoc] * tmac/doc-syms: Fix meaning of XBD acronym.
- Support multiple calls of .Lb in LIBRARY section.
+2012-01-25 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
- * tmac/doc-common (doc-in-library-section): New register.
- (doc-section-library): New string.
- (Sh): Set `doc-in-library-section'.
- (Rd): Updated.
- * tmac/doc-syms (Lb): Insert breaks before and after arguments
- if in LIBRARY section.
- * tmac/doc.tmac (doc-save-global-vars): Updated.
- * NEWS, tmac/groff_mdoc.man: Updated.
+ * tmac/e.tmac (bl): Make it work inside blocks.
-2003-09-14 Ruslan Ermilov <ru@FreeBSD.org>
+ See threads starting with
- * tmac/doc-common (doc-default-operating-system): New variable.
- (Os): Use it.
+ http://lists.gnu.org/archive/html/groff/2011-12/msg00055.html
+ http://lists.gnu.org/archive/html/groff/2012-01/msg00000.html
-2003-09-08 Werner LEMBERG <wl@gnu.org>
+2012-01-10 Bruno Haible <bruno@clisp.org>
- * tmac/doc.tmac (doc-reset-reference): Handle data for `%I' also.
+ Fix handling of MAKEFLAGS variable.
-2003-08-31 Werner LEMBERG <wl@gnu.org>
+ * Makefile.in (MAKE_K_FLAGS): Improved definition,
+ as explained and discussed in
- * Makefile.comm: Use `test ... ||' in favor of `if test ...; then'.
- (install_dev, uninstall_dev): Check whether $(DEVSCRIPTS) and
- $(DEVFILES) are not empty.
- * Makefile.in: Use `test ... ||' in favor of `if test ...; then'.
+ http://lists.gnu.org/archive/html/groff/2012-01/msg00039.html
-2003-08-23 Stephen Gildea <http://www.gildea.com/stephen>
+2012-01-03 Ingo Schwarze <schwarze@usta.de>
- * src/preproc/refer/ref.cpp (reference::compute_sort_key): Always
- insert SORT_SEP. With certain combinations of sort specifications,
- refer sorted entries in the wrong order. In particular, entries
- with a missing field should be be sorted before all entries that
- have that field, before refer looks to the next field.
+ Improve parallel builds.
-2003-08-23 Werner LEMBERG <wl@gnu.org>
+ Some hdtbl and mom examples want PostScript formatting which
+ requires the `DESC' file to be ready; however, the top-level
+ `Makefile.in' doesn't currently enforce the proper order of building
+ of `font/dev' before `contrib/hdtbl', `contrib/mom', and so on.
- * src/utils/pfbtops/Makefile.sub (LINK.c): Define it so that the
- g++ linker is used. Reported by Mark J. Reed
- <mark.reed@turner.com>.
+ Given that `font/dev' and the contrib examples are in different
+ child processes of the recursive make system, it doesn't seem
+ possible to solve this using clean Makefile dependencies. We now
+ enforce the order by splitting the shell command invoking recursive
+ make in the top level `Makefile.in'.
-2003-08-16 Heinz-Jrgen Oertel <hj.oertel@surfeu.de>
+ * Makefile.in (ALLDIRS): Remove `OTHERDIRS'.
+ (dodirs): Updated.
+ (`$(TARGETS)'): Handle `OTHERDIRS' separately.
- Add key character `x' to tbl which makes tbl call a user-defined
- macro on a table cell.
+2012-01-03 Kristaps Dzonsons <kristaps@bsd.lv>
- * src/preproc/tbl/table.h (entry_modifier): Add `macro'.
- * src/preproc/tbl/table.cpp (block_entry::do_divert): Call
- `set_modifier' after printing the compatibility request.
- (set_modifier): Print call to `m->macro' if not empty.
- * src/preproc/tbl/main.cpp (entry_format::debug_print): Handle
- `macro'.
- (process_format): Implement cases `x' and `X'.
- * src/preproc/tbl/tbl.man, NEWS: Updated.
+ [mdoc] Add `-isoC-2011'.
-2003-08-15 Werner LEMBERG <wl@gnu.org>
+ * tmac/doc-syms (doc-str-St--isoC-2011): Add it.
+ * tmac/groff_mdoc.man: Document it.
- * doc/groff.texinfo: Minor fixes.
+2011-12-26 Deri James <deri@chuzzlewit.demon.co.uk>
-2003-08-09 Werner LEMBERG <wl@gnu.org>
+ * font/devpdf/Makefile.sub: Only build fonts on first `make'.
- * tmac/an-old.tmac [cR]: Fix redefinition of `bp'.
+2011-12-08 Werner LEMBERG <wl@gnu.org>
-2003-08-07 Werner LEMBERG <wl@gnu.org>
+ * doc/groff.texinfo (.tl): Improve documentation.
+ Wording suggested by Keith Marshall
+ <keithmarshall@users.sourceforge.net>.
- * doc/Makefile.sub: Not all shells expand wildcards in the `for'
- argument list to nothing if there is no file to match. Use `ls' as
- a protection, similar to autoconf.
+2011-12-01 Werner LEMBERG <wl@gnu.org>
- * Makefile.comm (install_dev, uninstall_dev): Protect `for' against
- empty argument lists.
+ [me] Fix behaviour of centered block.
+ Problem and possible fix reported in thread starting at
- * doc/groff.texinfo: Improve documentation how vertical spacing
- and line breaks interact.
- Other minor fixes.
+ http://lists.gnu.org/archive/html/groff/2011-11/msg00002.html
- * tmac/www.tmac: Initialize `www-htmlimage-gap'.
+ * tmac/e.tmac (`(c'): Always start with a new line.
-2003-08-03 Werner LEMBERG <wl@gnu.org>
+2011-12-01 Ingo Schwarze <schwarze@usta.de>
- * NEWS, src/devices/grops/grops.man: -b16 is necessary to produce
- EPS (using eps2eps or similar programs to compute the bounding box).
+ [man] Print volume headers like mdoc.
-2003-07-24 Werner LEMBERG <wl@gnu.org>
+ * tmac/an-old.tmac (an-init): Add default volume name if fifth
+ argument to `.TH' is missing.
- * doc/groff.texinfo: Use the new @/ command to avoid overlong lines.
- * doc/texinfo.tex: Updated from texinfo 4.6.
- * README.CVS: From now on we need texinfo 4.6.
+2011-11-22 Werner LEMBERG <wl@gnu.org>
-2003-07-23 Werner LEMBERG <wl@gnu.org>
+ * tmac/groff_man.man: Minor documentation improvements.
+ Suggested by Jeff Conrad <jeff_conrad@msn.com>.
- Add requests `dei1' and `ami1' for completeness.
+2011-11-14 Werner LEMBERG <wl@gnu.org>
- * src/roff/troff/input.cc (calling_mode): Remove
- CALLING_DISABLE_COMP.
- (comp_mode): New enumeration.
- (do_define_string, define_string, define_nocomp_string,
- append_string, append_nocomp_string): Updated.
- (do_define_macro): Add third parameter.
- (define_macro, define_nocomp_macro, define_indirect_macro,
- append_macro, append_nocomp_macro, append_indirect_macro): Updated.
- (define_indirect_nocomp_macro, append_indirect_nocomp_macro): New
- functions.
- (ignore): Updated.
- (init_input_requests): Add `dei1' and `ami1'.
+ * doc/groff.texinfo: Improve doc for calling undefined identifiers.
- * tmac/trace.tmac: Handle de1 and am1.
- (de): Improve tracing message.
- (am): Add missing `do'.
- (return): Use de1.
+2011-11-14 Werner LEMBERG <wl@gnu.org>
- * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
- Document new requests.
+ * src/preproc/tbl/tbl.man: Improve documentation of `_' and friends.
-2003-07-22 Heinz-Jrgen Oertel <hj.oertel@surfeu.de>
+2011-10-31 Werner LEMBERG <wl@gnu.org>
- Add option -G to .MPIMG to insert a gap between text and the image.
+ Fix compiler warnings.
- * tmac/www.tmac (www-finish-left-po, www-finish-right-ll,
- www-finish-left-ll): Updated.
- (www-image-just, www-image-gap, www-htmlimage-gap): New variables.
- (MPIMG): Make option -L and -R optional.
- Implement option -G.
+ * src/preproc/eqn/main.cpp (do_file), src/roff/troff/env.cpp
+ (environment::print_env), src/roff/troff/mtsm.cpp
+ (statem::display_state): Add syntactical sugar.
-2003-07-22 Gaius Mulley <gaius@glam.ac.uk>
+ * src/utils/tfmtodit/tfmtodit.cpp (char_info_word): Use `unsigned
+ char' for all members.
+ * src/devices/grohtml/html-text.cpp (html_text::remove_def): Remove
+ unused variable `q'.
* src/devices/grohtml/post-html.cpp
- (html_printer::do_file_components): Don't use `stdout' as lvalue
- since it can be a macro.
-
-2003-07-22 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/strerror.c: Include errno.h to be in sync with
- the corresponding test in aclocal.m4.
-
-2003-07-21 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/html/pre-html.cpp (TRANSPARENT): Don't use colour
- names but RGB values directly. Otherwise pnmtopng depends on
- an external file `rgb.txt' which maps colour names to values.
-
-2003-07-20 Werner LEMBERG <wl@gnu.org>
-
- * aclocal.m4 (GROFF_SYS_ERRLIST): Include stdlib.h for MinGW.
- * configure, src/include/config.hin: Regenerated.
-
- * src/libs/libgroff/strerror.c: Include stdlib.h for MinGW.
-
-2003-07-19 Werner LEMBERG <wl@gnu.org>
-
- * PROBLEMS: Add solution for UTF-8 problem with hyphens.
+ (html_printer::lookahead_for_tables): Remove unused variable `left'
+ and `seen_text'.
-2003-07-18 Werner LEMBERG <wl@gnu.org>
+2011-10-23 Ingo Schwarze <schwarze@openbsd.org>
- * *.man: Switch to non-compatibility mode temporarily if GNU
- syntax extensions are used in the particular man page.
+ [mdoc] Synchronize string tables with the mandoc(1) utility.
- * PROBLEMS: Add solutions for SGR problems.
+ * tmac/doc-common: Add many architecture names used in NetBSD and
+ OpenBSD (and "arm" from FreeBSD) and remove the duplicate OS version
+ entry for Darwin-10.6.0.
-2003-07-17 Werner LEMBERG <wl@gnu.org>
+ * tmac/doc-syms: Add many library names used in NetBSD and FreeBSD.
- Don't ignore grotty's command line options if \X'tty: sgr ...' is
- used to change the drawing scheme.
+ * tmac/groff_mdoc.man: Document all supported architecture names, OS
+ versions, and library names.
- * src/devives/grotty/tty.cpp (bold_flag_option,
- underline_flag_option, italic_flag_option, reverse_flag_option,
- bold_underline_mode_option): New global variables.
- (update_options): New function.
- (tty_printer::special): Call update_options.
- (main): Don't set xxx_flag but xxx_flag_option, then call
- update_options.
+2011-09-11 Joseph Koshy <jkoshy@users.sourceforge.net>
-2003-07-14 Werner LEMBERG <wl@gnu.org>
+ [mdoc] Add some library strings.
- Make grotty emit proper Unicode box drawing characters for -Tutf8.
-
- * src/devices/grotty/tty.cpp (START_LINE, END_LINE): New enum
- values.
- (hline_char, vline_char): New global variables.
- (tty_printer::tty_printer): Initialize them.
- (tty_printer::draw): Emit START_LINE and END_LINE flags for both
- horizontal and vertical lines.
- (crossings): New global array.
- (tty_printer::end_page): Use it to determine the proper crossing
- character for -Tutf8.
-
-2003-07-12 Werner LEMBERG <wl@gnu.org>
-
- * doc/Makefilesub (HTMLDOCFILESALL): New macro.
- (HTMLDOCFILES): Revert to `pic.html'.
- (CLEANADD, install_html, uninstall_sub): Use HTMLDOCFILESALL.
-
-2003-07-11 Werner LEMBERG <wl@gnu.org>
-
- * doc/pic.ms: Improve documentation of absolute coordinates.
- Document absolute positioning of pictures.
-
- * NEWS: Add new pic capability.
-
-2003-07-09 Hartmut Henkel <hartmut_henkel@gmx.de>
-
- * src/libs/libgroff/geometry.cpp (check_output_arc_limits):
- Rewritten.
-
-2003-07-07 Werner LEMBERG <wl@gnu.org>
-
- Implement support for dashed and dotted ellipses in pic. Based on
- a patch from Hartmut Henkel <hartmut_henkel@gmx.de>.
-
- * src/preproc/pic/common.cpp (common_output::ellipse_arc,
- common_output::dashed_ellipse, common_output::dotted_ellipse): New
- functions. Ellipse arcs are approximated with circle arcs.
- * src/preproc/pic/common.h (common_output): Updated.
- * src/preproc/pic/tex.cpp (tex_output::ellipse): Use new ellipse
- functions.
- * src/preproc/pic/troff.cpp (simple_output::ellipse): Ditto.
-
- * src/preproc/pic/TODO, src/preproc/pic/pic.man: Updated.
-
-2003-07-06 Werner LEMBERG <wl@gnu.org>
-
- Make grotty work on platforms which have unsigned char as the
- default for char. Based on a patch by Thomas Klausner
- <wiz@netbsd.org>.
-
- * src/devices/grotty/tty.cpp (schar): New typedef.
- Updated calls to declare_ptable and implement_ptable.
- (glyph): Use schar for back_color_idx and fore_color_idx.
- (tty_printer): Use schar for curr_fore_idx and curr_back_idx.
- (tty_printer::tty_color, tty_printer::tty_printer,
- tty_printer::color_to_idx, tty_printer::put_color): Updated.
-
-2003-07-06 Ruslan Ermilov <ru@FreeBSD.org>
-
- * src/roff/nroff/nroff.sh: Add option -d for completeness.
- * src/roff/nroff/nroff.man: Updated.
-
-2003-07-05 Werner LEMBERG <wl@gnu.org>
-
- * NEWS, tmac/groff_www.man: Updated.
- * doc/Makefile.sub: Updated.
-
-2003-07-05 Gaius Mulley <gaius@glam.ac.uk>
-
- Implement support for multiple HTML output files.
-
- * src/preproc/html/pre-html.cpp (scanArguments): Dummy handling for
- -j command line option.
-
- * src/devices/grohtml/post-html.cpp (job_name, multiple_files): New
- global variables.
- (file): New fields `new_output_file', `require_links',
- `output_file_name'.
- (file::file): Updated.
- (files::set_file_name, files::set_links_required,
- files::are_links_required, files::is_new_output_file,
- files::file_name, files::next_file_name): New functions.
- (header_desc): New fields `no_of_level_one_headings',
- `header_filename'.
- (header_desc::header_desc): Updated.
- (header_desc::write_headings): Handle multiple files.
- (html_printer::write_header): Save file name in which header occurs.
- (html_printer::determine_header_level): Possibly split files on
- level one headings.
- (html_printer::do_links, html_printer::troff_tag): Updated.
- (html_printer::insert_split_file, html_printer::do_job_name,
- html_printer::emit_link, html_printer::write_navigation,
- html_printer::do_file_components): New functions.
- (html_printer::~html_printer): Handle multiple files.
- (main): Handle command line option `-j'.
-
- * src/devices/grohtml/grohtml.man: Updated.
-
- * doc/Makefile.sub (pic.html), doc/Makefile.in (pic.html): New rule
- which splits file.
-
- * tmac/www.tmac (JOBNAME): New macro.
- * tmac/s.tmac (SH-NO-TAG): New macro.
- (@SH): Call SH-NO-TAG.
- (@NH): Updated.
-
-2003-07-05 Ruslan Ermilov <ru@FreeBSD.org>
-
- * tmac/groff_mdoc.man: Improve documentation of punctuation
- characters.
-
-2003-07-04 Ruslan Ermilov <ru@FreeBSD.org>
-
- * tmac/doc.tmac (Bd): Change to doc-Li-font later.
-
-2003-07-03 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-old.tmac [cR]: Redefine `bp' to avoid empty lines.
-
-2003-07-01 Ruslan Ermilov <ru@FreeBSD.org>
-
- * tmac/doc.tmac (doc-do-func, doc-do-func-args): Don't print a comma
- after `/*' and `*/'.
- Fix spacing.
- (Fn, Fo): Reduce indentation in synopsis.
-
- * tmac/doc-common (doc-check-depth): New macro.
- (doc-end-macro, Sh, Ss): Use it.
- (Cd): Fix behaviour in synopsis.
- (In): Make it parsed and callable.
- If not in the synopsis, represent the C header file enclosed in
- angle brackets.
- (doc-str-Rv-std-suffix, doc-str-Rv-stds-suffix, doc-str-Rv-std0):
- Use minus, not hyphen.
-
- * tmac/groff_mdoc.man: Updated.
-
-2003-07-01 Werner LEMBERG <wl@gnu.org>
-
- Integrated grap2graph, contributed by Eric S. Raymond.
+ * tmac/doc-syms: Add `libdwarf' and `libelf'.
+ * tmac/groff_mdoc.man: Document them.
- * contrib/grap2graph/{Makefile.sub, grap2graph.sh, grap2graph.man}:
- New files.
- * Makefile.in, NEWS, MANIFEST, contrib/eqn2graph.man,
- contrib/pic2graph.man, src/roff/groff/groff.man: Updated.
+2011-08-14 Deri James <deri@chuzzlewit.demon.co.uk>
-2003-07-01 Colin Watson <cjwatson@debian.org>
+ [gropdf] More minor fixes.
- * src/xditview/*.c: Add prototypes, fix return types, add includes.
- Based on work by Fumitoshi UKAI <ukai@debian.or.jp>.
+ * font/devpdf/Makefile.sub (MOSTLYCLEANADD): Don't attempt to
+ install 'util/BuildFoundries', only used in 'make'.
-2003-06-31 Ruslan Ermilov <ru@FreeBSD.org>
+ * src/devices/gropdf/gropdf.pl (<top>, GetType1): Make STDOUT and
+ any font files read to be accessed in binary rather than text mode.
+ Prevents errors when running on systems set up for UTF-8.
- * tmac/tty-char.tmac: Provide `lb', `rb', `lk', `rk', `lt', `rt'.
+2011-08-10 Deri James <deri@chuzzlewit.demon.co.uk>
-2003-06-31 Werner LEMBERG <wl@gnu.org>
+ [gropdf] Minor updates and fixes.
- * doc/Makefile.sub (CLEANADD): Remove all files created by
- running `make groff.{pdf,dvi}'.
+ * src/devices/gropdf/gropdf.pl: Change command line option `-fy' to
+ `-y' for consistency.
+ Better support for Windows platform.
+ (do_x): Handle keywords `pagename' and `switchtopage'.
- * Makefile.sub (DISTCLEANFILES): Remove all non-source files from
- src/xditview also.
+ * doc/groff.texinfo, src/devices/gropdf/gropdf.man: Updated.
-2003-06-30 Werner LEMBERG <wl@gnu.org>
+ * font/devpdf/Foundry: Renamed to...
+ * font/devpdf/Foundry.in: This.
+ Add default alias font names.
- * Makefile.in (SHELL): Define as @SHELL@.
- (mkinstalldirs): Use $(SHELL).
- (MDEFINES): Add $(SHELL).
- * Makefile.comm (SHELL): Removed.
+ * font/devpdf/util/BuildFoundries.pl: This is now an installation
+ helper script and gets not longer installed.
+ Support alternative font file names (separated with `!').
-2003-06-29 Werner LEMBERG <wl@gnu.org>
+ * font/devpdf/Makefile.sub: Fixes to work with a separate build
+ directory.
+ Font files are now build at `make' time; this makes `test-groff'
+ work with -Tpdf.
- * tmac/s.tmac (De, Ds): New aliases for .DE and .DS, respectively.
- The X11 documentation files use them.
- * tmac/groff_ms.man, doc/groff.texinfo: Document them.
+ * font/devpdf/util/Makefile.sub: Removed.
-2003-06-15 Robert Goulding <goulding@Princeton.EDU>
+ * Makefile.in (DEVDIRS, OTHERDIRS, EXTRADIRS): Handle devpdf
+ specially.
- * tmac/e.tmac (@C): Handle .ad also.
+2011-07-29 Daiki Ueno <ueno@unixuser.org>
-2003-06-12 Werner LEMBERG <wl@gnu.org>
+ Fix cross building.
+ Problem reported by Christophe Jarry <christophe.jarry@ouvaton.org>.
- * src/preproc/tbl/tbl.man: Document formatting of text blocks.
+ * Makefile.in ($GNULIBDIRS): Pass original config arguments to
+ src/libs/gnulib/configure.
- * src/roff/troff/input.cc (token::next) <handle_escape_char>:
- Assign `n' even here. It is possible to construct a node
- immediately following an escape character:
+2011-06-25 Deri James <deri@chuzzlewit.demon.co.uk>
- .di xx
- \?\\\?a
- .br
- .di
- .xx
+ Add new output device `gropdf'.
-2003-06-10 Werner LEMBERG <wl@gnu.org>
+ * font/devpdf/*: New device files for gropdf.
+ * src/devices/gropdf/*: New device.
- * README.WIN32: Removed.
+ * Makefile.comm (install_dev, uninstall_dev): Handle more
+ subdirectories.
+ * Makefile.in (DEVDIRS, OTHERDIRS, EXTRADIRS): Add directories
+ related to gropdf.
* MANIFEST: Updated.
+ * test-groff.in (GROFF_BIN_PATH): Updated.
-2003-06-07 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/nroff/nroff.sh: Don't emit SGR for option -u.
-
-2003-06-05 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/pic/pic.y <sprintf_args>: Implement workaround for bug
- in Compaq C++ V6.5-033 for Compaq Tru64 UNIX V5.1A (Rev. 1885).
-
-2003-06-03 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/grn/hdb.cpp (DBRead): Don't close file handle; this
- is done by the calling function.
-
-2003-05-22 Ruslan Ermilov <ru@FreeBSD.org>
-
- * tmac/X.tmac: Fix definition of `em'.
-
-2003-05-22 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cc (return_macro_request): Fix detection of
- argument.
-
-2003-05-18 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc.tmac (doc-tag-list): Force horizontal mode after tag
- to make items work which consist only of a tag.
-
-2003-05-17 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc.tmac (doc-tag-list): Don't use \Z to assure that spaces
- aren't stretched in a tag (this can fail with unformatted boxes).
- Instead, insert a break and go back one line.
-
-2003-05-16 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cc (return_macro_request): If called with
- argument pop macro twice. We need this to trace `return'.
-
- * tmac/trace.tmac: Handle `return'.
- Fix typos.
-
- * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
- Document.
-
-2003-05-15 Larry Kollar <kollar@alltel.net>
-
- * tmac/groff_ms.man, doc/groff.texinfo: Improve documentation of
- registers `FPS', `FVS', and `FPD'.
-
-2003-05-15 Werner LEMBERG <wl@gnu.org>
-
- * src/utils/pfbtops/pfbtops.c (get_text): Handle loop counter
- correctly.
-
-2003-05-03 Ruslan Ermilov <ru@FreeBSD.org>
-
- * tmac/groff_mdoc.man: Slight improvements.
-
-2003-05-03 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc-common (doc-header): Emit vertical space of 1v instead of
- `doc-header-space' after header line if register `cR' is set.
-
-2003-05-02 Werner LEMBERG <wl@gnu.org>
-
- * TODO: Updated.
-
-2003-05-01 Ruslan Ermilov <ru@FreeBSD.org>
-
- * tmac/doc-common (Nd): Use \[em].
-
-2003-05-01 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc-ditroff, tmac/doc-nroff (doc-header-space,
- doc-footer-space): Initialize to 0.5i.
- (doc-setup-page-layout): Don't set doc-header-space and
- doc-footer-space.
-
-2003-04-30 Werner LEMBERG <wl@gnu.org>
-
- * REVISION: Set to 1.
-
- * doc/pic.ms: Document possible problems with `figname'.
-
-2003-04-29 Werner LEMBERG <wl@gnu.org>
-
-Version 1.19 released
-=====================
-
- * VERSION: Set to 1.19.
- * REVISION: Set to 0.
- * doc/groff.texinfo, doc/webpage.ms, NEWS: Updated.
-
- * src/devices/grohtml/post-html.cpp (html_printer::~html_printer):
- Define charset as `US-ASCII' in html output.
-
- * tmac/www.tmac (ULE): Add missing scaling indicator.
-
- * win32-diffs: Removed.
-
-2003-04-28 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo: Document `dn' and `dl' registers if used with
- `.da' and `.boxa'.
- Document how to insert discardable whitespace with `.ss'.
-
-2003-04-27 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/pic/tex.cpp (tex_output::start_picture): Make code
- work with plain TeX also.
-
- * src/preproc/pic/pic.man, doc/pic.ms: Fix TeX code example.
-
-2003-04-25 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/devices/grohtml/post-html.cpp (html_printer::~html_printer):
- Use a loose DTD.
-
-2003-04-24 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/pic/pic.man, doc/pic.ms: Explain how to get a
- vbox with positive height and zero depth if in TeX mode.
-
- * NEWS: Document glyph name changes for grodvi and grolj4.
-
-2003-04-23 Werner LEMBERG <wl@gnu.org>
-
- * src/preproc/pic/tex.cpp (tex_output::start_picture): Fix TeX code.
- * doc/pic.ms: Fixed.
-
-2003-04-21 Werner LEMBERG <wl@gnu.org>
-
- HP-UX 10.20 has `snprintf' but it isn't declared.
-
- * configure.ac: Add declaration test for snprintf.
- * configure: Regenerated.
- * src/include/lib.h: Handle `NEED_DECLARATION_SNPRINTF'.
- * src/include/config.hin: Regenerated.
-
-2003-04-19 Werner LEMBERG <wl@gnu.org>
-
- Add keyword `figname' to pic, specifying the name of the picture
- box in TeX mode. Based on a patch from William J Poser
- <wjposer@unagi.cis.upenn.edu>.
-
- * src/preproc/pic/pic.y: New token `FIGNAME'.
- (macro_name): New rule of type <str>.
- (placeless_element): Handle `FIGNAME'.
- * src/preproc/pic/lex.cpp (lookup_keyword): Add `figname'.
- * src/preproc/pic/main.cpp (graphname): New global variable.
- (do_picture): Initialize `graphname'.
- * src/preproc/pic/pic.h: Updated.
- * src/preproc/pic/tex.cpp (tex_output::start_picture): Use
- `graphname'.
- Simplify TeX code.
- (tex_output::text): Beautify output.
- * src/preproc/pic/object.cpp (object_spec::~object_spec): Deallocate
- `shaded' and `outlined' unconditionally.
- * NEWS, src/preproc/pic/pic.man, doc/pic.ms: Updated.
- Minor improvements.
-
- * PROBLEMS, README.CVS: Mention that bison version 1.875b or
- greater is necessary.
-
-2003-04-17 Hartmut Henkel <hartmut_henkel@gmx.de>
-
- Add option -r to soelim to avoid emission of `.lf' lines.
- Add option -t to produces TeX comment lines instead of `.lf' lines.
-
- * src/preproc/soelim/soelim.cpp: New global variables `raw_flag'
- and `tex_flag'.
- (usage): Updated.
- (main): Handle `-r' and `-t'.
- (set_location): Handle `raw_flag' and `tex_flag'.
- * src/preproc/soelim/soelim.man, NEWS: Updated.
-
-2003-04-17 Werner LEMBERG <wl@gnu.org>
-
- * tmac/hyphenex.sh: Replaced with...
- * tmac/hyphenex.pl: This perl script to avoid sed compatibility
- nightmares.
-
- * aclocal.m4 (GROFF_HTML_PROGRAMS): Emit useful warning message
- if --quiet is used for the configure script.
- * configure: Regenerated.
-
-2003-04-16 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grohtml/post-html.cpp (text_glob::text_glob):
- Add `const' to second argument.
- (html_printer::add_table_end): Add `const' to argument.
- * src/devices/grohtml/html-text.cpp (html_text::issue_tag): Add
- `const' to arguments.
- * src/devices/grohtml/html-text.h: Updated.
-
- * src/devices/grolbp/charset.h (symset): Use `unsigned char'.
- * src/devices/grolbp/lbp.h (lbpputc): Use `unsigned char' for
- argument.
-
- * src/devices/grotty/tty.cpp (tty_printer::make_rgb_string): Use
- cast for integer constant.
-
- * src/preproc/html/pre-html.cpp (image_device): Use `const'.
- (writeNbytes): Add `const' to first argument.
- (writeString): Add `const' to argument.
- (char_buffer::can_see): Add `const' to third argument.
- * src/preproc/html/pushback.cpp (pushBackBuffer::isString): Add
- `const' to argument.
- * src/preproc/html/pushback.h: Updated.
-
- * src/preproc/soelim/soelim.cpp (include_list): Add `const'.
- (include_path_append): Add `const' to argument.
- (do_file): Updated.
-
- * src/roff/troff/uniglyph.cpp (unicode_to_glyph_list): Use `const'
- for `value'.
- (unicode_to_glyph_init::unicode_to_glyph_init): Updated.
- * src/roff/troff/uniuni.cpp (unicode_decompose_list): Use `const'
- for `value'.
- (unicode_decompose_init::unicode_decompose_init): Updated.
- * src/roff/troff/glyphuni.cpp (glyph_to_unicode_list): Use `const'
- for `value'.
- (glyph_to_unicode_init::glyph_to_unicode_init): Updated.
- * src/roff/troff/input.cc (process_startup_file): Add `const' to
- argument.
-
- * tmac/hyphenex.sh: Make script more portable by using a here
- document.
-
-2003-04-15 Werner LEMBERG <wl@gnu.org>
-
- Renamed all `*.cc' files to `*.cpp'.
- Updated all configuration files, makefiles, and documentation.
-
-2003-04-14 Werner LEMBERG <wl@gnu.org>
-
- * tmac/hyphenex.sh: Slight improvements.
-
-2003-04-13 Werner LEMBERG <wl@gnu.org>
-
- * font/devascii/R.proto, font/devcp1037/R.proto,
- font/devlatin1/R.proto, font/devutf8/R.proto: Fill up remaining
- character slots with unnamed glyphs.
-
- * tmac/an-old.tmac: Fix hyphenation value if `cR' is active.
- (an-first): New global variable.
- (an-header): Emit vertical space between multiple man pages.
-
-2003-04-11 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo, man/groff_out.man: \S only accepts integer
- values.
-
-2003-04-10 Werner LEMBERG <wl@gnu.org>
-
- * PROBLEMS: Revised.
-
-2003-04-10 Bernd Warken <bwarken@mayn.de>
-
- * doc/webpage.ms: Improved.
-
-2003-04-09 Werner LEMBERG <wl@gnu.org>
-
- Add register \n[.height] which returns the value of \H.
- Add register \n[.slant] which returns the value of \S.
-
- * src/roff/troff/env.cc (init_env_requests): Implement.
- * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
- Document.
-
-2003-04-08 Werner LEMBERG <wl@gnu.org>
-
- * tmac/html.tmac: Move some of the data into html-end.tmac.
- Remove most of the character translations for eqn since html fonts
- now cover those characters.
- Load www.tmac.
- * tmac/html-end.tmac: New file.
- * tmac/troffrc: Load html.tmac not www.tmac for -Thtml.
- * tmac/troffrc-end: Load html-end.tmac not html.tmac for -Thtml.
- * tmac/Makefile.sub (NORMALFILES): Add html-end.tmac.
-
-2003-04-07 Werner LEMBERG <wl@gnu.org>
-
- * man/groff_out.man: Document negative values of `N' if -Thtml is
- used.
-
-2003-04-06 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.comm (depend.temp): Check location of YTABC.
-
-2003-04-05 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
-
- * doc/Makefile.in (TROFFBIN): New variable for troff
- binary path.
- (GROFFBIN): New variable for groff binary path.
- (groff_bin_path): Rename to GROFF_BIN_PATH.
- (TROFF): Use TROFFBIN.
- (GROFF): Use GROFFBIN and GROFF_BIN_PATH.
- * doc/Makefile.sub (GROFFBIN): New variable for groff
- binary path.
- (groff_bin_path): Rename to GROFF_BIN_PATH.
- (GROFF): Use GROFFBIN and GROFF_BIN_PATH.
-
- * Makefile.comm (install_dev): Install scripts from DEVSCRIPTS
- with INSTALL_SCRIPT.
- (uninstall_dev): Uninstall scripts from DEVSCRIPTS.
- * Makefile.dev (all): Depend on DEVSCRIPTS.
- (install_dev): Likewise.
- * font/devdvi/Makefile.sub (DEVSCRIPTS): New variable to hold
- scripts.
- * font/devps/Makefile.sub (DEVSCRIPTS): Likewise.
- (DEVGENSCRIPTS): New variable to hold generated scripts.
-
-2003-04-05 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libdriver/input.cc (IntArray::operator[],
- IntArray::get_data): Remove meaningless `const' in return value.
-
- * README.CVS: New file.
-
-2003-04-04 Werner LEMBERG <wl@gnu.org>
-
- Check for stdint.h in C++, not in C.
-
- * aclocal.m4 (GROFF_STDINT_H): New function,
- * configure.ac: Check for stdint.h with GROFF_STDINT_H instead of
- AC_CHECK_HEADERS.
- * configure, src/include/config.hin: Regenerated.
- * src/libs/libgroff/tmpname.cc: Use HAVE_CC_STDINT_H.
-
-
- Fix handling of &nbsp; in grohtml. To do this, troff emits `N'
- with a negative value, representing the width of the unbreakable
- space (only for -Thtml). grohtml then converts this back to
- &nbsp; and uses the value of N as its width.
-
- * src/roff/troff/node.cc (space_char_hmotion_node::tprint,
- unbreakable_space_node::tprint): Emit `N-<width>'.
- * src/include/printer.h (printer::set_numbered_char): Make it
- virtual.
- Make members `font_table' and `nfonts' protected instead of private.
- * src/devices/grohtml/post-html.cc
- (html_printer::set_numbered_char): New member function.
-
-
- * src/libs/libgroff/maxfilename.cc:
- s/HAVE_LIMITS_H/HAVE_CC_LIMITS_H/.
-
- * src/roff/troff/node.cc (unbreakable_space_node::tprint): Don't
- emit word marker.
-
-2003-04-03 Sergey A. Osokin <osa@freebsd.org.ru>
-
- * man/roff.man: Small fixes.
-
-2003-04-03 Werner LEMBERG <wl@gnu.org>
-
- Make groff independent from locale's numeric settings.
-
- * configure.ac: Check for `setlocale'.
- * configure, src/include/config.hin: Regenerated.
-
- * src/include/lib.h: Handle HAVE_SETLOCALE.
-
- * src/devices/grodvi/dvi.cc (main), src/devices/grolj4/lj4.cc
- (main), src/devices/grops/ps.cc (main), src/preproc/grn/main.cc
- (main), src/preproc/pic/main.cc (main): Call `setlocale'.
-
-
- * doc/groff.texinfo: Change dir category to `Typesetting'.
- (Man font macros): Mention that there is no space between arguments
- of .BI and friends.
-
- * src/libs/libdriver/printer.cc, src/devices/grotty/tty.cc
- (*printer::change_color, *printer::change_fill_color): Add missing
- `const'.
-
-2003-04-02 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grohtml/html-table.cc (html_table::emit_col,
- html_table::is_gap): Compute table widths after converting border
- positions to avoid rounding errors.
-
-2003-04-01 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grohtml/html-text.cc (html_text::do_space): Handle
- `space_emitted' properly.
-
-2003-03-31 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grohtml/html-table.cc: Fix column width calculation.
- (html_table::set_linelength): Don't add 1.
- (html_table::add_indent): Don't subtract 1.
-
- * tmac/html.tmac: Set default page offset to zero.
-
-2003-03-30 Werner LEMBERG <wl@gnu.org>
-
- Make groff emit `&nbsp;' for `\ ' and `\~' if `-Thtml' is used.
-
- * src/roff/troff/node.cc (space_char_hmotion_node::tprint,
- unbreakable_space_node::tprint): New functions.
- (troff_output_file): Make space_char_hmotion_mode::tprint and
- unbreakable_space_node::tprint to friends.
- * src/roff/troff/node.h: Updated.
-
- * font/devhtml/R.proto: Add `&nbsp' at position 0xA0 (as defined
- in the HTML standard).
-
-2003-03-29 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/env.cc (point_size): Fix emission of html tag.
- Otherwise, the following code
-
- .di xxx
- .ps 10
- a
- .br
- .di
- x\*[xxx]
-
- produces `x a' instead of `xa'. This is a temporary fix, disabling
- font changes in diversions for -Thtml.
-
- * tmac/an-old.tmac (TH, SH): Use `HTML-TAG-NS' instead of
- `HTML-TAG'.
- (an-do-tag-html): Merge with ...
- (an-do-tag): This macro.
- Change code slightly to circumvent grohtml bug.
- * tmac/troffrc-end: Define dummy for HTML-TAG-NS.
-
- * src/devices/grohtml/html-table.cc (html_table::emit_col,
- html_table::is_gap): Round `width' properly.
-
- * tmac/html.tmac: Provide some default layout parameters for
- grohtml.
-
- * font/devhtml/DESC.proto: Don't use discrete values for `sizes'
- command.
-
-2003-03-28 Werner LEMBERG <wl@gnu.org>
-
- src/devices/grops/ps.cc (ps_printer::do_import): Fix error message.
-
-2003-03-27 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-old.tmac (BT): Don't call .tl if register `ps4html' is
- defined.
-
-2003-03-20 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/env.cc (vertical_spacing): Allow zero value for
- `.vs'.
- * doc/groff.texinfo: Updated.
-
-2003-03-19 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cc (process_input_stack) <TOKEN_BEGIN_TRAP,
- TOKEN_END_TRAP>: Reset `have_input'.
-
-2003-03-18 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/groff/groff.man: Mention groff_trace man page.
-
-2003-03-16 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.in (LIBEXT): New variable to indicate the file extension
- of library files. Computed heuristically from $(OBJEXT).
- (MDEFINES): Add $(LIBEXT).
- * Makefile.lib, Makefile.comm: Use it.
-
- * src/utils/pfbtops/pfbtops.c (get_text): New function. Split
- overlong lines into smaller chunks.
- (get_binary): New function.
- (main): Use them.
- * src/utils/pfbtops/pfbtops.man: Updated.
-
-2003-03-15 Colin Watson <cjwatson@debian.org>
-
- * src/roff/groff/groff.man: Minor syntax fix.
-
-2003-03-14 Egil Kvaleberg <egil@kvaleberg.no>
-
- * src/devices/grops/ps.cc (ps_printer::media_set,
- ps_printer::~ps_printer): Handle zero paper width and length.
-
-2003-03-13 Werner LEMBERG <wl@gnu.org>
-
- Add options -p and -l to grodvi.
-
- * src/devices/grodvi/dvi.cc: Include paper.h.
- (landscape_flag, user_paper_length, user_paper_width): New global
- variables.
- (dvi_printer::begin_page): Emit `papersize' special.
- Set color after initialization of `cur_h' and `cur_v'.
- (main): Add options `-l' and `-p'.
- * font/devdvi/Makefile.sub (DESC): Set `papersize'.
- * src/devices/grodvi/grodvi.man, NEWS: Updated.
-
- * src/devices/grops/psrm.cc (valid_input_table): Fixed.
-
-2003-03-12 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grops/grops.man: Move documentation of .PSPIC to...
- * man/groff_tmac.man: This man page.
- * man/groff_font.man: Declare `paperwidth' and `paperlength' as
- deprecated.
-
- * tmac/X.tmac: Don't load pspic.tmac.
-
-2003-03-11 Werner LEMBERG <wl@gnu.org>
-
- Make variable `pr' local to libdriver/input.cc. Based on a patch
- by Bernd Warken <bwarken@mayn.de>.
-
- * src/include/driver.h (pr): Removed.
-
- * src/libs/libdriver/input.cc (pr): New global variable.
- (do_file): Deallocate `pr'.
- * src/libs/libdriver/printer.cc (pr): Removed.
-
- * src/devices/grodvi/dvi.cc (main), src/devices/grohtml/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): Don't delete `pr'.
-
-2003-03-10 Werner LEMBERG <wl@gnu.org>
-
- * tmac/a4.tmac, tmac/composite.tmac: Use `.do'.
- * tmac/papersize.tmac: New file.
- * tmac/troffrc: Include `papersize.tmac'.
- * tmac/Makefile.sub (NORMALFILES): Add `papersize.tmac'.
- * tmac/an-old.tmac: Set LT to LL by default.
-
- * NEWS, MANIFEST, tmac/groff_man.man, man/groff_tmac.man,
- doc/groff.texinfo: Updated.
-
- * src/libs/libgroff/paper.cc (add_iso_paper): Fix very embarassing
- bug which caused all odd iso papers to have wrong dimensions.
-
- * src/devices/grops/ps.cc (user_paper_width): New global variable.
- (main) <'p'>: Set `user_paper_width' also.
- (ps_printer::media_width, ps_printer::media_height): Use values
- given with option `-p'.
-
-2003-03-09 Werner LEMBERG <wl@gnu.org>
-
- * src/include/nonposix.h: Provide default for SET_BINARY.
-
- * src/devices/grodvi/dvi.cc, src/devices/grolbp/lbp.cc,
- src/devices/grolj4/lj4.cc, src/devices/grops/ps.cc: Call SET_BINARY
- unconditionally.
-
- * src/utils/pfbtops/pfbtops.c: Call SET_BINARY unconditionally.
- (main): Treat \r\n as \n.
-
-2003-03-08 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-old.tmac: Use register `HY' to control hyphenation.
- * NEWS, tmac/groff_man.man, doc/groff.texinfo: Document it.
-
-2003-03-07 Werner LEMBERG <wl@gnu.org>
-
- Added support to access more than 256 glyphs in Type 1 fonts.
-
- * src/devices/grops/ps.cc (subencoding): New structure.
- (style): Add `sub' field.
- Updated all users.
- (ps_printer): Add `subencodings' and `next_subencoding_index' fields.
- Add `set_subencoding', `get_subfont' and `encode_subfont' member
- functions.
- Updated all users.
- (ps_printer::set_char): Use `set_subencoding'.
- (make_subencoding_name): New function.
- (ps_printer::set_style): Handle case where `sty.sub' is not zero.
- (ps_printer::~ps_printer): Emit subencoding definitions.
-
- * src/devices/grops/psrm.cc (valid_input_table): New array to
- properly support EBCDIC.
- (white_space): Add `\f'.
- (ps_get_line): Change first argument to be of type `string &'.
- Updated all callers.
- This allows to get lines of arbitrary length.
- Use `valid_input_table'.
- Remove warning about non-conforming PS line length. This seems
- not to be of great importance -- for example, dvips don't emit
- a warning either.
- (PS_LINE_MAX): Removed.
- (matches_comment): Change first argument to be of type `string &'.
-
- * src/devices/grops/grops.man, src/devices/grops/TODO: Updated.
-
- * src/utils/afmtodit/afmtodit.pl (%unicode_decomposed,
- %AGL_to_unicode, %default_ligatures): New hash tables.
- Read all map entries.
- Add unencoded characters.
- Check for default ligatures if there are no `L' entries.
- Print all kern entries.
- Print all characters in charset.
- * src/utils/afmtodit/afmtodit.man: Updated.
-
- * font/devps/*: Regerated all fonts.
-
- * tmac/latin[129].tmac, tmac/cp1047.tmac: Don't test for existence
- of characters, just use `.trin'. Otherwise the mapping depends
- on the font encoding.
- * tmac/ps.tmac: Add `fi' and `fl'.
- Improve `Fi' and `Fl'.
- * tmac/X.tmac, tmac/lbp.tmac, tmac/tty.tmac: Improve `Fi' and `Fl'.
- * tmac/Xps.tmac: Fix `em'.
-
- * NEWS: Updated.
-
-2003-03-04 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cc (charinfo_to_node_list): Reset
- `have_input'.
-
-2003-03-03 Werner LEMBERG <wl@gnu.org>
-
- * Makefile.sub (DISTCLEANFILES): Add gxditview._man.
-
- * font/devps/generate/textmap: Remove entry `similarequal'.
- * font/devps/symbolmap: Updated.
-
-2003-03-02 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/font.cc (font::load): Fix error message for
- bad character type.
-
- * src/devices/grops/grops.man: Improve documentation of the -b
- flag.
-
- * tmac/tty.tmac: Load latin1.tmac for all TTY devices except
- `ascii' and `cp1047'.
-
-2003-03-01 Werner LEMBERG <wl@gnu.org>
-
- Document composite glyphs and the `composite' request.
-
- * man/groff.man, man/groff_diff.man, doc/groff.texinfo: Do it.
-
-2003-02-28 Werner LEMBERG <wl@gnu.org>
-
- * font/devdvi/generate/ec.map: Add some more Unicode entities.
- * font/devdvi/*EC: Updated.
-
- * tmac/composite.tmac, tmac/latin2.tmac, tmac/latin9.tmac: New files.
- * tmac/latin1 (latin1-tr): Undo any previous mapping.
- * tmac/troffrc: Load `composite.tmac'.
* tmac/Makefile.sub (NORMALFILES): Updated.
+ * tmac/pdf.tmac: New file.
+ * tmac/troffrc: Updated.
- * doc/groff.texinfo (Input Encodings): New section.
- * NEWS: Updated.
-
-2003-02-27 Werner LEMBERG <wl@gnu.org>
-
- * doc/texinfo.tex: New version 2003-02-11.06.
-
- * tmac/doc-common (Dt): Don't emit warning for unknown section.
- * tmac/groff_mdoc.man: Fix description of `Dt'.
-
-2003-02-26 Egil Kvaleberg <egil@kvaleberg.no>
-
- * font/devps/prologue.ps: Fix for included Postscript that does
- a setpagedevice -- which is now safely ignored.
-
- * NEWS: Updated.
-
- * src/devices/grops/ps.cc: Now sets the page size in the generated
- document. This is done in two ways: Via a %%-comment for gv and
- the like, and via a PageSize and setpagedevice for programs that
- understands Postscript proper, like ps2pdf.
-
- * src/devices/grops/ps.h: New broken-flag to avoid page size
- definition, if required.
-
- * src/devices/grops/grops.man: New broken-flag 16 mentioned.
-
- * doc/Makefile.in: Added -nosetpage flag (via @pnmtops_nosetpage@).
- Not really necessary due to the fix in prologue.ps, but cleaner:
- Such information does not belong in an .eps file.
-
- * doc/Makefile.sub: See doc/Makefile.in.
-
-2003-02-26 Ralph Corderoy <ralph@inputplus.co.uk>
-
- * aclocal.m4 (GROFF_PNMTOPS_NOSETPAGE): Use P2 format for testing
- instead of P1 since the latter is broken in some versions of netpbm.
- * configure: Updated.
-
-2003-02-26 Larry Kollar <kollar@alltel.net>
-
- Make man pages more customizable.
-
- * tmac/an-old.tmac (FT): New register holding footer distance from
- bottom.
- (HF): New string holding the default heading font.
- (TH): Handle registers `IN' and `SN' set on the command line.
- Use `FT'.
- (PT, BT): New strings to customize header and footer lines.
- (an-header, an-footer): Use them.
- (SH, SS): Use `HF'.
- * tmac/groff_man.man: Document changes.
-
- * doc/groff.texinfo: Document man changes.
- Document Ultrix extensions of man.
-
-2003-02-26 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/input.cc (do_width, do_if_request): Reset
- `have_input' after changing back to old environment.
-
- * src/devices/grolbp/lbp.cc (lbp_printer::set_line_thickness): Move
- function up to be defined before first call. This is necessary to
- avoid a compilation problem with Sun's WorkShop 6 C++ compiler.
-
- * src/utils/afmtodit/afmtodit.pl: Make script search for files in
- the default font directory also. Based on a patch from James
- J. Ramsey <jjramsey_6x9eq42@yahoo.com>.
- * src/utils/afmtodit/Makefile.sub (afmtodit): Handle @FONTDIR@.
- * src/utils/afmtodit/afmtodit.man: Document it.
-
- * NEWS: Updated.
-
- * tmac/groff_man.man, doc/groff.texinfo: Many minor fixes.
-
-2003-02-25 Gaius Mulley <gaius@glam.ac.uk>
-
- * aclocal.m4 (GROFF_HTML_PROGRAMS): Add test for pnmtops.
- (GROFF_PNMTOPS_NOSETPAGE): New macro.
- * configure.ac: Use it.
- * configure: Regenerated.
- * Makefile.in: Updated.
-
- * tmac/Makefile.sub (NORMALFILES): Remove www.tmac.
- (CLEANADD): Add www.tmac-sed.
- (pnmtops_nosetpage): Define default.
- (install_data): Handle www.tmac-sed and substitute
- @PNMTOPS_NOSETPAGE@.
- (stamp-sed): Add www.tmac.
- * tmac/www.tmac: Rewritten, based on a patch by Bernd Warken.
- It now breaks URLs at suitable places.
- (www:substring_ok): New register set by...
- (www:@test_substring): New macro.
- (www:error): New alias to www-error.
- (www:lenstr, www:splitstr, www:url_breaks, www:url_breaks_splitted):
- New macros.
- (URL): Use www:url_breaks.
- (PIMG, MPIMG): Use @PNMTOPS_NOSETPAGE@.
- (CDS, CDE): New macros.
-
-2003-02-25 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grops/ps.cc (ps_printer::define_encoding): Avoid
- buffer overflow.
-
-2003-02-24 Werner LEMBERG <wl@gnu.org>
-
- Contrary to the PCL5 Developer's Guide, the ascenders in TFM files
- can be negative also.
-
- * src/utils/hpftodit/hpftodit.cc (char_info): `ascent' must be
- `int16'.
- (read_char_table): Avoid negative ascenders.
- (output_charset): Add cast.
- * font/devlj4/*: Regenerated.
-
- Replace unnamed glyphs for DVI fonts with `uXXXX' glyph names where
- possible.
-
- * font/devdvi/generate/{tc,texttt,ec,texmi,texsy,textex}.map: Do it.
- * font/devdvi/generate/textex.map: Map glyph 23 to `u21C6' instead
- of `<>'.
- * font/devdvi/*: Regenerated.
-
- Map `la' and `ra' to U+27E8 and U+27E9. These two characters have
- normal width, while the previously used characters (U+2329 and
- U+232A) are classified as wide due to canonical equivalence with the
- CJK punctuation characters U+3008 and U+3009.
-
- * font/devutf8/R.proto: Updated.
- * src/roff/troff/uniglyph.cc, src/roff/troff/glyphuni.cc: Ditto.
-
- * man/groff_char.man: Simplify handling of table traps by
- introducing `start block' and `end block' macros.
- (Ns, Ne, 2s, 2e, Ds, De): New macros.
- (DL): Make it work with Unix troff also.
- Fix code values of `la' and `ra'.
-
- * tmac/dvi.tmac: Define `<>' for CW and CWI.
-
-2003-02-23 Gaius Mulley <gaius@glam.ac.uk>
-
- * src/devices/grohtml/post-html.cc (element_list::~element_list):
- New destructor, fixing a major memory leak.
-
-2003-02-22 Werner LEMBERG <wl@gnu.org>
-
- * font/devhtml/R.proto, font/devutf8/R.proto: Flip `*f' and `+f'
- to be in conformance with Unicode 3.0 and newer.
-
- * font/devlj4/generate/text.map: Add `Eu'.
- * font/devlj4/generate/special.map: Flip `*e' and `+e'.
- * font/devlj4/S: Regenerated.
-
- * man/groff_char.man: Completely rewritten.
-
- * doc/groff.texinfo: Fix description of request and macro arguments.
-
-2003-02-20 Gaius Mulley <gaius@glam.ac.uk>
-
- Valgrind fixes.
-
- * src/devices/grohtml/html-table.cc (html_table::~html_table):
- Deallocate `columns' list.
- * src/devices/grohtml/post-html.cc (char_block::~char_block):
- New destructor.
- (text_glob::text_glob_html, text_glob::text_glob_special,
- text_glob::text_glob_line, text_glob::text_glob_auto_image,
- text_glob::text_glob_tag): Avoid memory leaks.
- (text_glob::remember_table): Free memory before reassigning.
-
-2003-02-19 Werner LEMBERG <wl@gnu.org>
-
- Add glyph `+e', greek lunate epsilon symbol, and `-h' (with the
- alias `hbar'), the Planck constant over two pi.
-
- * font/devdvi/generate/texmi.map: Use `*e' for position 15 and
- `+e' for position 34.
- * font/devdvi/generate/texsy.map: Replace `DI' and `HE' with
- `u2662' and `u2661'.
- * font/devdvi/{MI,S}: Regenerated.
- * font/devhtml/R.proto, font/devutf8/R.proto: Add `+e', `-h', `hbar'.
- * font/devlbp/*: Add `hbar' alias.
- * font/devlj4/generate/special.map: Ditto.
- * font/devlj4/S: Regenerated.
- * font/devps/generate/symbolchars: Add `+e'.
- * font/devps/generate/textmap: Fix PS name for `-h'.
- Add `hbar' alias.
- * font/devps/symbolmap: Regenerated.
-
- * src/devices/grops/ps.cc (transform_fill): Removed since unused.
-
- * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Add `+e',
- `-h', `hbar'.
- * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Add `+e',
- `-h'.
-
- * tmac/X.tmac, tmac/ps.tmac: Provide definitions for `-h' and
- `hbar'.
- * tmac/tty-char.tmac: Add `+e'.
-
-2003-02-17 Werner LEMBERG <wl@gnu.org>
-
- Another round trying to really fix problems with `have_input'.
-
- * src/roff/troff/input.cc (input_stack::get): Handle `have_input'.
- (token::next) <'\n'>, <\'\n'>: Don't handle `have_input'.
-
- * src/devices/grotty/tty.cc (tty_printer::put_color): Fix color
- handling if both foreground and background colors are default.
-
- * doc/groff.texinfo (Debugging): Document .lf differences to
- AT&T troff.
-
-2003-02-16 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grotty/tty.cc (tty_printer::make_rgb_string): Avoid
- null-bytes in created string.
-
- * src/roff/troff/input.cc (lookup_color, interpolate_macro,
- alias_macro, lookup_request): Improve warning messages.
-
- * src/roff/troff/node.cc (suppress_node::tprint): Use `strsave',
- not `strdup'.
- Free `last_image_filename'.
-
- * src/preproc/html/pre-html.cc (char_block::char_block): Initialize
- `buffer'.
- (imageList::createPage, imageList::createImage): Use `free', not
- `a_delete'.
- (imageItem::~imageItem): Free `imageName'.
- (addRegDef): Use `strsave', not `strdup'.
- (get_resolution): Free `pathp'.
-
-2003-02-15 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grotty/tty.cc (tty_printer::tty_printer): Fix pointer
- to `dummy'.
-
-2003-02-14 Werner LEMBERG <wl@gnu.org>
-
- Add memory management for colors to deallocate unnamed colors
- properly.
-
- * src/include/color.h (color): New members `free_list' and `next'.
- New member functions `new' and `delete'.
- Add destructor.
- * src/libs/libgroff/color.cc: Implement it.
-
- * src/libs/libgroff/font.cc (font::add_kern): Use integer cast
- for array size of new operator.
+ * doc/groff.texinfo: Document it.
+ * doc/Makefile.in, doc/Makefile.sub (groff_bin_dirs): Udpated.
+ * doc/pic.ms: Updated.
- * src/libs/libdriver/input.cc (IntArray::operator[]): Remove
- redundant comparison.
+ * man/groff_out.man, src/devices/grops/grops.man,
+ src/preproc/pic/pic.man, src/roff/groff/groff.man,
+ src/utils/afmtodit/afmtodit.man, src/utils/pfbtops/pfbtops.man:
+ Updated.
- * src/roff/troff/input.cc (word_space_node::reread,
- hmotion_node::reread): Avoid warning about unused parameter.
- (reset_output_registers): Remove redundant parameter.
- (define_color): Undo change 2003-02-12.
+ * contrib/pdfmark/pdfmark.ms: Updated.
- * src/roff/troff/reg.h: Updated.
+2011-07-20 George HELFFRICH <ghfbsd@gmail.com>
- * src/roff/troff/node.cc (troff_output_file::really_print_line,
- output_file::put_filename, real_output_file::really_put_filename,
- ascii_output_file::really_print_line,
- break_char_node::get_hyphen_list): Avoid warning about unused
- parameter.
- (suppress_node::tprint): Updated.
+ Improve line numbering support in tbl and with me macros.
- * configure.ac: Check declaration for rand() and srand().
- * configure: Regenerated.
+ * tmac/e.tmac (n1, n2, TH, PS): Implement it.
+ (@h, @n, @o, @t, @k, )b, (c, (q, )q, (l, )l, (f, @q, PE): Updated.
+ * doc/meref.me: Document changes.
- * src/preproc/pic/pic.h: Declare fmod(), rand(), and srand()
- conditionally.
- * src/preproc/pic/pic.y: Remove declaration of fmod(), rand(),
- and srand().
+ * src/preproc/tbl/table.cpp (ROW_START_LINE_REG, ROW_SAVE_LINE_REG,
+ ROW_MAX_LINE_REG, REPEATED_NM_SET_MACRO, REPEATED_NM_SUS_MACRO): New
+ macros.
+ (table::init_output): Define REPEATED_NM_SET_MACRO and
+ REPEATED_NM_SUS_MACRO.
+ (table::print_single_hline, table::print_double_hline,
+ table::define_bottom_macro, table::do_row, table::do_top,
+ table::do_bottom): Updated.
- * src/preproc/eqn/delim.cc (delim_table): Add missing initializers
- to avoid compiler warnings.
+ * doc/webpage.ms: Updated.
- * src/preproc/grn/hgraph.cc (HGPrintElt): Second parameter is
- unused.
+2011-07-12 Ted Harding <ted.harding@wlandres.net>
+ Werner LEMBERG <wl@gnu.org>
- * src/devices/grops/ps.cc (ps_printer::set_char): Last parameter
- is unused.
- * src/devices/grops/psrm.cc (skip_possible_newline): Remove first
- (unused) parameter.
- Updated all callers.
+ * src/preproc/tbl/tbl.man: Mention trick to get abutting rules.
- * src/devices/grotty/tty.cc (tty_printer::set_char): Last parameter
- is unused.
- * src/devices/grodvi/dvi.cc (dvi_printer::set_char): Ditto.
- * src/devices/grolj4/lj4.cc (lj4_printer::set_char): Ditto.
+2011-07-03 Ben Laurie <benl@FreeBSD.org>
- * src/devices/grohtml/post-html.cc (html_printer::emit_line):
- Parameter is unused.
- (html_printer::add_table_end): Define parameter conditionally.
- * src/devices/grohtml/output.cc (simple_output::special): Parameter
- is unused.
+ Fix clang warnings.
- * src/devices/grolbp/lbp.cc: Define _GNU_SOURCE conditionally.
- (lbp_printer::set_char): Last parameter is unused.
+ * src/libs/libdriver/input.cpp (odd): Use parentheses.
- * src/utils/indxbib/indxbib.cc (main): Remove redundant comparison.
+ * src/roff/troff/mtsm.cpp (state_set::is_in): Fix parentheses;
+ previous code always tested for bit 0.
-2003-02-13 Werner LEMBERG <wl@gnu.org>
+2011-07-03 Guillem Jover <guillem@debian.org>
- New commands \D'Fr ...', \D'Fc ...', etc. for orthogonality.
- Make \D'f ...' move horizontally again for backwards compatibility.
- Replace it with \D'Fg ...' where appropriate to avoid dependency
- on horizontal resolution.
+ mdoc: Update more OS versions strings.
- * src/roff/troff/input.cc (do_get_long_name): New function.
- (get_long_name): Call it.
+ * tmac/doc-common: Add versions strings for NetBSD, OpenBSD,
+ FreeBSD, and DragonFly.
- (read_draw_node): Handle `\D'Fx ...' by calling ...
- (read_color_draw_node): New function.
+2011-04-08 Michail Vidiassov <master@iaas.msu.ru>
- (read_rgb, read_cmy, read_cmyk, read_gray): New optional argument
- `end'.
- Pass it to `do_get_long_name' which is used instead of
- `get_long_name'.
+ mdoc: Update various strings related to Mac OS X and FreeBSD.
- * src/libs/libdriver/input.cc (color_from_Df_command): Remove
- unnecessary value guard.
- (parse_D_command) <'f'>: Add horizontal shift.
+ * tmac/doc-common: Add strings for FreeBSD 8.2 and Darwin 9.7-11.0.
+ * tmac/doc-syms: Add strings -lbsm and -lSystem.
- * src/preproc/grn/hgraph.cc (HGPrintElt) <POLYGON>: Use \D'Fg ...'.
- * src/preproc/pic/troff.cc (troff_output::set_fill): Ditto.
- (FILL_MAX): Removed.
+2011-03-29 Christian Weisgerber <naddy@mips.inka.de>
- * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
- Updated.
+ Fix compilation issues with gcc 2.95.
-2003-02-12 Werner LEMBERG <wl@gnu.org>
+ * src/roff/troff/input.cpp (my_input_iterator): Define as an alias
+ for `input_iterator' which is predefined by an old libstdc++.
- * src/roff/troff/input.cc (do_name_test, do_expr_test,
- do_zero_width): Push `\n' if closing delimiter is missing.
+2011-03-29 Ingo Schwarze <schwarze@usta.de>
- (token::next) <ESCAPE_NEWLINE>, <'\n'>, <\'\n'>: Reset `have_input'.
- <'F'>: Make \F non-transparent at the beginning of line.
- (process_input_stack) <token::TOKEN_CHAR, token::TOKEN_NEWLINE,
- token::TOKEN_REQUEST, token::TOKEN_BEGIN_TRAP>: Don't handle
- `have_input'.
-
- (define_color): Free color in case of reassignment.
-
- * doc/groff.texinfo (@Defesc, @DefescList, @DefescItem,
- @DefescListEnd): Use @Var, not @var.
- Fix all calls.
+ Add another POSIX standard.
- * src/preproc/grn/hgraph.cc (HGPrintElt): Fix typo.
-
- * src/preproc/pic/object.cc (object_spec::~object_spec): Free
- `shaded' and `outlined' arrays.
- (object_spec::object_spec): Initialize `shaded' and `outlined'.
- (graphic_object::set_fill_color, graphic_object::set_outline_color):
- Use strsave.
- (closed_object::set_fill_color): Ditto.
- * src/preproc/pic/troff.cc (troff_output::set_color): Use strsave
- instead of strdup.
- (troff_output::reset_color): Use a_delete instead of free.
- * src/preproc/pic/main.cc (do_file): Free `out' in case of error.
+ * tmac/doc-syms: Add POSIX 1003.1b.
-2003-02-11 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo: Improve documentation of `ad'.
- Document that \D'f...' is dependent on the horizontal resolution.
- * man/groff_diff.man: Improve documentation of \D'f...'.
+2011-03-29 Christian Weisgerber <naddy@mips.inka.de>
- * src/preproc/grn/hgraph.cc (HGPrintElt) <POLYGON>: Don't emit
- compensating \h'...' for \D'f ...' since the latter no longer moves
- current position.
- * src/preproc/pic/troff.cc (troff_output::set_fill): Ditto.
-
-2003-02-10 Werner LEMBERG <wl@gnu.org>
-
- Improve error messages for `x F' (and `F') commands.
-
- * src/include/error.h: Add declaration for
- `current_source_filename'.
- * src/libs/libgroff/filename.cc: Add `current_source_filename'.
- * src/libs/libgroff/error.cc (do_error_with_file_and_line): Add
- parameter for source file string.
- Updated all callers.
-
- * src/libs/libdriver/input.cc: Add `current_source_filename'.
- (remember_source_filename): New function.
- (parse_x_command <'F'>, do_file <'F'>): Use it.
-
-2003-02-09 Werner LEMBERG <wl@gnu.org>
-
- Make grotty not emit warnings about unknown colors more than
- necessary.
-
- * src/devices/grotty/tty.cc: Include `ptable.h'.
- (TTY_MAX_COLORS): Removed.
- (DEFAULT_COLOR_IDX): Defined to -1.
- (glyph): Change `back_color_idx' and `fore_color_idx' to `char'.
- (tty_printer): Change `curr_back_idx' and `curr_fore_idx' to `char'.
- Change `tty_colors' to be a ptable.
- First arg of `put_color' is now `char'.
- New functions `make_rgb_string' and `tty_color'.
- (tty_printer::tty_printer): Use `tty_color'.
- (tty_printer::color_to_idx): Return value is now `char'.
- Use `tty_color'.
-
- * src/include/color.h (color): Add `print_color' member function.
- * src/libs/libgroff/color.cc (color::print_color): Implement it.
-
-2003-02-08 Werner LEMBERG <wl@gnu.org>
-
- Valgrind fixes.
-
- * src/devices/grops/ps.cc (ps_printer::define_encoding): Close
- encoding file.
-
- * src/include/ptable.h (PTABLE::~PTABLE, PTABLE::define): Always
- assume that value has been allocated with `new[]', thus use
- `a_delete' for deallocation.
-
- * src/libs/libdriver/input.cc (get_integer_arg,
- get_possibly_int_args, parse_x_command, do_file): Use `a_delete'
- where appropriate.
-
- * src/libs/libgroff/new.cc (delete) [!COOKIE_BUG]: Define.
- * src/libs/libgroff/nametoindex.cc
- (character_indexer::named_char_index): Use `new <type>[1]'.
-
- * src/preproc/eqn/lex.cc (init_table, do_definition): Use `new
- <type>[1]'.
- * src/preproc/eqn/text.cc (set_special_char_type): Ditto.
- (split_text): Use `a_delete'.
-
- * src/preproc/pic/pic.y (define_label, define_variable): Use `new
- <type>[1]'.
-
- * src/roff/troff/env.cc (environment::choose_breakpoint): Avoid
- harmless memory leak.
- (hyphen_trie::read_patterns_file): Initialize `buf'.
- * src/roff/troff/node.cc (troff_output_file::troff_output_file):
- Initialize `current_fill_color'and `current_glyph_color'.
- * src/roff/troff/glyphuni.cc
- (glyph_to_unicode_init::glyph_to_unicode_init): Use `new <type>[1]'.
- * src/roff/troff/uniuni.cc
- (unicode_decompose_init::unicode_decompose_init): Ditto.
- * src/roff/troff/uniglyph.cc
- (unicode_to_glyph_init::unicode_to_glyph_init): Ditto.
-
-2003-01-26 Werner LEMBERG <wl@gnu.org>
-
- * src/utils/indxbib/indxbib.cc (main) [__EMX__]: Check with
- `access' before calling `unlink'.
- (do_file): Handle __EMX__.
-
- * src/include/nonposix.h: Handle __EMX__.
-
- * Makefile.in (SEP): New variable; set to @PATH_SEPARATOR@.
- (fontpath,tmacpath): Use it.
- (MDEFINES): Add it.
- Sorted alphabetically.
-
- * src/preproc/eqn/neqn.sh, src/roff/nroff/nroff.sh: Use
- @SEP@.
- * src/preproc/eqn/Makefile.sub, src/roff/nroff/Makefile.sub: Handle
- @SEP@.
-
-2003-01-27 Werner LEMBERG <wl@gnu.org>
-
- * src/libs/libgroff/strcasecmp.c, src/libs/libgroff/strncasecmp.c:
- New files, copied from gnulib.
- * src/libs/libgroff/Makefile.sub (CSRCS): Add them.
- * configure.ac: Updated.
- * configure: Regenerated.
+ Fix build with non-GNU make.
- * src/include/config.hin: Regenerated.
- * src/include/lib.h [!HAVE_STRCASECMP]: Declare `strcasecmp'.
- Don't define `strcasecmp' as `strcmp'.
- [!HAVE_STRNCASECMP]: Declare `strncasecmp'.
- Dont define `strncasecmp' as `strncmp'.
+ * Makefile.in ($TARGETS): We must not pass `$MDEFINES' recursively
+ down to the sub-makes started in src/libs/gnulib, because that
+ directory has its own values for `$top_srcdir' etc., and overriding
+ those from the command line will cause the build to fail.
+ Currently, `$MAKEOVERRIDES' will prevent the recursive passing of
+ those overrides with GNU make, but not with other make(1)
+ implementations. It looks like all targets that require `$MDEFINES'
+ set them explicitly anyway, so we shouldn't need to set `$MDEFINES'
+ on the top level.
- * src/roff/groff/pipeline.c [!HAVE_STRCASECMP, !HAVE_STRNCASECMP]:
- Removed.
+2011-03-21 Jan Vcelak <jvcelak@redhat.com>
+ Bernd Warken <groff-bernd.warken-72@web.de>
-2003-01-26 Werner LEMBERG <wl@gnu.org>
+ [groffer] Remove hardcoded path to 'libdir/groff/groffer' directory.
- * src/utils/indxbib/indxbib.cc (main) [__EMX__]: Fix typo:
- s/unline/unlink/.
+ * configure.ac: add GROFFERDIR variables.
-2003-01-25 Werner LEMBERG <wl@gnu.org>
+ * Makefile.in: add and handle variable groffer_dir
- * doc/groff.texinfo (Ligatures and Kerning): Mention limitations.
+ * m4/groff.m4: set up the --with-grofferdir command line option.
-2003-01-24 Werner LEMBERG <wl@gnu.org>
+2011-03-18 Werner LEMBERG <wl@gnu.org>
- Add US-english hyphenation exceptions (converted from Barbara
- Beeton's hyphenation exception log reports which appear irregularly
- in TUGBoat).
+ [troff] Improve error message.
- * tmac/hyphen.us: Updated to latest version.
- * tmac/README: Updated.
- * tmac/hyphenex.us, tmac/hyphenex.sh: New files.
- * tmac/troffrc: Load `hyphenex.us'.
- * tmac/Makefile.sub (NORMALFILES): Add `hyphenex.us'.
- * doc/groff.texinfo: Updated.
+ * src/roff/troff/input.cc (token::delimiter): Improve error message.
+ Suggested by Doug McIlroy <doug@cs.dartmouth.edu>.
-2003-01-23 Werner LEMBERG <wl@gnu.org>
+2011-03-04 Werner LEMBERG <wl@gnu.org>
- Improve hyphenation slightly. This is a first step in redesigning
- the hyphenation algorithm to make it more flexible (e.g. allowing
- kerns and ligatures between the hyphenation character and the
- following character -- while not used normally in English, other
- languages like German would benefit).
+ [mdoc] Within .An, .Aq, .Ao, and .Ac now use `<' and `>'.
+ Problem reported by Ulrich Spörlein <uqs@spoerlein.net>
- * src/roff/troff/env.cc (environment::hyphenate_line): Use
- assertion instead of if-clause.
- Let `get_hyphen_list' return the number of involved characters in
- the hyphenation pattern instead of computing it directly (which
- often yields too small values).
- * src/roff/troff/node.h (*::get_hyphen_list): Add second parameter.
- * src/roff/troff/node.cc (*::get_hyphen_list): Handle new second
- parameter.
+ * tmac/doc.tmac (Aq, Ao, Ac): Implement it to follow RFC 822 and RFC
+ 2822.
-2003-01-22 Werner LEMBERG <wl@gnu.org>
+2011-02-14 Werner LEMBERG <wl@gnu.org>
- Fixing a bug which caused groff to hang if the hyphenation exception
- dictionary tried to grow.
+ * doc/groff.texinfo: Add another example for .em request
+ Based on a patch from Anton Shepelev <anton.txt@gmail.com>.
- * src/roff/troff/env.cc (hyphen_trie::insert_hyphenation,
- hyphen_trie::read_patterns_file, do_hyphenation_patterns_file): Use
- pointer to dictionary.
+2011-01-31 Werner LEMBERG <wl@gnu.org>
-2003-01-20 Werner LEMBERG <wl@gnu.org>
+ More fixes for Savannah bug #32301.
- * src/utils/afmtodit/afmtodit.pl: Add switch `-m' to suppress
- negative left italic correction.
- * src/utils/afmtodit/afmtodit.man: Document it.
+ * src/devices/grops/Makefile.sub (XLIBS),
+ src/devices/grodvi/Makefile.sub, src/devices/grolj4/Makefile.sub,
+ src/devices/grohtml/Makefile.sub, src/devices/grolbp/Makefile.sub:
+ Add $(LIBGNU).
- * font/devps/generate/Makefile (RFLAG): Add `-m'.
- * font/devps/{AB,AR,BMB,BMR,CB,CR,EURO,HB,HR,HNB,HNR,NB,NR,PB,PR,
- S,TB,TR,ZD,ZDR}: Regenerated with afmtodit options `-i 0 -m'.
+2011-01-31 Werner LEMBERG <wl@gnu.org>
- * NEWS: Updated.
+ Fix Savannah bug #32301.
-2003-01-16 Werner LEMBERG <wl@gnu.org>
+ * src/roff/groff/Makefile.sub (XLIBS), src/preproc/grn/Makefile.sub,
+ src/preproc/html/Makefile.sub: Add $(LIBGNU).
- * NEWS: Updated.
+2011-01-29 Krzysztof Żelechowski <giecrilj@stegny.2a.pl>
-2003-01-16 Jrgen Grahn <jgrahn@algonet.se>
+ * doc/groff.texinfo: Complete documentation on output devices.
- * src/preproc/refer/refer.man: Mention REFER environment variable.
+2011-01-28 Werner LEMBERG <wl@gnu.org>
-2003-01-05 Werner LEMBERG <wl@gnu.org>
+ Handle `refer*.tmac'.
- Similar to \[is], the square root glyph (\[sr]) and the square root
- extension glyph (\[radicalex]) are now text symbols. The new
- mathematical versions are called \[sqrt] and \[sqrtex],
- respectively.
+ * tmac/Makefile.sub (NORMALFILES): Add `refer*.tmac'.
+ * tmac/refer-mm.tmac: Moved to contrib/mm.
- * font/devX*/S: Regenerated.
- * font/devdvi/generate/texex.map: Rename `sr[0123]' to `sqrt[0123]'.
- * font/devdvi/generate/texsy.map: Rename `sr' to `sqrt'.
- * font/devdvi/EX, font/devdvi/S: Regenerated.
- * font/devhtml/R.proto, font/devutf8/R.proto: Add `sqrt'.
- * font/devlj4/generate/special.map: Add `sqrt'.
- * font/devlj4/S: Regenerated.
- * font/devps/generate/textmap: Add `sqrt'.
- * font/devps/S, font/devps/symbolmap: Regenerated.
+2011-01-28 Werner LEMBERG <wl@gnu.org>
- * src/preproc/eqn/sqrt.cc (SQRT_CHAR, RADICAL_EXTENSION_CHAR,
- SQRT_CHAIN, BAR_CHAIN): Use `sqrt*' and `sqrtex*'.
- * src/roff/troff/input.cc (init_charset_table): Make `sqrtex'
- overlap horizontally.
+ Improve `refer' support of -me.
- * tmac/X.tmac, tmac/ps.tmac, tmac/lj4.tmac: Add `sqrtex'.
- * tmac/dvi.tmac: Add `sr', and `sqrtex'.
- Fix `radicalex'.
+ * tmac/refer.tmac, tmac/refer-me.tmac, tmac/refer-ms.tmac,
+ tmac/refer-mm.tmac: New files. The code in refer.tmac is
+ based on the old code from `s.tmac'.
- * doc/groff.texinfo, man/groff_diff.man: Document that `radicalex'
- and `sqrtex' are overlapping glyphs.
-
-2003-01-04 Werner LEMBERG <wl@gnu.org>
-
- * font/devdvi/generate/texsy.map: Add `is'.
- * font/devps/symbolmap: Regenerated.
- * font/devdvi/*TC, MI, S: Regenerated.
-
- * tmac/dvi.tmac: Remove `is'.
-
-2003-01-03 Werner LEMBERG <wl@gnu.org>
-
- `is' is now a text symbol (only relevant for dvi). The math variant
- can be accessed with `integral'.
-
- * font/devX*/S: Regenerated.
- * font/devdvi/generate/texex.map: Remove `is'.
- * font/devdvi/EX: Updated.
- * font/devhtml/R.proto, font/devutf8/R.proto: Add `integral'.
- * font/devlj4/generate/special.map: Ditto.
- * font/devlj4/S: Regenerated.
- * font/devps/generate/textmap: Add `integral'.
- * font/devps/S: Regenerated.
-
- * tmac/dvi.tmac: Define `is'.
-
- * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Add `integral'.
-
- * src/preproc/tbl/main.cc (process_format): Fix error message.
-
-2003-01-02 Werner LEMBERG <wl@gnu.org>
-
- * font/devhtml/R.proto, font/devutf8/R.proto: Add `ne' and `nc'.
- * font/devps/textmap: Fix entries for `ne' and `nc'.
- * font/devps/symbolmap: Regenerated.
-
- * src/roff/troff/glyphuni.cc (glyph_to_unicode_list),
- src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Add `18',
- `38', `58', `78', `-+', `|=', `nc', `ne'.
-
- * tmac/dvi.tmac: Add `nm', `ne', `nc'.
- Use `schar' for `aq'.
- * tmac/ps.tmac, tmac/X.tmac: Add `nc' and `ne'.
- * tmac/ec.tmac: Add `SC' to special fonts for `CW' and `CWI'.
- * tmac/tty.tmac: Add `ne'.
-
- * src/roff/troff/node.cc (make_glyph_node): Test with `get_macro'
- for fallback glyphs.
-
-2002-12-29 Werner LEMBERG <wl@gnu.org>
-
- Add glyph `|='.
-
- * font/devX*/*: Regenerated.
- * font/devdvi/generate/ec.map: Remove `eq'.
- * font/devdvi/generate/texsy.map: Make `~=' the same as `~~'.
- Assign `|=' to position 39.
- * font/devdvi/*EC, S: Regenerated.
- * font/devhtml/R.proto, font/devutf8/R.proto: Add `|='.
- * font/devlj4/generate/special.map: Make `~=' the same as `~~'.
- Assign `|=' to position 549.
- * font/devps/generate/textmap, font/devps/enerate/symbolmap: Remove
- `equalmath'.
- Add `uni2243' for `|='.
-
- * tmac/ec.tmac: Add `eq'.
- * tmac/dvi.tmac: Add `=~'.
- * tmac/tty-char.tmac, tmac/ps.tmac, tmac/X.tmac, tmac/lbp.tmac: Add
- `|='.
-
-2002-12-21 Werner LEMBERG <wl@gnu.org>
-
- * font/devdvi/generate/tc.map: Remove `**'.
- * font/devdvi/*TC: Regenerated.
- * font/devhtml/R.proto, font/devutf8/R.proto: Add `18', `38', `58',
- `78', `<<', `>>'.
- * font/devutf8/NOTES: Updated.
-
- * src/roff/troff/charinfo.h (charinfo): Add `setx_macro' function.
- Don't give default parameter to `set_macro'.
- * src/roff/troff/input.cc (do_define_character): Use `setx_macro'
- instead of `set_macro'.
- (charinfo::setx_macro): Implement it.
- (charinfo::set_macro): Don't change `mode'.
-
- * tmac/tty.tmac: Add `18', `38', `58', `78', `<<', `>>'.
- * tmac/ps.tmac, tmac/X.tmac: Add `<<', `>>'.
- * tmac/dvi.tmac: Define `!=' with `.schar'.
-
-2002-12-20 Werner LEMBERG <wl@gnu.org>
-
- * font/devX*/S: Regenerated.
- * font/devdvi/generate/ec.map: Remove `pl'.
- * font/devdvi/generate/tc.map: Remove `mi', `14', `12', `34'.
- * font/devdvi/*{TC,EC}: Regenerated.
- * font/devhtml/R.proto: Add `-+'.
- Remove double entries for `rk', `lk', `lt', `rt', `rb', `lb'.
- * font/devlbp/*: Remove `or'.
- * font/devlj4/generate/special.map: Remove `or'.
- * font/devlj4/S: Regenerated.
- * font/devps/generate/textmap: Add `fiveeighths', `oneeighth',
- `seveneighths', `threeeighths'.
- Remove `plusmath'.
- Replace `minusplus' with `uni2213'.
- * font/devps/symbolmap: Regenerated.
- * font/devutf8/R.proto: Replace `shc' with unnamed glyph.
- Add `-+'.
-
- * src/roff/troff/charinfo.h (charinfo): Add `is_normal' inline
- function.
- * src/roff/troff/node.cc (troff_output_file::put_char_width):
- Call glyph_color and fill_color even if tcommand_flag isn't set.
- (make_node, node::add_char): Check not ci->is_fallback but
- ci->is_normal.
-
- * tmac/lj4.tmac, tmac/lbp.tmac: Define `or'.
- * tmac/ec.tmac: Add .rchar entry for `f/'.
- Don't remove `12', `14', `34'.
- Define `pl' to be always roman.
- * tmac/ps.tmac (ps-frac, ps-frac-mono): New macros.
- Define `18', `38', `58', `78'.
- * tmac/tty.tmac: Add `-+'.
- * tmac/dvi.tmac: Define `f/'.
- (dvi-frac): Use `f/'.
- * tmac/X.tmac (X-frac, X-frac-mono): New macros.
- Define `18', `38', `58', `78'.
-
-2002-12-15 Colin Watson <cjwatson@debian.org>
-
- * contrib/pic2graph/pic2graph.sh: Add missing `;;'.
-
-2002-12-10 Werner LEMBERG <wl@gnu.org>
-
- Add glyph `tno', a textual variant of `no'.
-
- * font/devX*/*: Regenerated.
- * font/{devcp1047,devlatin1,devutf8,devhtml}/R.proto: Add `tno'.
- * font/devdvi/generate/{tc.map: Replace `no' with `tno'.
- * font/devdvi/generated/{texsy,textex}.map: Add `tno'.
- * font/devdvi/*: Regenerated.
- * font/devlbp/*: Add `tno'.
- * font/devlj4/generate/tex.map: Replace `no' with `tno'.
- * font/devlj4/*: Regenerated.
- * font/devps/generate/textmap: Replace `no' with `tno'.
- * font/devps/generate/symbolchars: Add `no'.
- * font/devps/*: Regenerated.
-
- * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Add `tno'.
-
- * tmac/cp1047.tmac, tmac/latin1.tmac: Replace `no' with `tno'.
- * tmac/tty-char.tmac: Add entry for `tno' and `3d'.
+ * tmac/s.tmac: Remove direct refer support and include
+ `refer-ms.tmac' instead.
+ * tmac/e.tmac: Remove direct refer support and include
+ `refer-me.tmac' instead.
* NEWS: Updated.
- * tmac/dvi.tmac: Replace most `\\' with `\E'.
- Add definition for `sd'.
- * tmac/X.tmac, tmac/ps.tmac: Replace most `\\' with `\E'.
-
- * tmac/eqnrc <dvi>: Use `integral' instead of `is' glyph.
+2011-01-22 Werner LEMBERG <wl@gnu.org>
-2002-12-08 Werner LEMBERG <wl@gnu.org>
+ [groff.texinfo]: Updates.
- * tmac/an-old.tmac (TH): Use integer value for `IN' if in nroff
- mode to avoid rounding errors.
- (an-do-tag, an-do-tag-html, RS, RE): Remove redundant `.br'.
+ * doc/groff.texinfo: Document groff's `-j' option.
+ Add dummy section for `chem' preprocessor.
- * src/roff/groff/groff.man, src/roff/nroff/nroff.man,
- src/roff/troff/troff.man: Improve documentation of -T.
+2011-01-22 Werner LEMBERG <wl@gnu.org>
-2002-12-07 Jeff Conrad <jeff_conrad@msn.com>
+ Update `grog'.
- * src/roff/groff/pipeline.c: Don't define `const' for _WIN32.
- (run_pipeline) [_WIN32]: Provide working function without `fork'.
+ * src/roff/grog/{groff.sh,groff.pl}: `groff' now calls `pic'
+ automatically if `grap' or `chem' is used.
+ `chem' has been folded into `groff'.
+ * src/roff/grog/grog.man: Updated.
-2002-12-06 Werner LEMBERG <wl@gnu.org>
+2011-01-22 Werner LEMBERG <wl@gnu.org>
- * font/devps/generate/freeeuro.sfd: Make dimensions of Euro.symbol
- glyphs compatible to Adobe's Euro fonts (scaling them down a bit).
- Scaling Euro.sansserif glyphs down to have the same height as
- digits.
- Removed unnecessary points; added some extrema.
+ Make `groff -G' imply `-p'.
- * font/devps/EURO, font/devps/freeeuro.afm, font/devps/freeeuro.pfa:
- Regenerated.
+ * src/roff/groff/groff.cpp (main): Implement it.
+ * src/roff/groff/groff.man: Updated.
-2002-12-04 Werner LEMBERG <wl@gnu.org>
+2011-01-22 Werner LEMBERG <wl@gnu.org>
- * font/devps/generate/freeeuro.sfd: Add glyphs `Euro.symbol.slanted'
- and `Euro.symbol.bold.slanted'.
- Improve some glyph offsets and widths.
- * font/devps/EURO, font/devps/freeeuro.afm, font/devps/freeeuro.pfa:
- Regenerated.
- * font/devps/generate/Makefile (freeeuro.afm freeeuro.pfa): Fix
- typo.
- * font/devps/generate/sfdtopfa.pe: Generate PFA in current
- direcory.
+ Integrate `chem' into `groff' (new option -j).
- * tmac/europs.tmac: Updated to new glyph indices.
- Use Euro.symbol for font familiy `A'.
+ * src/roff/groff/groff.cpp (CHEM_INDEX): New constant.
+ (main) ['j']: Add `chem'.
+ (synopsis, help): Updated.
+ * src/roff/troff/pipeline.h (MAX_COMMANDS): Increase to 14.
- * doc/groff.texinfo: Minor improvements.
+ * src/roff/groff/groff.man: Document new command line option.
+ * NEWS: Updated.
-2002-12-02 Werner LEMBERG <wl@gnu.org>
+2011-01-22 Werner LEMBERG <wl@gnu.org>
- * font/devdvi/generate.tc.map: s/%O/%0/.
- * font/devdvi/*TC: Regenerated.
+ * doc/groff.texinfo: `chem' is now part of groff.
- * src/roff/troff/div.cc (init_div_requests): Sorted.
+2011-01-22 Werner LEMBERG <wl@gnu.org>
- * tmac/dvi.tmac: Remove `Ye'.
- * tmac/ec.tmac: Remove `Ye'.
- Add .rchar entry for `de'.
+ * doc/groff.texinfo: Improve description of `.de'.
- * man/groff.man, man/groff_diff.man: Document register `.pe'.
- * doc/groff.texinfo: Document registers `.pe', `.n', and `.w'.
- * NEWS: Updated.
+ Based on suggestions by Ted Harding and Deri James.
-2002-11-30 Werner LEMBERG <wl@gnu.org>
-
- Add PS font for various Euro glyphs.
-
- * font/devps/generate/freeeuro.sfd: New master font file for
- pfaedit.
- * font/devps/generate/sfdtopfa.pe: New conversion script for
- pfaedit.
- * font/devps/generate/Makefile (FONTS): Add `EURO'.
- (EURO, freeeuro.afm, freeeuro.pfa): New rules.
- * font/devps/freeeuro.pfa, font/devps/freeeuro.afm: Generated from
- `freeeuro.sfd'.
- * font/devps/EURO: Generated from `freeeuro.afm'.
- * font/devps/download: Add `freeuro.pfa'.
- * font/devps/Makefile.sub (NORMALFILES): Adde `EURO' and
- `freeeuro.pfa'.
-
- * tmac/europs.tmac: New file.
- * tmac/ps.tmac: Include `europs.tmac'.
- * tmac/Makefile.sub (DISTFILES): Add `europs.tmac'.
-
-2002-11-29 Werner LEMBERG <wl@gnu.org>
-
- * font/devdvi/generate/texsy.map: Remove `lh' and `rh'.
- * font/devdvi/S: Regenerated.
- * font/devhtml/R.proto: Fix `CR' and `ci'.
- Add `OK'.
- * font/devps/generate/textmap: Fix `lh', `rh', and `sq'.
- Remove `bs'.
- * font/devps/symbolmap: Regenerated.
- * font/devutf8/R.proto: Fix `CR' and `ci'.
- Add `OK'.
- * font/devutf8/NOTES: Updated.
-
- * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Fix `CR' and
- `ci'.
- Add `OK'.
- * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Ditto.
-
- * tmac/dvi.tmac: Add `lh' and `rh'.
- * tmac/Xps.tmac: Fix `lh' and `rh'.
- * tmac/X.tmac: Add `OK'.
- * tmac/lj4.tmac: Ditto.
-
-2002-11-24 Werner LEMBERG <wl@gnu.org>
-
- * font/devX*/S: Regenerated.
- * font/devascii/R.proto, font/devcp1047/R.proto: Remove glyphs `lb',
- `lc', `lf', `lk', `lt', `rb', `rc', `rf', `rk', and `rt'.
- * font/devdvi/generate/texsy.map: Remove `or' glyph.
- * font/devdvi/S: Regenerated.
- * font/devhtml/R.proto, font/devutf8/R.proto: Add/fix glyphs
- `parenlefttp', `parenleftex', `parenleftbt', `parenrighttp',
- `parenrightex', `parenrightbt', `bracketlefttp', `bracketleftex',
- `bracketleftbt', `bracketrighttp', `bracketrightex',
- `bracketrightbt', `bracelefttp', `braceleftmid', `braceleftbt',
- `braceex', `braceleftex', `bracerightex', `bracerighttp',
- `bracerightmid', `bracerightbt', `lt', `lk', `lb', `rt', `rk',
- `rb', and `bv'.
- * src/roff/troff/glyphuni.cc, src/roff/troff/uniglyph.cc: Ditto.
- * font/devutf8/NOTES: Updated.
- * font/devlj4/generate/special.map: Add glyph `braceex'.
- * font/devlj4/S: Regenerated.
-
- * tmac/tty-char.tmac: Add glyphs `lf', `rf', `lc', and `rc'.
-
-2002-11-14 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Add `va'
- and `vA'.
- Fix code for `an'.
- * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Ditto.
-
- * doc/texinfo.tex: New version from texinfo 4.3.
- * doc/groff.texinfo: Updated for texinfo 4.3.
- Use @tie{} where appropriate.
- * font/devdvi/generate/ec.map: Don't include `or' and `bv'.
- * font/devdvi/generate/tc.map: Remove `rn'.
- * font/devdvi/*TC, font/devdvi/*EC: Regenerated.
- * font/devhtml/R.proto, font/devutf8/R.proto: Add `vA'.
- Fix code for `an'.
- * font/devX100/*, font/devX100-12/*, font/devX75/*,
- font/devX75-12/*: Regenerated.
-
- * tmac/dvi.tmac: Add special fonts `SA' and `SB'.
- Use .char (again) for `br', `ul', `rn', `or', and `ru'.
- Improve definition of `an'.
- * tmac/ps.tmac: Use .char (again) for `br', `ul', `rn', `or', and
- `ru'.
- * tmac/lj4.tmac: Use .char (again) for `br', `ul', `rn', and `ru'.
- * tmac/X.tmac: Add definition for `or'.
- * tmac/Xps.tmac: Undo change 2002-11-05.
- * tmac/lbp.tmac: Add definitions for `br', `rn', `ul', and `ru'.
-
-2002-11-11 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/node.cc (troff_output_file::put_char): Always
- call flush_tbuf.
-
-2002-11-10 Werner LEMBERG <wl@gnu.org>
-
- Added three new requests `schar', `fschar', and `rfschar'. `schar'
- defines a glyph which is searched after the check for fonts declared
- with `.special' (and before the check for all mounted special
- fonts). `fschar' defines a glyph for a particular font which is
- searched after the check for fonts declared with `.fspecial' (and
- before the check for fonts declared with `.special'). `rfschar'
- removes glyphs defined with `fschar'.
-
- * src/roff/troff/token.h (char_mode): New enum.
- Declare do_define_character.
- * src/roff/troff/charinfo.h (charinfo): Replace `fallback' with
- `mode'.
- (charinfo::is_fallback): Updated.
- (charinfo::is_special): New method.
- * src/roff/troff/input.cc (do_define_character): Add and use
- optional second parameter used as a prefix for font-specific glyph
- names.
- (define_character, define_fallback_character): Updated.
- (define_special_character): New function.
- (init_input_requests): Add `schar'.
- (charinfo::charinfo, charinfo::set_macro): Updated.
- * src/roff/troff/node.cc: Include `stringclass.h'.
- (make_glyph_node): Handle special glyphs defined with `.schar' and
- `.fschar'.
- (define_font_special_character, remove_font_special_character): New
- functions.
- (init_node_requests): Sorted.
- Add `fschar' and `rfschar'.
- * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
- Document new requests.
-
- * font/devhtml/R.proto, font/devutf8/R.proto: Add `va'.
- * tmac/dvi.tmac: Add `va' for CW and CWI (using `.fschar').
-
-2002-11-08 Werner LEMBERG <wl@gnu.org>
-
- Added new font `SC' (cmtex10) to devdvi.
-
- * devdvi/generate/Makefile (FONTS): Add `SC'.
- (SC): New rule.
- * devdvi/generate/textex.map: New map file for cmtex.
- * devdvi/SC: New.
- * devdvi/Makefile.sub (DEVFILES): Updated.
- * tmac/dvi.tmac: Add fspecial entries for SC.
- Add `MI', `S' and `CW' to the `special' call. Otherwise, `SC' is
- found before `S' since the font position of `SC' is lower due to the
- gaps in DESC's `font' line.
- * tmac/ec.tmac: Add a `special' call.
- * NEWS: Updated.
+2011-01-20 Colin Watson <cjwatson@debian.org>
- * font/devhtml/R.proto: Remove double entry for `ti'.
- * tmac/tty.tmac: Add entries for `IJ', `ij', and `bq'.
- * tmac/tty-char.tmac: Remove entry for `bq'.
- * tmac/lbp.tmac: Add entries for `lq', `rq', `fo', `fc', and `em'.
- * tmac/ec.tmac: Don't remove `aq' glyph.
- * tmac/X.tmac: Fix entry for `em'.
- Add entries for `fo' and `fc'.
- * tmac/dvi.tmac: Add entries for `em', `en', `hy', `fo', and `fc'.
-
- * doc/groff.texinfo, man/groff.man, man/groff_diff.man: Fix
- documentation of `special' and `fspecial' requests.
-
-2002-11-05 Werner LEMBERG <wl@gnu.org>
-
- * font/devascii/R.proto, font/devcp1047/R.proto,
- font/devlatin1/R.proto: Remove entry for `.i'.
- * font/devdvi/generate/textt.map: Add entry for `ad'.
- * font/devdvi/generate/texr.map, font/devdvi/generate/texb.map,
- font/devdvi/generate/texi.map: Add dummy glyph name `slash@for@l'.
- We need this for getting kerning values to compose `/l' and `/L'.
- * font/devdvi: Regenerated font definition files for CM fonts.
- * font/devhtml/R.proto: Add entries for "'C", "'c", `IJ', and `ij'.
- * font/devutf8/R.proto: Ditto.
- Remove double entry for `ti'.
-
- * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Fix entries
- for (groff) ligatures, `la', and `ra'.
- Add "'C", "'c", `IJ', and `ij'.
- Remove double entry for `ti'.
- * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Remove all
- double entries.
- Add "'C", "'c", `IJ', and `ij'.
- Fix entries for (groff) ligatures, `la', and `ra'.
-
- * tmac/ps.tmac (ps-achar): New macro.
- Define "'c" and "'C".
- * tmac/tty.tmac: Add entry for `.i'.
- * tmac/X.tmac (X-achar): New macro.
- Define "'c", "'C", and `:Y'.
- Add entries for `IJ' and `ij'.
- * tmac/Xps.tmac (Xps-achar): New macro.
- Define "'c" and "'C".
- Add entries for `IJ' and `ij'.
- * tmac/lbp.tmac (lbp-achar): New macro.
- Add fallback characters for all groff ligatures and many other
- glyphs.
- * tmac/dvi.tmac: Fix definitions of `_' and `ul'.
- Add entries for `/l' and `/L'.
- Define "'c" and "'C".
- Add entries for `IJ' and `ij'.
-
-2002-11-02 Larry Kollar <kollar@alltel.net>
-
- * PROBLEMS: Document how to solve Mac OS X compilation problems.
-
-2002-11-02 Werner LEMBERG <wl@gnu.org>
-
- Adding support for composite glyphs: \[xxx yyy ...] and the
- `composite' request.
-
- * src/roff/troff/glyphuni.cc: New file for mapping groff glyph names
- to Unicode-based glyph names.
- * src/roff/troff/uniglyph.cc: New file for mapping Unicode-based
- glyph names to groff glyph names.
- * src/roff/troff/uniuni.cc: New file for canonically decomposing
- Unicode-based glyph names.
- * src/roff/troff/unicode.cc, src/roff/troff/unicode.h: New files
- for handling Unicode glyph names.
- * src/roff/troff/input.cc: Include unicode.h.
- (composite_glyph_name): New function.
- (token::next) <'['>: Handle Unicode glyph names and composite
- glyphs.
- (composite_dictionary): New dictionary for the `composite' request.
- (composite_request): Implement `composite' request.
- (init_input_requests): Add `composite'.
- Alphabetically sorted.
- * src/roff/troff/env.cc (tabs_save, tabs_restore): Removed (already
- commented out).
- (init_env_requests): Alphabetically sorted.
- Removed `tas' and `tar' (already commented out).
- * src/roff/troff/Makefile.sub: Updated.
-
-2002-10-31 Ruslan Ermilov <ru@FreeBSD.org>
-
- * src/roff/nroff/nroff.man, src/roff/nroff/nroff.sh: Fix description
- of options.
-
-2002-10-29 Werner LEMBERG <wl@gnu.org>
-
- Fix computation of .trunc register. Additionally, its value (and
- the value of the .ne register) is now always set before entering the
- trap.
-
- * src/roff/troff/div.cc (diversion::need): Set `truncated_space' and
- `needed_space' before calling `space'.
- (top_level_diversion::space): Remove special code for 'sp before the
- first page.
- Call `begin_page' with the discarded space as a parameter.
- (top_level_diversion::begin_page): Add optional parameter to set
- `truncated_space'.
- * src/roff/troff/div.h: Updated.
-
- * doc/groff.texinfo: Improve documentation of .sp, \n[.trunc], and
- \n[.ne].
-
- * tmac/an-old.tmac (SH, SS, TP, IP, HP, TS): Undo change 2002-10-26.
- (LP): Remove superfluous call to `br'.
- * tmac/doc-common (doc-paragraph): Undo change 2002-10-26.
- * tmac/doc.tmac (Bd, Bl, doc-set-vertical-and-indent): Ditto.
-
-2002-10-26 Werner LEMBERG <wl@gnu.org>
-
- * tmac/doc-ditroff: Remove useless switch/variable -rC.
- (doc-setup-header): Don't set page register `%'.
- * tmac/doc-nroff: Remove variable `C'.
- (doc-setup-page-layout): Set doc-header-space to .5i unconditionally.
- (doc-setup-header): Don't set page register `%'.
- Don't call `bp'.
- * tmac/doc-common (doc-header): Call `ns'.
- (doc-paragraph): Protect .sp with .br so that it survives traps
- possibly set by the user.
- * tmac/doc.tmac (Bd, Bl, doc-set-vertical-and-indent): Ditto.
-
- * tmac/doc*: Replace ' with . for consistency if no effect.
-
-2002-10-26 Werner LEMBERG <wl@gnu.org>
-
- * tmac/an-old.tmac (SH, SS, TP, IP, HP, TS): Protect .sp with .br
- so that it survives traps possibly set by the user.
-
- * src/roff/troff/node.cc: Fix the changes from 2002-10-23.
- (troff_output_file::set_font): Call flush_tbuf if necessary.
- (troff_output_file::fill_color, troff_output_file::glyph_color): Call
- flush_tbuf and do_motion only if necessary.
- (troff_output_file::start_special,
- troff_output_file::put_char_width, troff_output_file::put_char,
- troff_output_file::draw): Updated.
- (word_space_node::tprint, space_node::tprint, hmotion_node::tprint,
- vmotion_node::tprint): Undo change 2002-10-23.
-
-2002-10-25 Werner LEMBERG <wl@gnu.org>
-
- * tmac/www.tmac (DC): Fix case of overlapping images.
-
-2002-10-23 Werner LEMBERG <wl@gnu.org>
-
- * src/roff/troff/node.cc (troff_output_file::fill_color,
- troff_output_file::glyph_color): Set current color before testing
- color_flag.
- (troff_output_file::put_char_width, troff_output_file::put_char,
- troff_output_file::draw): Don't call flush_tbuf and/or do_motion
- before glyph_color.
- (troff_output_file::file_color, troff_output_file::glyph_color):
- Call do_motion.
- (word_space_node::tprint, space_node::tprint, hmotion_node::tprint,
- vmotion_node::tprint): Move first, then call fill_color.
-
-2002-10-20 Werner LEMBERG <wl@gnu.org>
-
- * doc/groff.texinfo, man/groff_tmac.man: Document that it is not
- possible to use multiple main macro packages.
-
-2002-10-19 Werner LEMBERG <wl@gnu.org>
-
- * src/devices/grops/ps.cc (cmyk_flag): New global variable.
- (ps_printer::set_color): Set `cmyk_flag' for CMY and CMYK colors.
- (ps_printer::~ps_printer): Emit `%%Extensions: CMYK' if `cmyk_flag'
- is set.
- * font/devps/prologue.ps (Fk, Ck): Enclose definitions with a
- `where' construction since `cmyksetcolor' is a PS Level 2 operator.
-
-2002-10-16 Werner LEMBERG <wl@gnu.org>
+ Fix handling of wide characters in no-SGR mode.
- * NEWS, doc/webpage.ms: Updated.
+ * src/devices/grotty/tty.cpp (tty_printer::make_underline): Only
+ emit a single backspace in no-SGR mode. less (at least) backspaces
+ over a character at a time.
+ (tty_printer::make_bold): Likewise.
-2002-10-14 Werner LEMBERG <wl@gnu.org>
+2011-01-19 Werner LEMBERG <wl@gnu.org>
- * src/roff/troff/node.cc (troff_output_file::put_char_width,
- troff_output_file::put_char, troff_output_file::fill_color,
- troff_output_file::glyph_color): Handle case where color pointer
- is null.
+ * src/preproc/pic/pic.man: Add pic manual to `SEE ALSO' section.
-2002-10-13 Ruslan Ermilov <ru@FreeBSD.org>
+2011-01-14 Werner LEMBERG <wl@gnu.org>
- Add the new -r option to grotty. It is similar to the -i option
- except it tells grotty(1) to use the `reverse video' attribute to
- render italic fonts.
+ Split ChangeLog.
- * src/devices/grotty/tty.cc (reverse_flag): New global variable.
- (SGR_REVERSE, SGR_NO_REVERSE): New macros.
- (tty_printer::make_underline, tty_printer::put_color,
- tty_printer::end_page): Use it.
- (main): Add -r switch.
- (usage): Updated.
- * src/devices/grotty/grotty.man: Document it.
+ * ChangeLog: Split off older entries into...
+ * ChangeLog.119, ChangeLog.120: these new files.
-2002-10-11 Ruslan Ermilov <ru@FreeBSD.org>
+2011-01-15 Colin Watson <cjwatson@debian.org>
- * src/roff/troff/env.cc (hyphen_trie::read_patterns_file): Add
- cast to `unsigned char' to properly read patterns with 8bit
- characters.
+ * Makefile.comm (INCLUDES): Fix typo.
-2002-10-08 Werner LEMBERG <wl@gnu.org>
+2011-01-05 Werner LEMBERG <wl@gnu.org>
- * REVISION: Increased to 2.
+ * doc/webpage.ms: Fix rendering of title image.
-Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright 2011-2013
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
@@ -9048,5 +1038,5 @@ notice and this notice are preserved.
Local Variables:
version-control: never
-coding: latin-1
+coding: utf-8
End:
diff --git a/ChangeLog.119 b/ChangeLog.119
new file mode 100644
index 0000000..91388e3
--- /dev/null
+++ b/ChangeLog.119
@@ -0,0 +1,5238 @@
+
+Version 1.19.2 released
+=======================
+
+ * tmac/groff_ms.man, doc/groff.texinfo: Synchronize.
+
+ * doc/webpage.ms: Updated.
+
+ * install-sh, mkinstalldirs: New versions; taken from texinfo CVS.
+
+2005-09-04 Jrgen Grahn <jgrahn@algonet.se>
+
+ * tmac/groff_ms.man: Document `PO' better.
+
+2005-09-03 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS: Document grotty changes.
+
+2005-09-01 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ Backward compatibility support for `man' program.
+
+ * tmac/an-old.tmac (LL): Initialize it to respect prior LL register
+ assignment, prior `.ll' request and then package defaults, in this
+ specified order of decreasing priority.
+
+ * tmac/groff_man.man, doc/groff.texinfo (Man options): Document
+ altered `LL' register initialization priorities.
+
+2005-08-29 Gary W. Swearingen <garys@opusnet.com>
+
+ * tmac/groff_mdoc.man: Go into more details how the `AUTHORS'
+ section should look like.
+
+2005-08-29 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/groff_mdoc.man: The month's name in a call to .Dd shouldn't
+ be abbreviated.
+
+2005-08-27 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * tmac/groff_man.man: Add man(7) too SEE ALSO and more minor
+ fixes.
+
+2005-08-11 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * tmac/www.tmac (URL, MTO): Handle empty \\$1 better.
+
+2005-08-09 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * tmac/www.tmac (URL, MTO): Use bold series if color support is
+ deactivated.
+
+2005-08-02 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * doc/Makefile.sub (uninstall_sub): Use --remove, not --delete
+ as argument to $(INSTALL_INFO). The latter isn't portable.
+ Remove $(HTMLEXAMPLEFILES) too.
+
+ * Makefile.in (uninstall_dirs): Remove $(datadir)/doc/groff and
+ $(datadir)/doc too.
+ Suppress warning messages and return always true.
+
+ * tmac/Makefile.sub (uninstall_sub): Remove www.tmac too.
+
+2005-07-02 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * src/devices/xditview/gxditview.man: Change many `.I' to `.B'.
+ * man/groff_out.man: More markup and minor improvements.
+ * src/roff/groff/groff.man: Minor improvements.
+
+2005-06-28 Werner LEMBERG <wl@gnu.org>
+
+ * ChangeLog: Split off older entries into...
+ * ChangeLog.115 ChangeLog.116, ChangeLog.117, ChangeLog.118: New
+ files.
+
+2005-06-26 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * src/devices/xditview/gxditview.man: More minor fixes.
+
+2005-06-24 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/pic/troff.cpp (troff_output::set_fill,
+ troff_output::set_color, troff_output::reset_color): Use .bcolor and
+ .fcolor instead of \m and \M, respectively.
+
+2005-06-23 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * src/devices/xditview/gxditview.man: More minor fixes.
+ * README: Formatting issues.
+ Mention some problems with Debian.
+
+2005-06-23 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * src/devices/xditview/gxditview.man: Revised and improved.
+
+2005-06-22 Werner LEMBERG <wl@gnu.org>
+
+ Another round in fixing getopt problems. Hopefully the last one!
+ This time we use the getopt stuff from gnulib and define a prefix
+ unconditionally so that there are no collisions with any other
+ getopt implementations. This is a slight waste of space in case
+ we already use a GNU getopt implementation, but on
+ the other hand it really simplifies life.
+
+ * src/include/getopt.h: Use gnulib version.
+
+ * src/include/getopt_int.h: Use gnulib version.
+
+ * src/include/groff-getopt.h: Removed. Obsolete now.
+
+ * src/include/lib.h: Regarding getopt, don't handle any platform
+ specially; just include getopt.h.
+ (__GETOPT_PREFIX): Define (before getopt.h).
+
+ * src/include/Makefile.sub (HDRS): Updated.
+
+ * src/libs/libgroff/getopt1.c, src/libs/libgroff/getopt.c: Use
+ gnulib version.
+
+ * src/libs/libgroff/Makefile.sub (EXTRA_CFLAGS): Set
+ __GETOPT_PREFIX.
+
+ * src/utils/pfbtops/pfbtops.c, src/utils/xtotroff/xtotroff.c
+ (__GETOPT_PREFIX): Define (before getopt.h).
+
+2005-06-21 Werner LEMBERG <wl@gnu.org>
+
+ * src/include/lib.h: Provide a fix for Mac OS X to not include
+ groff-getopt.h.
+
+2005-06-20 Denis M. Wilson <dmw@oxytropis.plus.com>
+
+ * font/devps/prologue.ps (EP): Dont' use `bind'. Reason: Using
+ `bind' to define a procedure which contains `showpage' means that an
+ invocation of `showpage' may execute wrongly (the exact effect
+ depending on the interpreter). Not usually a problem except under
+ transformations, such as combining pages.
+ (PEND): Don't call `clear'. Reason: Using `clear' in the definition
+ of /PEND means that stack underflow will occur if the stack is
+ deliberately non-empty before document inclusion. If included
+ files are found to be generally badly behaved, we could replace the
+ `clear' with `mark' in /PBEGIN and `cleartomark' in /PEND (I've
+ never found this necessary).
+
+2005-06-20 Jrgen Grahn <jgrahn@algonet.se>
+
+ * src/preproc/soelim/soelim.cpp (do_file): Append trailing zero
+ earlier to get correct error message.
+
+2005-06-16 Bernd Warken <groff-bernd.warken-72@web.de>
+ * src/roff/nroff/nroff.sh: Add support for iso-8859-15.
+
+2005-06-15 Werner LEMBERG <wl@gnu.org>
+
+ Another try to update getopt files. This time we add a dummy
+ gettext.h file to satisfy the dependency.
+
+ * src/include/getopt.h, src/libs/libgroff/getopt.c,
+ src/libs/libgroff/getopt1.c: Updated from GNU libc CVS.
+
+ * src/include/getopt_int.h: New file (from GNU libc CVS).
+
+ * src/include/gettext.h: Dummy file which just defines a gettext()
+ macro.
+
+ * src/include/groff-getopt.h: Updated.
+
+ * src/include/Makefile.sub (HDRS): Add getopt_int.h and gettext.h.
+
+
+ * src/libs/libdriver/input.cpp (IntArray): Remove superfluous
+ `const' keywords in return value.
+
+ * src/preproc/html/pushback.cpp (pushBackBuffer::~pushBackBuffer):
+ Remove redundant variable `old'.
+ (pushBackBuffer::skipToNewline): Remove redundant variable `ch'.
+
+ * src/preproc/tbl/main.cpp (process_table): Remove redundant
+ variable `c'.
+
+
+ Fix more friend name injection problems since modern C++ compilers
+ fail otherwise. We simply provide (global) declarations for all
+ functions declared as friends. This is not really necessary but
+ doesn't harm.
+
+ * src/preproc/eqn/lex.cpp: Provide declarations for get_char,
+ peek_char, and get_location.
+
+ * src/preproc/refer/ref.h: Provide declarations for
+ compare_reference, same_reference, same_year, same_date,
+ same_author_last_name, and same_author_name.
+
+ * src/roff/troff/div.h: Provide declarations for do_divert and
+ page_offset.
+
+ * src/roff/troff/env.h: Provide declarations for title_length,
+ space_size, fill, no_fill, adjust, no_adjust, center, right_justify,
+ vertical_spacing, post_vertical_spacing, line_spacing, line_length,
+ indent, temporary_indent, do_underline, do_input_trap, set_tabs,
+ margin_character, no_number, number_lines, leader_character,
+ tab_character, hyphenate_request, no_hyphenate,
+ hyphen_line_max_request, hyphenation_space_request,
+ hyphenation_margin_request, line_width, tabs_save, tabs_restore,
+ line_tabs_request, widow_control_request, and do_divert.
+
+ * src/roff/troff/input.cpp: Provide declaration for chop_macro.
+
+ * src/roff/troff/node.cpp: Provide declarations for class
+ tfont_spec.
+ Provide declaration for make_tfont.
+
+2005-05-29 Werner LEMBERG <wl@gnu.org>
+
+ * doc/fdl.texi: Updated to version 1.2. Reported by
+ Bernd Warken <groff-bernd.warken-72@web.de>.
+
+2005-05-28 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grolbp/lbp.cpp, src/devices/grolbp/lbp.h: Remove
+ redundant semicolons.
+
+ * src/preproc/eqn/Makefile.sub, src/preproc/html/Makefile.sub,
+ src/preproc/soelim/Makefile.sub, src/preproc/tbl/Makefile.sub:
+ Define `MLIB'. Some compilers need this for linking with libgroff.
+
+2005-05-27 Werner LEMBERG <wl@gnu.org>
+
+ * MANIFEST, README, doc/webpage.ms: Updated.
+
+2005-05-26 Werner LEMBERG <wl@gnu.org>
+
+ * All affected files: Update postal address of FSF.
+
+2005-05-25 Keith Marshall <keith.d.marshall@ntlworld.com>
+ Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * README: More fixes.
+
+ * README.CVS: Removed. Its contents is now part of the README file.
+
+2005-05-21 Werner LEMBERG <wl@gnu.org>
+
+ * README: Updated. Based on a patch from
+ Bernd Warken <groff-bernd.warken-72@web.de>.
+
+2005-05-16 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ Miscellaneous script portability enhancements.
+
+ * aclocal.m4: (GROFF_CSH_HACK): Add space in shebang prototype for
+ generated conftest.sh script, conforming to portability
+ recommendation in autoconf docs.
+ * configure: Likewise, for code generated by GROFF_CSH_HACK.
+ * contrib/eqn2graph/eqn2graph.sh: Add space in shebang, conforming
+ to portability recommendation in autoconf docs.
+ * contrib/grap2graph/grap2graph.sh: Likewise.
+ * contrib/pic2graph/pic2graph.sh: Likewise.
+ * font/devps/generate/afmname: Likewise.
+ * src/devices/xditview/ad2c: Likewise.
+ * src/preproc/eqn/neqn.sh: Likewise.
+ * src/roff/grog/grog.pl: Likewise.
+ * src/roff/grog/grog.sh: Likewise.
+ * src/roff/nroff/nroff.sh: Likewise.
+ * PROBLEMS: Likewise, in embedded script examples.
+
+2005-05-16 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ Improve portability of `pdfroff' shell script.
+
+ * arch/misc/shdeps.sh: Add space in shebang, conforming to
+ portability guidelines in `autoconf' docs.
+ (PATH_SEARCH_SETUP): New substitution; emits PATH_SEPARATOR
+ initialization code. Used by contrib/pdfmark/pdfroff.sh's
+ `searchpath' function.
+
+2005-05-14 Werner LEMBERG <wl@gnu.org>
+
+ * contrib/pic2graph/pic2graph.sh, contrib/graph2graph.sh,
+ contrib/eqn2graph.sh: Add option `-trim' to `convert' which is
+ needed for newer ImageMagick versions.
+
+2005-05-07 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/refer/refer.man: Many small typographic fixes.
+
+2005-05-06 Jeff Conrad <jeff_conrad@msn.com>
+
+ * src/devices/grohtml/post-html.cpp (assert_state::~assert_state):
+ Use `char *' cast for a_delete.
+
+2005-05-03 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/maxpathname.cpp: Include stdlib.h.
+ src/libs/libgroff/relocate.cpp: Use path_name_max everywhere.
+
+2005-05-03 Jeff Conrad <jeff_conrad@msn.com>
+
+ * src/devices/grohtml/post-html.cpp: Use casts to `char *' if using
+ `a_delete' for `const char *'.
+
+2005-05-03 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grohtml/post-html.cpp,
+ src/devices/grohtml/html-table.cpp,
+ src/devices/grohtml/html-text.cpp, src/devices/grohtml/output.cpp:
+ Replace malloc/free with new/delete/a_delete.
+
+ * src/devices/grolbp/lbp.h: Remove superfluous semicolons which
+ are prohibited with ANSI C++.
+ (lbpprintf, vdmprintf): Remove useless `inline' keyword (since the
+ function has a variable number of arguments).
+
+ * src/preproc/grn/main.cpp (doinput): Change return type to `int'.
+ Simplify function and update all callers.
+
+2005-05-02 Werner LEMBERG <wl@gnu.org>
+
+ Undo getopt changes from 2005-04-30. We don't want a dependency
+ on gettext.
+
+ * src/include/getopt_int.h: Removed.
+
+ * src/include/getopt.h, src/include/groff-getopt.h,
+ src/include/Makefile.sub, src/libs/libgroff/getopt.c,
+ src/libs/libgroff/getopt1.c: Revert to previous version.
+
+
+ * src/include/nonposix.h (access) [_MSC_VER]: New macro.
+
+ * src/include/posix.h (F_OK): Define conditionally.
+
+ * src/devices/grotty/tty.cpp (tty_printer::make_underline): Use
+ different variable name in second `for' loop to avoid MSVC compiler
+ problem.
+
+2005-04-30 Werner LEMBERG <wl@gnu.org>
+
+ AC_TYPE_SIGNAL from current autoconf can fail if CC=g++.
+
+ * aclocal.m4 (GROFF_TYPE_SIGNAL): New function.
+ * configure.ac: Use GROFF_TYPE_SIGNAL, not AC_TYPE_SIGNAL.
+ * configure, src/include/config.hin: Regenerated.
+
+ * PROBLEMS: Updated.
+
+
+ Update getopt files.
+
+ * src/include/getopt.h, src/libs/libgroff/getopt.c,
+ src/libs/libgroff/getopt1.c: Updated from GNU libc CVS.
+
+ * src/include/getopt_int.h: New file (from GNU libc CVS).
+
+ * src/include/groff-getopt.h: Updated.
+
+ * src/include/Makefile.sub (HDRS): Add getopt_int.h.
+
+
+ * font/devutf8/NOTES: Updated.
+
+2005-04-28 Werner LEMBERG <wl@gnu.org>
+
+ Bug fix for Win32 relocatable code. Based on a patch from Keith
+ Marshall.
+
+ * src/libs/libgroff/maxpathname.cpp (PATH_MAX): Test for `_MAX_PATH'
+ also.
+
+ * src/libs/libgroff/relocate.c (DEBUG): Define it conditionally.
+ (searchpath) [_WIN32]: Use `_fullpath', not `realpath'.
+
+2005-04-28 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ Correct `gnu.eps' handling for build from distribution tarball, with
+ separate source and build directories.
+
+ * doc/Makefile.sub: (examples.stamp): New target; forces copy of
+ grnexmpl.g, groff.css and gnu.eps from source to build directory;
+ generate gnu.eps from gnu.xpm if required; touch examples.stamp.
+ (prepare_examples): Make it depend on examples.stamp.
+ (CLEANADD): Add examples.stamp.
+
+2005-04-27 Werner LEMBERG <wl@gnu.org>
+
+ Implement the rule
+
+ position: `(' position `)'
+
+ in pic.
+
+ * src/preproc/pic/pic.y (position, position_not_place): Handle
+ additional parentheses.
+
+ * doc/pic.ms: Updated.
+
+2005-04-23 Larry Jones <lawrence.jones@ugs.com>
+
+ * src/utils/xtotroff/xtotroff.c (MapFont): Fix variable declaration.
+
+2005-04-18 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/groff/pipeline.c: Don't include ctype.h.
+
+2005-04-13 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/nroff/nroff.man: Document option `-M'.
+
+2005-04-13 Bruce Lilly <blilly@erols.com>
+
+ * src/roff/nroff/nroff.sh: Make the script accept option `-M'.
+
+2005-04-01 Kees Zeelenberg <kzlg@users.sourceforge.net>
+ Werner LEMBERG <wl@gnu.org>
+
+ Add binary relocation support for Windows platforms.
+
+ * src/include/Makefile.sub (defs.h): Add `INSTALLPATH'.
+
+ * src/include/relocate.h, src/libs/libgroff/relocate.cpp: New files.
+
+ * src/libs/libgroff/searchpath.cpp: Handle `relocate'.
+ (search_path::search_path, search_path::open_file_cautious): Use
+ `relocate'.
+
+ * src/libs/libgroff/Makefile.sub (OBJS, CCSRCS),
+ src/include/Makefile.sub (HDRS): Updated.
+
+2005-04-01 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grohtml/post-html.cpp: Don't use strdup/free but
+ strsave/a_delete.
+
+ * src/libs/libgroff/font.cpp: Replace strdup with strsave.
+
+ * src/libs/libgroff/maxfilename.cpp: Don't include limits.h since
+ lib.h already does it.
+
+ * src/libs/libgroff/maxpathname.cpp: New file, defining
+ path_name_max.
+
+ * src/include/lib.h: Add prototype for path_name_max.
+
+ * src/libs/libgroff/Makefile.sub (OBJS, CCSRCS): Updated.
+
+ * src/include/nonposix.h (PATH_EXT): New macro.
+
+2005-03-28 Werner LEMBERG <wl@gnu.org>
+
+ Add support for double- and zero-width characters in grotty.
+
+ * src/devices/grotty/tty.cpp (glyph): Add width.
+ (tty_printer::make_underline, tty_printer::make_bold,
+ tty_printer::add_character): Add parameter to pass character width.
+ Update all callers.
+ (tty_printer::end_page): Increase hpos by actual character width.
+
+ * font/devutf8/R.proto: Specify zero width for non-spacing
+ characters.
+
+ * tmac/unicode.tmac: Remove definitions for non-spacing entities.
+
+ * Makefile.comm (extraclean): Remove more junk files.
+
+2005-03-25 Werner LEMBERG <wl@gnu.org>
+
+ * configure.ac: Undo change from 2005-03-24.
+ * configure: Regenerated.
+
+2005-03-24 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.in (NOMAKEDIRS): Add contrib/gdiffmk/tests.
+ (dist): Search Makefile while descending into $(EXTRADIRS).
+
+ * doc/Makefile.in (.PHONY): Add.
+ (clean): Don't remove *.png and *.eps.
+ Don't handle *.gif.
+ (realclean): Remove *.png and *.eps.
+ (extraclean): Depend on distclean.
+
+ * configure.ac: Add copyright.
+ Handle contrib/pdfmark/Makefile.
+
+ * configure: Regenerated.
+
+2005-03-18 Larry Kollar <kollar@alltel.net>
+
+ Add numbered and definition lists to www.tmac.
+
+ * tmac/www.tmac (www-ul-level1, www-ul-level2, www-ul-level3,
+ www-ol-level1, www-ol-level2, www-ol-level3, www-ol-tmp): New
+ auxiliary string registers.
+ (www-ul-level, www-ol-level, www-dl-level, www-ol-ctr1, www-ol-ctr2,
+ www-ol-ctr3, www-dl-shift): New auxiliary number registers.
+ (www-level): Removed.
+ (www-level1, www-level2, www-level3): Initialize to empty.
+ (www-level0, www-level4, www-level5, www-level6, www-level7,
+ www-level8, www-level9): New string registers.
+ (www-push-li, www-pop-li): New macros.
+ (www-push-level, www-pop-level): Renamed to...
+ (www-push-ul-level, www-pop-ul-level): This.
+ Updated.
+ (www-push-ol-level, www-pop-ol-level): New macros.
+ (ULS, ULE): Updated.
+ (OLS, OLE, DLS, DLE): New user macros.
+ (LI): Removed. It is aliased to one of...
+ (www-li-ul, www-li-ol, www-li-dl): New macros.
+
+ * tmac/groff_www.man: Document new macros.
+
+ * NEWS: Updated.
+
+2005-03-18 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc-common (doc-operating-system-NetBSD-2.0.1,
+ doc-operating-system-NetBSD-2.0.2): New strings.
+
+ * tmac/groff_mdoc.man: Updated.
+
+2005-03-17 Werner LEMBERG <wl@gnu.org>
+
+ * doc/Makefile.sub (CLEANADD): Add `groff.html'.
+
+2005-03-17 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/hypot.c: Renamed to...
+ * src/libs/libgroff/hypot.cpp: This. Updated to C++.
+
+ * src/libs/libgroff/Makefile.sub (CCSRCS, CSRCS): Updated.
+
+ * src/include/lib.h: Updated.
+
+2005-03-16 Werner LEMBERG <wl@gnu.org>
+
+ Add workaround for broken hypot() on Interix.
+
+ * src/libs/libgroff/hypot.c: New wrapper file for `hypot'.
+
+ * src/libs/libgroff/Makefile.sub (OBJS): Add `hypot.o'.
+ (CSRCS): Add `hypot.c'.
+
+ * src/include/lib.h: Declare `groff_hypot'.
+
+ * src/preproc/grn/hgraph.cpp: Don't declare `hypot'.
+ Use `groff_hypot'.
+
+ * src/preproc/pic/pic.h: Don't declare `hypot'.
+
+ * src/preproc/pic/object.cpp (hypot): Use `groff_hypot'.
+
+2005-03-15 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/devices/grohtml/post-html.cpp
+ (html_printer::lookahead_for_tables): End .ce properly to avoid a
+ segfault.
+
+2005-03-15 Werner LEMBERG <wl@gnu.org>
+
+ makeinfo 4.8 doesn't produce good HTML output from groff.texinfo.
+
+ * doc/fixinfo.sh: New script to postprocess makeinfo's HTML output.
+
+ * doc/Makefile.in (.texinfo.html): Call fixinfo.sh.
+
+2005-03-14 Werner LEMBERG <wl@gnu.org>
+
+ Add Cyrillic support to devutf8 and devhtml.
+
+ * font/devutf8/R.proto, font/devhtml/R.proto: Add Cyrillic blocks.
+
+ * tmac/unicode.tmac: New file.
+
+ * tmac/tty.tmac: Include unicode.tmac if device is utf8.
+
+ * tmac/Makefile.sub (NORMALFILES): Add unicode.tmac.
+
+ * NEWS: Updated.
+
+2005-03-02 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * src/libs/libdriver/printer.cpp (check_for_output_error): New
+ function. It has been introduced to catch peculiar error contexts
+ on MS-Windows platforms.
+
+2005-02-28 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cpp (string_iterator::fill): Protect against
+ null pointer.
+
+ * tmac/papersize.tmac: Convert `paper' string contents to lowercase.
+
+ * configure: Regenerated.
+
+ * NEWS: Updated.
+
+2005-02-28 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ Integrate `pdfmark' into normal groff build system;
+ install macro `pdfmark' packages, build and install `pdfroff',
+ and PDF format documentation.
+
+ * Makefile.comm: Add PDFDOCDIR.
+
+ * Makefile.in: (MDEFINES) ALT_AWK_PROGS, ALT_GHOSTSCRIPT_PROGS,
+ pdfdocdir, make_pdfdoc, make_install_pdfdoc: New variables.
+ (unstall_dirs): Add pdfdocdir.
+
+ * aclocal.m4: (GROFF_GHOSTSCRIPT_PREFS): New function; support
+ `--with-alt-gs' option, set ALT_GHOSTSCRIPT_PROGS.
+ (GROFF_GHOSTSCRIPT_PATH): Support `--with-gs' option, force use of
+ GROFF_GHOSTSCRIPT_PREFS, set GHOSTSCRIPT.
+ (GROFF_HTML_PROGRAMS): Force use of GROFF_GHOSTSCRIPT_PATH; tidy up.
+ (GROFF_AWK_PREFS): New function; support `--with-alt-awk' option,
+ set ALT_AWK_PROGS.
+ (GROFF_AWK_PATH): New function; support `--with-awk' option, force
+ use of GROFF_AWK_PREFS.
+ (GROFF_PDFDOC_PROGRAMS): New function; force use of GROFF_AWK_PATH
+ and GROFF_GHOSTSCRIPT_PATH, set make_pdfdoc and make_install_pdfdoc.
+
+ * configure.ac: Add AC_PREREQ(2.59), GROFF_PDFDOC_PROGRAMS.
+ Remove GROFF_GHOSTSCRIPT_PATH, (forced by GROFF_PDFDOC_PROGRAMS, and
+ also by modified GROFF_HTML_PROGRAMS).
+
+2005-02-27 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/devices/grohtml/html-text.cpp (html_text::do_pre): Preserve
+ paragraph spacing.
+ (html_text::done_para): Unset `start_space'.
+ (html_text::remove_para_align): Call `retrieve_para_space' for the
+ spacing.
+
+ * src/devices/grohtml/post-html.cpp (html_printer::emit_raw): Unset
+ `seen_space'.
+ (html_printer::do_check_center): Emit vertical space if necessary.
+
+ * src/roff/troff/env.cpp (environment_switch): Preserve
+ `seen_space', `seen_eol', and `suppress_next_eol' while switching
+ environments.
+
+ * src/roff/troff/node.cpp (suppress_node::suppress_node): Set
+ `is_special'.
+
+2005-02-20 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/eqn/eqn.man, NEWS: Document various extensions of
+ eqn.
+
+2005-02-17 Werner LEMBERG <wl@gnu.org>
+
+ * doc/pic.ms, man/groff.man: Fix typos.
+
+ * doc/groff.texinfo: Fix typos.
+ (\LEmacro): Get proper mathematical spacing.
+
+2005-02-16 Werner LEMBERG <wl@gnu.org>
+
+ * aclocal.m4 (GROFF_APPRESDIR_CHECK): Improve warning message.
+ * configure: Regenerated with autoconf 2.59b.
+
+2005-02-16 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/devices/grohtml/post-html.cpp (html_printer::is_line_start,
+ html_printer::start_font): Fix handling of preformatted text.
+
+2005-02-15 Gaius Mulley <gaius@glam.ac.uk>
+
+ These patches modify the indentation implementation to use `<p
+ style=margin-left: n%>'. Many thanks to Peter and Larry for
+ suggesting this solution. Grohtml only uses tables for `.IP' and
+ related tags when the first operand has a short width.
+
+ Similarly, they modify all vertical space code. By default, grohtml
+ sets up a style sheet which uses no vertical space between `table',
+ `pre', and `p' tags. It forces spaces when it needs them using
+ `style="margin-top: 1em"'.
+
+ * src/devices/grohtml/html-table.cpp: Include `html-text.h'.
+ (html_table::emit_table_header, html_table::emit_new_row):
+ Rewritten.
+ (html_table::set_space): New function.
+ (html_indent::html_indent): Don't set `is_used'.
+ (html_indent::begin): Rewritten.
+ (html_indent::end): Remove code in function.
+
+ * src/devices/grohtml/html-table.h: Updated.
+ (html_table): Make `out' public.
+
+ * src/devices/grohtml/html-text.cpp (html_text::html_text):
+ Initialize `start_space' with FALSE.
+ (html_text::end_tag) <P_TAG, PRE_TAG>: Updated.
+ (html_text::issue_tag): Add argument to handle space style.
+ (html_text::start_tag) <P_TAG, PRE_TAG>: Updated.
+ (html_text::flush_text): Don't set `start_space'.
+ (html_text::push_para): Don't set `p->really_issued'.
+ (html_text::do_emittext): Updated.
+ (html_text::do_para): Add paremeter to handle space.
+ Update all callers.
+ (html_text::retrieve_para_space): New function.
+
+ * src/devices/grohtml/html-text.h (STYLE_VERTICAL_SPACE): New macro.
+ (tag_definition): Remove `really_issued'.
+ (html_text): Updated.
+
+ * src/devices/grohtml/post-html.cpp (html_printer): Add variables
+ `current_column' and `row_space'.
+ Update constructor.
+ (html_printer::emit_raw, html_printer::write_header,
+ html_printer::do_indent, html_printer::do_check_center,
+ html_printer::do_tab_ts): Handle vertical space.
+ (html_printer:do_tab_te, html_printer::do_end_para): Call
+ `remove_para_space'.
+ (html_printer::do_col): Rewritten.
+ (html_printer::flush_globs): Remove debugging code.
+ (html_printer::is_line_start): New function.
+ (html_printer::start_font): Use `is_line_start'.
+ (html_printer::writeHeadMetaStyle): New function.
+ (html_printer::do_file_components, html_printer::~html_printer):
+ Call `writeHeadMetaStyle'.
+
+ * tmac/www.tmac (www-handle-percent): New macro.
+ (MPIMG): Handle percent values for width and height parameters.
+ (DC): Updated.
+
+ * tmac/groff_www.man: Updated.
+
+2005-02-14 Werner LEMBERG <wl@gnu.org>
+
+ * src/utils/afmtodit/afmtodit.pl: Remove an incorrect `my' from
+ $psname and $italic_angle.
+ Immediately restart file input loops if `split' returns an empty
+ array.
+
+2005-02-13 Michail Vidiassov <master@iaas.msu.ru>
+ Werner LEMBERG <wl@gnu.org>
+
+ Update afmtodit to better support Unicode (Michail).
+ Update afmtodit to use Perl 5 syntax (Werner).
+
+ * src/utils/afmtodit/afmtodit.pl: Don't use `getopts.pl' but
+ `Getopts::Std'.
+ Decorate variables with `my' where necessary.
+ Use `defined' where necessary to avoid warnings.
+ Don't use `do' for subroutine calls.
+ Other minor syntax updates.
+ Check for both `uXXXX[X[X]]' and `uniXXXX'.
+ Handle glyph variants properly.
+ (%unicode_decomposed, %AGL_to_unicode): Don't use `u' prefix in
+ strings.
+
+ * src/utils/afmtodit/afmtodit.man: Updated.
+
+2005-02-13 Werner LEMBERG <wl@gnu.org>
+
+ Make groff.texinfo work with texinfo 4.8.
+
+ * doc/groff.texinfo (@Var): Use @r and @slanted.
+ (@defdummy, @Def*): Use @c to avoid empty lines.
+ (\angles): Replaced with...
+ (\Langlemacro, \Ranglemacro): New TeX macros.
+ (@Langlemacro, @Ranglemacro): New variables defined with @set.
+ (@angles): Use @Langlemacro and @Ranglemacro.
+ (\LE): Replaced with...
+ (\LEmacro): New TeX macro.
+ (@LEmacro): New variable defined with @set.
+ (@LE): Use @LEmacro.
+ (@Lparenmacro, @Rparenmacro, @Lbrackmacro, @Rbrackmacro): New
+ variables defined with @set.
+ (@lparen, @rparen, @lbrack, @rbrack): Replaced with...
+ (@Lparen, @Rparen, @Lbrack, @Rbrack): New macros.
+ Update all callers.
+
+ Other minor updates.
+
+ * doc/texinfo.tex: Update to texinfo version 4.8.
+
+ * README.CVS: Updated.
+
+2005-02-09 Alejandro Lpez-Valencia <palopez@etb.net.co> (tiny change)
+
+ * doc/groff.texinfo (ms Document Control Registers): Document `HY'
+ and `FAM' registers.
+
+2005-02-05 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/groff_mdoc.man, tmac/doc-common, tmac/doc-ditroff,
+ tmac/doc-nroff, tmac/doc-old.tmac, tmac/doc-syms, tmac/doc.tmac:
+ Update BSD license.
+
+2005-02-01 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/groff/groff.man: Add information about paper size.
+
+2005-01-25 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/nroff/nroff.sh: Handle `*.ISO8859-1' in locale. From
+ NetBSD bin/29114.
+
+2005-01-22 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/doc.tmac (Sm): Improved. It didn't work properly in many
+ cases.
+ (Re): Emit a warning if called without `.Rs'.
+ (doc-finish-reference): Use parameter for decreasing
+ `doc-reference-count'.
+ (doc-print-reference): Pass specific count parameters to
+ `doc-finish-reference'.
+
+2005-01-21 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libdriver/input.cpp (delete_current_env, do_file):
+ Reset pointers to zero after deallocation. This fixes a crash
+ if a driver is called with multiple input files. Reported by
+ Ken Chilton <ken@chiltonfamily.org>.
+
+ * src/devices/grops/grops.man: Add more info on DSC.
+
+2005-01-17 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/doc-common (Dd), tmac/doc-ditroff (gX, doc-setup-header):
+ Remove dead code.
+
+2005-01-17 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/div.cpp (top_level_diversion::space): Protect
+ against division by zero.
+
+2005-01-13 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/doc.tmac (Ef): Restore doc-curr-font and doc-curr-size.
+
+2004-12-19 Werner LEMBERG <wl@gnu.org>
+
+ * install-sh: New version; taken from texinfo CVS.
+
+2004-12-17 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/devtag.tmac: Protect against loading twice.
+ Protect agains compatibility mode.
+ * tmac/www.tmac: Protect against loading twice.
+ Load `devtag.tmac' before switching off compatibility mode.
+ * tmac/an-old.tmac, tmac/s.tmac: Load `devtag.tmac'.
+
+2004-12-16 Mike Bianchi <mbianchi@Foveal.com>
+
+ * configure.ac: Produce `contrib/gdiffmk/tests/runtests'.
+ * configure: Updated.
+
+2004-12-15 Thomas Klausner <wiz@netbsd.org>
+
+ * tmac/doc-syms, tmac/groff_mdoc.man: Add `libpam' library.
+
+2004-12-15 Werner LEMBERG <wl@gnu.org>
+
+ Make `test-groff' work again -- previously, wrong paths have been
+ used. Additionally, it can now be called from anywhere.
+
+ * test-groff.in: Don't test for groff binary. This is no longer
+ necessary since the proper paths are determined by `configure'.
+ (EXEEXT): Removed. No longer used.
+ (srcdir, builddir): Use values provided by the configure script.
+ (XENVIRONMENT): Updated.
+
+ * INSTALL: Updated.
+
+2004-12-14 Gaius Mulley <gaius@glam.ac.uk>
+
+ Make .tag and .taga work for all devices (but only grohtml actually
+ handles them).
+
+ * src/devices/grohtml/post-html.cpp: s/html-tag/devtag/.
+ (text_glob::is_br, page::add_tag, html_printer::troff_tag,
+ html_printer::handle_assertion): Don't use hard-coded string
+ lengths.
+ (html_printer::lookahead_for_table): Reset `tbl' properly if
+ necessary.
+ (html_printer::devtag): New function, handling `devtag'.
+ (html_printer::special): Don't handle `html-tag'.
+
+ * src/include/printer.h, src/libs/libdriver/printer.cpp
+ (printer::devtag): New virtual function.
+
+ * src/libs/libdriver/input.cpp (parse_x_command) <'X'>: Handle
+ `devtag'.
+
+ * src/roff/troff/env.cpp, src/roff/troff/mtsm.cpp,
+ src/roff/troff/node.cpp: s/html-tag/devtag/.
+
+ * src/roff/troff/input.cpp (tag, taga): Always call
+ curenv->add_node.
+
+ * tmac/an-old.tmac, tmac/s.tmac, tmac/troffrc-end: Use DEVTAG*
+ macros instead of HTML-TAG*.
+
+ * tmac/devtag.tmac: New file, defining the DEVTAG-* macros.
+
+ * tmac/www.tmac: Load devtag.tmac.
+ Replace HTML-TAG* macros with DEVTAG* macros.
+ (HTML, HTML-NS): Changed definitions.
+ (URL): Use HTML-NS.
+ (HTML-TAG, HTML-TAG-NS, HTML-TAG-NEXT): Removed.
+
+ * tmac/Makefile.sub (NORMALFILES): Add devtag.tmac.
+
+2004-12-10 Werner LEMBERG <wl@gnu.org>
+
+ Import Mike's `gdiffmk' package.
+
+ * contrib/gdiffmk/*: New files.
+ * Makefile.in (OTHERDIRS): Add contrib/gdiffmk.
+ * NEWS: Updated.
+
+2004-12-08 Werner LEMBERG <wl@gnu.org>
+
+ Import Keith's `pdfmark' package. Integration is very preliminary.
+
+ * contrib/pdfmark/*: New files.
+ * Makefile.in (OTHERDIRS): Add contrib/pdfmark.
+ * NEWS: Updated.
+
+2004-12-07 Gaius Mulley <gaius@glam.ac.uk>
+
+ Fix a bug with title handling in HTML.
+
+ * src/devices/grohtml/post-html.cpp (text_glob::is_nf,
+ text_glob::is_fi, text_glob::is_ce): Use strlen to compute string
+ length.
+ (html_printer::handle_tag_within_title): New function.
+ (html_printer::do_title): Use it.
+
+ * tmac/s.tmac (TL): Don't set `need_eo_tl'.
+ (cov*tl-au-print): Emit `.eo.tl' tag.
+
+2004-12-05 Alejandro Lpez-Valencia <dradul@etb.net.co>
+
+ * man/groff_char.man: Minor imrovements.
+
+2004-12-04 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/eqn/eqn.man: Revised.
+
+2004-11-25 Werner LEMBERG <wl@gnu.org>
+
+ * src/utils/xtotroff/xtotroff.c: Reformat to be similar to other
+ groff source files.
+ Include config.h.
+ Include limits.h.
+ Remove X_NOT_STDC_ENV conditional.
+ (Version_string, program_name): New global variables.
+ (groff_flag): Removed.
+ (MapFont): Updated.
+ (usage): Take a stream as argument.
+ Use `program_name'.
+ Update all callers.
+ (main): Add `long_options' array for `--help' and `--version'.
+ Make `-g' a dummy option.
+ Handle `-v' and unknown options.
+ Remove unused `position' variable.
+
+ * src/utils/xtotroff/Makefile.sub (MAN1): Define.
+ (XLIBS): Add LIBGROFF.
+
+ * src/utils/xtotroff/xtotroff.man, src/utils/xtotroff/Makefile.in:
+ New files.
+
+ * src/devices/xditview/Dvi.c (default_font_map): Split into three
+ parts to avoid compiler warning.
+ (resources): Don't initialize with `default_font_map'.
+ (ClassInitialize): Initialize first element of `resources'.
+
+ * src/devices/xditview/Makefile.sub (devdir, xtotroff, DPIS, fonts):
+ Removed.
+
+ * src/utils/lkbib/lkbib.man, src/utils/lookbib/lookbib.man,
+ src/utils/pfbtops/pfbtops.man: Revised, updated.
+
+ * configure.ac: Generate src/utils/xtotroff/Makefile.
+ * configure: Regenerated.
+
+2004-11-24 Werner LEMBERG <wl@gnu.org>
+
+ First fixes to get produce HTML.
+
+ * src/devices/grohtml/post-html.cpp (generate_img_src): Add `alt'
+ attribute.
+
+ * tmac/www.tmac (IMG, PIMG, MPIMG): Add `alt' attribute.
+ (HR, LI): Use `HTML</p>', not `HTML'.
+
+ * doc/webpage.ms: Minor updates.
+
+2004-11-23 Larry Kollar <kollar@alltel.net>
+
+ Add option -S grohtml to determine the file split level.
+
+ * src/devices/grohtml/post-html.cpp (split_level): New global
+ variable.
+ (html_header::determine_header_level): Use split_level.
+ (main): Handle `-S' command line option.
+ Sort options.
+
+ * src/preproc/html/pre-html.cpp (scanArguments): Updated.
+
+ * src/devices/grohtml/grohtml.man: Document it.
+ Sort options.
+
+ * NEWS: Document it.
+
+2004-11-23 Y T <doarhop@hotmail.com>
+
+ * tmac/s.tmac (ref*add-V, ref*add-N): New macros for handling
+ the volume and number refer entries.
+
+2004-11-22 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grohtml/html-table.cpp
+ (html_table::emit_table_header): Don't emit `cols' attribute which
+ doesn't exist in HTML 4.0 and is thus invalid.
+
+ * NEWS: More minor fixes and updates.
+
+2004-11-18 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/www.tmac (HTML-NS, HTML-TAG-NS, HTML-TAG-NEXT): Simplified.
+ (HTML</p>): Minor clean-up.
+
+ * tmac/groff_www.man: Updated.
+
+ * src/devices/grohtml/grohtml.man: Revised and updated.
+
+ * NEWS: Updated.
+
+2004-11-18 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/devices/grohtml/post-html.cpp (html_printer::do_heading):
+ Fix space insertion.
+ (html_printer::do_links): Fix rules generation around automatic
+ heading links.
+
+ * tmac/www.tmac (LK): Use HTML-TAG-NS.
+ (HR): Simplify.
+ No longer emit empty line for non-HTML devices.
+
+2004-11-17 Werner LEMBERG <wl@gnu.org>
+
+ * doc/Makefile.in (prepare_examples, webpage.html): Handle
+ `groff.css'.
+
+ * doc/Makefile.sub (EXAMPLEFILES, CLEANNOTSRCDIRADD,
+ prepare_examples, webpage.html): Handle `groff.css'.
+
+2004-11-15 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS, README, doc/webpage.ms: Updated.
+
+ * tmac/www.tmac (HTML, HTML-TAG): Minor clean-ups.
+
+2004-10-30 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/include/printer.h (printer): Remove virtual function
+ `round_width'.
+ Update all source files.
+
+ * src/devices/grohtml/post-html.cpp (html_printer): New member
+ function `round_width'.
+
+2004-10-20 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
+
+ * src/preproc/tbl/table.cpp (table::do_row): Fix handling of the `d'
+ column key letter suffix.
+
+2004-10-14 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.in (check): Depend on `site.exp' and `docheck'.
+ (docheck): Run dejagnu's `runtest' if it exists.
+ (site.exp): Create dejagnu configuration file.
+
+ * Makefile.sub (DISTCLEANFILES): Add files related to dejagnu.
+
+2004-10-13 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grohtml/html-text.cpp (html_text_get_alignment),
+ src/devices/grohtml/post-html.cpp (make_val,
+ html_printer::handle_state_assertion): Fix compiler warnings.
+
+ * src/roff/troff/div.cpp: Include `stringclass.h' and `mtsm.h'.
+ (diversion::diversion): Fix order of initializers.
+
+ * src/roff/troff/div.h: Don't include `mtsm.h'.
+
+ * src/roff/troff/env.cpp: Include `stringclass.h' and `mtsm.h'.
+ (environment::environment): Fix order of initializers.
+ (environment::make_tag, environment::construct_format_state): Fix
+ compiler warnings.
+
+ * src/roff/troff/input.cpp: Include `stringclass.h' and `mtsm.h'.
+ (input_iterator::input_iterator, macro::macro): Fix order of
+ initializers.
+
+ * src/roff/troff/mtsm.cpp: Include only necessary header files.
+ (state_set::add, state_set::val): Fix compiler warnings.
+
+ * src/roff/troff/mtsm.h: Don't include `stringclass.h'.
+ (bool_value_state, int_value_state, units_value_state,
+ string_value_state): Remove comma after last element which causes
+ an error with g++ 3.3.3.
+
+ * src/roff/troff/node.cpp: Include `stringclass.h'.
+ (hline_node::hline_node, vline_node::vline_node,
+ space_char_hmotion_node, left_italic_corrected_node): Fix compiler
+ warnings.
+ (zero_width_node::zero_width_node): Fix order of initializers.
+
+ * src/roff/troff/node.h: Don't include `mtsm.h'.
+ (hmotion_node): Fix compiler warnings.
+
+ * src/roff/troff/number.cpp: Include `stringclass.h' and `mtsm.h'.
+
+2004-10-12 Gaius Mulley <gaius@glam.ac.uk>
+
+ * doc/groff.css: New file.
+
+ * doc/webpage.ms: Use `groff.css'.
+ Other small fixes.
+
+ * tmac/an-old.tmac (need_eo_h): New number register.
+ (TH): Emit `.eo.tl' tag after title.
+ (SH): Set `need_eo_h'.
+ (an-trap): Handle `need_eo_h'.
+ (an-do-tag): s/HTML-TAG-NS/HTML-TAG-NEXT/.
+
+ * tmac/s.tmac (need_eo_h, need_eo_tl): New number registers.
+ (TL): Always start diversion.
+ Updated.
+ (@AI): Always call `par@reset'.
+ (@AB): Update code for -Thtml.
+ (cov*tl-au-print): Handle -Thtml.
+ (par@reset): Handle `need_eo_tl', `need_eo_h'.
+ (@IP): Simplified.
+ (@IT-html): Removed.
+ (@SH): Set `need_eo_h' for -Thtml.
+ (par@TL): s/HTML-TAG/HTMl-TAG-NS/.
+ Set `need_eo_tl'.
+ (@NH): s/HTML-TAG/HTMl-TAG-NS/.
+ Set `need_eo_h' for -Thtml.
+ (@EQ, @EN): Don't handle -Thtml specially.
+ (par@load-init): Don't handle -Thtml specially.
+
+ * tmac/www.tmac (www:paraspace): New macro.
+ (HTML-NS, HTML-TAG-NS): Use new `tag' request.
+ (HTML</p>, HTML-TAG-NEXT): New macros.
+ (HnE): Emit tag `.eo.h' instead of break.
+ (HR): s/HTML-NS/HTML/.
+ (www-end-nowhere): End diversion only if `www-html' not set.
+ Emit `.eo.tl' tag.
+ (ULS, ULE): s|HTML|HTML</p>|.
+ (LI): Call `www:paraspace'.
+ (HEAD): New macro.
+
+2004-10-11 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/roff/troff/request.h (macro): Make `p' public.
+ New variable `is_a_diversion'.
+ New member function `is_diversion'.
+
+
+ * src/devices/grohtml/html.h (simple_output): New member function
+ `force_nl'.
+
+ * src/devices/grohtml/html-table.cpp (tabs::compatible): Fix
+ computation of `total'.
+ (tabs::check_init): New function.
+ (html_table::emit_table_header): Emit style data.
+ (html_table::insert_column): Improved.
+
+ * src/devices/grohtml/html-table.h: Updated.
+
+ * src/devices/grohtml/html-text.cpp (html_text::html_text):
+ Initialize `start_space' with TRUE.
+ (html_text::end_tag, html_start_tag): Fix `P_TAG' and `PRE_TAG'
+ cases.
+ (html_text::flush_text): Set `start_space' flag.
+ (html_text::uses_indent, html_text::remove_para_space,
+ html_text::get_alignment): New functions.
+ (html_text::push_para): Updated.
+ (html_text::do_para): Check for empty argument.
+ Don't set `space_emitted'.
+ (html_text::do_space, html_text::emit_space): Updated.
+
+ * src/devices/grohtml/html-text.h (tag_definition): New variable
+ `really_issued'.
+ (html_text): New member function `uses_indent', `remove_para_space',
+ `get_alignment'.
+
+ * src/devices/grohtml/output.cpp (simple_output::force_nl): New
+ function.
+ (simple_output:nl): Always emit `\n'.
+
+ * src/devices/grohtml/post-html.cpp: Include `string.h'.
+ (BASE_POINT_SIZE): Removed.
+ (base_point_size, head_info): New global variables.
+ (text_glob): New member functions `is_ll', `is_tl', `is_eo_tl',
+ `is_eo_h'.
+ (text_glob::is_nf, text_glob::is_fi): Handle `.fi 0' and `.fi 1'
+ tags, respectively.
+ (page::add_and_encode): Pass additional parameter for tag flag.
+ (assert_pos): New structure.
+ (assert_state): New class.
+ (html_printer): Remove `indentation', `prev_indent'.
+ Add variables `troff_indent', `device_indent', `temp_indent'.
+ Add variables `seen_indent', `next_indent', `seen_pageoffset',
+ `next_pageoffset', `seen_linelenght', `next_linelength',
+ `seen_center', `next_center', `seen_space', `seen_break', `as'.
+ Add member functions `do_check_center', `do_space', `do_head',
+ `get_troff_indent', `restore_troff_indent', `handle_assertion',
+ `handle_state_assertion', `do_end_para', `set_char_and_width'.
+ Change argument to `do_fill' to `char *'.
+ Update constructor.
+ (html_printer::emit_raw): Call `shutdown_table'.
+ Use new functions.
+ (html_printer::do_center): Simplified.
+ (html_printer::do_title): Improved.
+ (html_printer::write_header): Emit one more newline.
+ Use new functions.
+ (html_printer::do_heading, html_printer::do_indent,
+ html_printer::do_eol, html_printer::do_tab_ts,
+ html_printer::do_tab, html_printer::do_tab0,
+ html_printer::calc_po_in, html_printer::next_horiz_pos,
+ html_printer::remove_courier_tabs,
+ html_printer::insert_tab0_foreach_tab, html_printer::begin_page):
+ Updated.
+ (html_printer::do_linelength, html_printer::do_pageoffset,
+ html_printer::do_indentation, html_printer::do_tempindent,
+ html_printer::do_tab_te): Simplified.
+ (html_printer::do_pointsize): Check whether point size is really
+ associated a `.tl' tag.
+ (html_printer::do_break): Rewritten.
+ (html_printer::troff_tag): Improved.
+ (html_printer::flush_globs): Updated.
+ (html_printer::lookahead_for_tables): Handle `is_br'.
+ Use new functions.
+ (html_printer::set_char): Check `sbuf_style.f'.
+ (html_printer::write_navigation): Use string comparison.
+ (html_printer::~html_printer): Emit `head_info'.
+ (html_printer::special): Rewritten.
+ (get_str, make_val): New functions.
+ (main): New option `s' to set the base point size.
+
+ * src/preproc/html/pre-html.cpp (scanArguments): Handle option `s'.
+
+2004-10-10 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/roff/troff/node.cpp: New extern `debug_state'.
+ Include `stringclass.h' and `mtsm.h'.
+ Implement new classes and class members from `node.h'.
+ (real_output_file): Make `fp' public.
+ (troff_output_file): New variables `cur_div_level' and `tag_list'.
+ Update constructors.
+ (troff_output_file::really_print_line): Check whether we should push
+ the current troff state and use the state at the start of the
+ invocation of this diversion.
+ (troff_output_file::add_to_tag_list): New member function.
+ (node::add_char): Handle `glyph_comp_np'.
+
+ * src/roff/troff/node.h: Include `mtsm.h'.
+ (node): New variables `state', `push_state', `div_nest_level',
+ `is_special'. Update constructors, all descendants.
+ Pass additional argument to `add_char' member function.
+ New virtual member functions `is_tag', `debug_node',
+ `debug_node_list'. Update all descendants.
+ (tag_node): New class for handling tags.
+ (output_file): Add variable `state'.
+
+2004-10-09 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/roff/troff/mtsm.cpp, src/roff/troff/mtsm.h: New files,
+ providing a minimal troff state machine to emit meta tags for the
+ post-grohtml device driver.
+
+ * src/roff/troff/Makefile.sub (OBJS, CCSRCS, HDRS): Handle new
+ files.
+
+2004-10-09 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/trace.tmac: Fix handling of `am' and `am1' calls.
+
+2004-10-06 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/roff/troff/column.cpp (vjustify_node::copy): Updated.
+
+ * src/roff/troff/div.h: Include `mtsm.h'.
+ (diversion): New variables `any_chars_added', `needs_push',
+ `saved_seen_break', `saved_seen_space', `saved_seen_eol',
+ `saved_suppress_next_eol', `modified_tag'.
+ New virtual member function `is_diversion'. Update all descendants.
+
+ * src/roff/troff/div.cpp (diversion::diversion,
+ macro_diversion::macro_diversion): Updated.
+ (do_divert): Handle `seen_break', `seen_space', `seen_eol',
+ `suppress_next_eol'.
+ (top_level_diversion::space): Handle `curenv->seen_space'.
+ (page_offset): Update tag handling.
+ (space_request, blank_line, flush_output): Don't call `add_html_tag'.
+
+ * src/roff/troff/env.h (environment): Make `tabs' public.
+ Remove `ignore_next_eol', `emitted_node'.
+ Update `output_line', `output'.
+ New variables `seen_space', `seen_eol', `suppress_next_eol',
+ `seen_break'.
+ New member functions `construct_state', `make_tag',
+ `construct_format_state, `construct_new_line_state,
+ `dump_troff_state'.
+ Remove `add_html_tag', `make_html_tag'.
+
+ * src/roff/troff/env.cpp: New externs `suppress_push',
+ `get_diversion_state', `global_diverted_space'.
+ (pending_output_line): New variable `was_centered'.
+ Update constructor and all callers.
+ (pending_output_line::output): Call `curenv->construct_format_state'.
+ (environment::environment, environment::copy): Updated.
+ (environment::output): Handle `was_centered'.
+ (environment::add_char): Handle construct and diversion state.
+ (environment::add_node): Handle construct state.
+ (environment::newline): Handle `was_centered'.
+ (environment::output_line): Updated.
+ (environment::possibly_break_line): Updated.
+ Update tag handling.
+ (environment::add_html_tag): Replaced with...
+ (environment::make_tag): New function.
+ (environment::add_html_tag_tabs, environment::make_html_tag): Removed.
+ (environment::dump_troff_state): New debugging function.
+ (environment::construct_state, environment::construct_format_state,
+ environment::construct_new_line_state): New functions.
+ (environment::do_break): Updated.
+ Handle `global_diverted_space'.
+ (environment::handle_tag): Update tag handling.
+ (point_size, fill, do_break_request): Don't call `add_html_tag'.
+ (no_fill): Don't call `add_html_tag'.
+ Set `suppress_next_eol'.
+ (center, right_justify, line_length, indent, temporary_indent,
+ set_tabs):
+ Update tag handling.
+
+ * src/roff/troff/input.cpp: Don't include `stringclass.h'.
+ (input_iterator): New variables `is_diversion', `diversion_state'.
+ Update constructors.
+ (input_stack): New member functions `get_div_level',
+ `get_diversion_state', `check_end_diversion'.
+ New variables `div_level', `diversion_state'. Initialize them.
+ (suppress_push, global_diverted_space): New global variables.
+ (input_stack::finish_get, input_stack::finish_peek,
+ input_stack::remove_boundary, input_stack::end_file,
+ input_stack::clear, input_stack::pop_macro): Call
+ `check_end_diversion'.
+ (input_stack::push): Handle `div_level' and `diversion_state'.
+ (get_diversion_state): New function.
+ (diverted_space_node::reread): Handle `global_diverted_space'.
+ (macro::macro): Update constructors.
+ (macro::is_diversion): New function.
+ (macro::operator=): Set `is_a_diversion'.
+ (string_iterator): New member function `is_diversion'.
+ (string_iterator::string_iterator): Update constructors.
+ (string_iterator::fill): Set `div_nest_level'.
+ (macro_iterator): New member function `is_diversion'.
+ (do_if_request): Handle `suppress_push'.
+ (tag, taga): New functions.
+ (init_input_requests): Add `tag' and `taga' requests.
+
+2004-10-05 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/include/font.h (font): New member function
+ `get_image_generator'.
+ New variables `unscaled_charwidths' and `image_generator'.
+
+ * src/libs/libgroff/font.cpp (font::get_width): Always return the
+ character's unscaled width if `font::unscaled_charwidths' is set.
+ (font::get_image_generator): New function.
+ (font::load_desc): Check the `unscaled_charwidths' and
+ `image_generator' keywords.
+
+ * src/libs/libgroff/fontfile.cpp: Initialize
+ `font::unscaled_charwidths' and `font::image_generator'.
+
+ * font/devhtml/DESC.proto: s/html/unscaled_charwidths/.
+
+ * font/devhtml/Makefile.sub (DESC): Set `image_generator' keyword.
+
+ * man/groff_font.man: Document `unscaled_charwidths' and
+ `image_generator'.
+
+ * src/preproc/html/pre-html.cpp: Include `device.h'.
+ (image_gen): New global variable.
+ (imageList::createPage): Use `image_gen'.
+ (main): Use `image_generator' keyword.
+
+2004-10-04 Gaius Mulley <gaius@glam.ac.uk>
+
+ * tmac/html.tmac: Handle \[sqrtex].
+
+2004-10-04 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/include/printer.h (printer): New virtual method `round_width'.
+
+ * src/devices/grodvi/dvi.cpp, src/devices/grolbp/lbp.cpp,
+ src/devices/grolj4/lj4.cpp, src/devices/grops/ps.cpp,
+ src/devices/grotty/tty.cpp (printer::round_width): New function
+ member.
+
+ * src/devices/grohtml/post-html.cpp (printer::round_width): New
+ function member.
+ (html_printer::set_numbered_char): Use it.
+
+2004-10-03 Gaius Mulley <gaius@glam.ac.uk>
+
+ * aclocal.m4 (GROFF_GHOSTSCRIPT_PATH): New macro.
+
+ * configure.ac: Call GROFF_GHOSTSCRIPT_PATH.
+
+ * configure: Regenerated.
+
+ * Makefile.in (GHOSTSCRIPT): New variable.
+ (MDEFINES): Add GHOSTSCRIPT.
+
+2004-10-03 Werner LEMBERG <wl@gnu.org>
+
+ * INSTALL.gen: Updated (taken from texinfo CVS).
+
+2004-09-28 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS: Updated.
+
+2004-09-28 Heinz-Jrgen Oertel <hj.oertel@surfeu.de>
+
+ * tmac/groff_www.man: Revised and updated.
+
+2004-09-26 Werner LEMBERG <wl@gnu.org>
+
+ Fix \$@ and \$* to handle any number of arguments.
+
+ * src/roff/troff/input.h (BEGIN_QUOTE, END_QUOTE): New special
+ characters.
+
+ * src/roff/troff/input.cpp (input_iterator::internal_level):
+ Removed.
+ (input_stack): New member functions `increase_level' and
+ `decrease_level'.
+ (input_stack::get_level): Don't use `internal_level'.
+ (get_copy, token::next): Handle BEGIN_QUOTE and END_QUOTE.
+ (end_quote_iterator): Completely removed.
+ (interpolate_arg): Build string for \$@ and \$* which is then
+ pushed onto the input stack.
+
+2004-09-23 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * tmac/groff_ms.man, doc/groff.texinfo (ms Document Control
+ Registers): Document changes from 2004-09-19.
+
+2004-09-23 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac (ne): Using default scaling operator.
+
+2004-09-19 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ This change implements the following features:
+
+ PORPHANS
+ New numeric register: Defines number of lines following LP, PP,
+ QP, IP or XP, which must be kept together, before any automatic
+ page break. If insufficient space remains on the current page, a
+ page break is forced before the new paragraph begins.
+
+ HORPHANS
+ New numeric register: Sets number of lines of following paragraph
+ which must be kept with a heading, defined by NH or SH, before any
+ automatic page break. If insufficient space remains on the
+ current page, a page break is forced before the heading.
+
+ GROWPS
+ (Thanks to Joerg van den Hoff, for this idea).
+
+ New numeric register: Sets the first level of heading (set with
+ NH), which will keep the same point size as body text; e.g. if
+ GROWPS is set to 3, .NH 3, .NH 4, ... will produce headings at the
+ point size specified by \n[PS], but .NH 2 and .NH 1 will have
+ progressively larger point sizes, determined by \n[PSINCR] (see
+ below).
+
+ PSINCR
+ New numeric register: Sets the point size increment for each level
+ of heading, (set with NH), below the threshold level set by
+ GROWPS; e.g. if \n[PS] = 10, \n[GROWPS] = 3 and \n[PSINCR] = 2.0p,
+ then .NH 1 will produce 14pt headings, .NH 2 will produce 12pt,
+ and all other levels will remain at 10pt, (because \n[PS] = 10).
+
+ SH
+ Existing macro now accepts a numeric argument, to make heading
+ size match that of NH with same argument value, when the
+ GROWPS/PSINCR feature is enabled.
+
+ SN-DOT
+ New string, set by NH macro, replaces the existing (undocumented)
+ use of SN, to represent the assigned section number.
+
+ SN-NO-DOT
+ New string, set by NH macro, represents the assigned section
+ number, but omits the terminal period (periods at intermediate
+ levels are retained).
+
+ SN
+ String set by NH macro, originally undocumented, now implemented
+ as an alias for SN-DOT (which reproduces original behaviour).
+
+ * tmac/s.tmac (PORPHANS): New register.
+ (par*start): Use it.
+ (HORPHANS, GROWPS, PSINCR): New registers.
+ (SH-NO-TAG, @SH): Use them.
+ (@NH): Improved.
+
+2004-09-19 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * NEWS, doc/groff.texinfo (ms Display and Keeps), tmac/groff_ms.man:
+ Document the deletion of `Ds' and `De' macros.
+
+2004-09-10 Werner LEMBERG <wl@gnu.org>
+
+ In tbl, handle \a as an interpreted leader character if in
+ compatibility mode.
+
+ * src/preproc/tbl/table.h (PREFIX, PREFIX_CHAR, LEADER,
+ LEADER_CHAR): New macros.
+ (compatible_flag): New declaration.
+
+ * src/preproc/tbl/main.cpp (table_input): Add LEADER_1, LEADER_2,
+ LEADER_3, and LEADER_4 to `state'.
+ (table_input::get): Handle `\a'.
+
+ * src/preproc/tbl/table.cpp (PREFIX): Removed.
+ (LEADER_REG): New macro.
+ (table::init_output): Define LEADER_REG string register if in
+ compatibility mode.
+
+ * src/preproc/tbl/tbl.man: Document it.
+
+2004-08-18 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc.tmac (An): Fix error message.
+
+2004-08-06 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/main.cpp (main): Call `fatal' not `error' if a
+ file can't be opened. UNIX tbl has the same behaviour.
+
+2004-08-05 Y T <doarhop@hotmail.com>
+
+ * src/preproc/grn/hdb.cpp (compatibility_flag): Add declaration.
+ (DBRead): If in compatibility mode, take into account the text
+ when computing figure boundaries.
+
+2004-08-05 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/soelim/soelim.man: Improved. Based on suggestions
+ from Tadziu Hoffmann.
+
+2004-08-03 Werner LEMBERG <wl@gnu.org>
+
+ * doc/meref.me: Document `_M' register.
+
+2004-08-03 Martin Husemann <martin@duskware.de>
+
+ Make hpftodit work correctly on big-endian systems.
+
+ * src/utils/hpftodit/hpftodit.cpp (File): New method
+ `get_uint32(char *)'.
+ (entry): New member `orig_value'.
+ (read_tags): Use new method.
+ (output_font_name, read_and_output_pcltypeface, dump_ascii):
+ Updated.
+
+2004-08-01 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/s.tmac: Undo change 2003-06-29. The proper macro definitions
+ are already in X11's `macros.t' file.
+
+2004-08-01 Jeff Conrad <jeff_conrad@msn.com>
+
+ * src/utils/hpftodit/hfptodit.cpp (output_font_name, dump_ascii):
+ Fix casting bug.
+ (read_and_output_pcltypeface): Handle strings with length <= 4.
+
+2004-07-27 Egil Kvaleberg <egil@kvaleberg.no>
+
+ * tmac/s.tmac (pg@top): Don't save `PO' register.
+ (pg*end-col, pg*end-page): Directly use `PO' register.
+
+2004-07-27 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_tmac.man: Mention `trace' and `pic' macro packages.
+
+ * src/preproc/refer/refer.cpp (output_references): Check for
+ empty hash table.
+ * src/preproc/refer/refer.man: Improve documentation of
+ `bibliography' command.
+
+2004-07-26 Werner LEMBERG <wl@gnu.org>
+
+ Add requests `fcolor' and `gcolor'.
+
+ * src/roff/troff/env.cpp (fill_color_change, glyph_color_change):
+ New functions.
+ (init_env_requests): Add `fcolor' and `gcolor'.
+
+ * src/roff/troff/input.h: Export do_glyph_color and do_fill_color.
+
+ * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo
+ (Colors): Document new requests.
+
+2004-07-24 Werner LEMBERG <wl@gnu.org>
+
+ Add support for fractional point sizes in ms macros. A value for
+ PS, VS, FPS, and FVS greater than or equal to 1000 is always divided
+ by 1000. For example, `.nr PS 10250' sets the font size to 10.25p.
+
+ * tmac/s.tmac (@AU, @AI, par@load-init, par@init, par@reset, NL,
+ PX): Handle fractional point sizes for PS, VS, FPS, and FVS.
+
+ * tmac/groff_ms.man, docs/groff.texinfo (ms Document Control
+ Registers), NEWS: Document it.
+
+2004-07-19 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/pic/lex.cpp (for_input): Add member `from'.
+ Update constructor.
+ (do_for, for_input::get, for_input::peek): Handle negative `by'.
+ * src/preproc/pic/pic.man, doc/pic.ms, NEWS: Document it.
+
+2004-07-08 Thomas Klausner <wiz@netbsd.org>
+
+ * tmac/doc-syms (doc-str-St--p1003.1-2004): New string.
+ * tmac/groff_mdoc.man: Updated.
+
+2004-07-05 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo (Manipulating Hyphenation): Further improve
+ documentation of `hcode'.
+
+2004-07-04 Sang Dae Yu <sdyu@bh.knu.ac.kr>
+
+ Improve appearance of arrows in pic.
+
+ * src/preproc/pic/object.cpp (draw_arrow): Make outline of filled
+ arrow head thin.
+ Use two line segments for drawing non-filled arrow head.
+ (line_object::print, spline_object::print): Shorten line length to
+ avoid arrow sticking.
+ (arc_object::print): Take arrow direction into account.
+
+2004-07-03 Heinz-Jrgen Oertel <hj.oertel@surfeu.de>
+
+ * tmac/groff_www.man: Update documentation of .MPIMG.
+
+2004-07-03 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac (RI): Always start with font `R'.
+ (RI, IR): Properly end with font `R'.
+
+2004-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * man/ditroff.man, man/groff_font.man, man/groff_out.man,
+ src/devices/grohtml/grohtml.man, src/preproc/grn/grn.man,
+ src/preproc/pic/pic.man, tmac/groff_man.man, tmac/groff_ms.man:
+ Don't pass more than six arguments to .R, .I, .B, etc., for
+ compatibility with traditional troff macros.
+
+2004-07-02 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.h: s/COMPATIBLE_SAVE/PUSH_GROFF_MODE/.
+ s/COMPATIBLE_RESTORE/POP_GROFFCOMP_MODE/.
+ Update all users.
+ (PUSH_COMP_MODE): New internal character constant.
+ Update all users.
+
+ * src/roff/troff/input.cpp (get_copy): Handle PUSH_GROFF_MODE,
+ PUSH_COMP_MODE, and POP_GROFFCOMP_MODE.
+ (token::next, macro::append): Handle PUSH_COMP_MODE.
+ (decode_args): Add PUSH_GROFF_MODE or PUSH_COMP_MODE before and
+ POP_GROFFCOMP after each of the decoded arguments to make them
+ independent from the compatibility mode status.
+ (comp_mode): Add `COMP_ENABLE'.
+ (do_define_string, do_define_macro): Handle COMP_ENABLE.
+ (define_string, append_string, define_macro, define_indirect_macro,
+ append_macro, append_indirect_macro): Handle `compatible_flag'.
+ (chop_macro, substring_request, asciify): Handle PUSH_COMP_MODE.
+
+ * man/groff_diff.man, doc/groff.texinfo: Updated.
+
+2004-07-01 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Improve documentation of `hcode'.
+ Use @documentencoding and convert document to latin-1; to do that
+ make latin characters active and assign proper macros (within a
+ @tex...@end tex environment).
+ * doc/Makefile.in (.texinfo.html, groff): Use --enable-encoding.
+ * doc/Makefile.sub (groff): Ditto.
+
+2004-06-29 Werner LEMBERG <wl@gnu.org>
+
+ Implement two new conditional operators `F <name>' and `S <name>'
+ which check whether <name> is a valid font or style, respectively.
+
+ * src/libs/libgroff/font.cpp (text_file): Add `silent' member.
+ (text_file::text_file): Updated.
+ (text_file::error): Don't emit message if `silent' is set.
+ (font::load_font): Add optional third argument (which is directly
+ passed to `load'.
+ (font::load): Add optional second argument to check the header of
+ a font only, without emitting warning or error messages.
+ * src/include/font.h (font): Updated.
+
+ * src/roff/troff/input.cpp (do_if_request): Implement `S' and `F'
+ conditionals.
+ * src/roff/troff/node.cpp (mount_font_no_translate): Add optional
+ fourth argument to check a font without mounting.
+ (check_font, check_style): New functions.
+ * src/roff/troff/node.h: Updated.
+
+ * man/groff_diff.man, man/groff.man, NEWS, doc/groff.texinfo:
+ Updated.
+
+2004-06-27 Werner LEMBERG <wl@gnu.org>
+
+ Implement new string-valued register `.sty' to return the current
+ style name.
+
+ * env.cpp (environment::get_style_name_string): New function.
+ (init_env_requests): Add `.sty' register.
+ * env.h (environment): Updated.
+ * node.cpp (font_info): Make `get_style_name' a friend.
+ (get_style_name): New function.
+ * node.h: Updated.
+
+ * man/groff_diff.man, man/groff.man, NEWS, doc/groff.texinfo:
+ Updated.
+
+2004-06-15 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/main.cpp (process_data) <GOT_RIGHT_BRACE>: Handle
+ `nospaces' option.
+
+2004-06-10 Colin Percival <colin.percival@wadham.ox.ac.uk>
+
+ * doc/meintro.me, doc/meref.me: Don't use \*[td], \n[dy], \*[mo],
+ and \n[mo] to avoid dependency on current date.
+
+2004-06-08 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.sub (install_data): New target.
+
+2004-06-04 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libxutil/Makefile.sub (EXTRA_CFLAGS): Define.
+
+2004-06-03 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/xditview/Makefile.sub (EXTRA_LDFLAGS): Fix typo and
+ order of libraries.
+ (install_data): Add $(srcdir).
+
+ * src/utils/xtotroff/Makefile.sub (EXTRA_LDFLAGS): Fix order of
+ libraries.
+
+2004-06-02 Werner LEMBERG <wl@gnu.org>
+
+ * aclocal.m4 (GROFF_X11): s/have_no_x/groff_no_x/.
+ Add X11 stuff to CFLAGS, LDFLAGS, and LIBS temporarily.
+ Add test for Xmu library.
+ (GROFF_APPRESDIR_OPTION, GROFF_APPRESDIR_CHECK,
+ GROFF_APPRESDIR_DEFAULT): New macros.
+
+ * configure.ac: Call GROFF_APPRESDIR_OPTION, GROFF_APPRESDIR_CHECK,
+ and GROFF_APPRESDIR_DEFAULT.
+
+ * configure: Regenerated.
+
+ * Makefile.in (appresdir): New variable.
+ (MDEFINES): Add appresdir.
+
+ * src/devices/xditview/Makefile.sub (EXTRA_LDFLAGS): Add -Xmu and
+ -Xt.
+ (install_data, uninstall_sub): New targets to handle GXditview.ad.
+
+ * src/utils/indxbib/Makefiles.ub (install_data): Depend on
+ `$(srcdir)/eign', not `eign'.
+
+ * MANIFEST, INSTALL, NEWS, PROBLEMS: Updated.
+
+ * man/groff_out.man, man/roff.man, src/devices/grops/grops.man,
+ src/devices/xditview/gxditview.man, src/roff/groff/groff.man:
+ Protect (g)xditview with `\%' to avoid hyphenation.
+ Other minor formatting.
+
+2004-06-01 Werner LEMBERG <wl@gnu.org>
+
+ Integrate gxditview into groff's standard directory hierarchy.
+
+ * src/xditview/*: Moved to ...
+ * src/devices/xditview/*: Here.
+ Moved DviChar.h and XFontName.h to src/include.
+ Moved DviChar.c and XFontName.c to new directory src/libs/libxutil.
+ Split off `xmalloc' into new file src/libs/libxutil/xmalloc.c.
+ Moved xtotroff.c to new directory src/utils/xtotroff.
+ Provide proper Makefile.sub files (reusing the stuff from
+ Imakefile.in).
+ DESC renamed to DESC.in.
+ Removed GXDitview-ad.h, INSTALL, Imakefile.in.
+ Converted everything from K&R to ANSI C.
+ Decorated with const where appropriate.
+ Cast string constants with `String' and `char *' where appropriate.
+ Made it compile with C++ (used as a C compiler).
+ Removed other minor compiler warnings.
+
+ * src/devices/xditview/device.c: Include config.h, string.h, and
+ defs.h.
+ Don't declare `exit', `strtok', `strchr', and `getenv'.
+ (FONTPATH): Remove.
+
+ * src/devices/xditview/font.c: Don't declare `XParseFontName' and
+ `XFormatFontName'.
+
+ * src/devices/xditview/xditview.c: Include config.h.
+ Include stdio.h earlier.
+ Protect declaration of `popen' and `pclose' with
+ NEED_DECLARATION_POPEN and NEED_DECLARATION_PCLOSE.
+ Replace `caddr_t' with `XtPointer'.
+ (MakePromptFunc): New typedef.
+ (DoPrint): Use RETSIGTYPE.
+ (promptfunction): Change type to MakePromptFunc.
+ (MakePrompt): Use MakePromptFunc for third argument.
+ (xmalloc): Removed.
+
+ * src/devices/xditview/ad2c: Add casts to `String'.
+
+ * src/include/XFontName.h (XFontNameString): Don't use array
+ notation.
+ Add prototypes for `XParseFontName', `XFormatFontName',
+ `XCompareFontName', and `XCopyFontName'.
+
+ * src/include/Makefile.sub (HDRS): Add `DviChar.h' and
+ `XFontName.h'.
+
+ * src/utils/xtotroff/xtotroff.c: Include getopt.h.
+ Don't declare `XParseFontName' and `XFormatFontName'.
+ (xmalloc): Removed.
+ (main): Remove `optind' and `optarg'.
+
+ * Makefile.in (XDEVDIRS, XPROGDIRS, XLIBDIRS): New variables
+ (to select programs which need X).
+ Make XDEVIDIRS depend on `FORCE'.
+ (X_CFLAGS, X_LIBS, X_EXTRA_LIBS, X_PRE_LIBS): New variables (for
+ X support).
+ (MDEFINES): Updated.
+ (LIBDIRS): Use XLIBDIRS.
+ (CPROGDIRS): Use XPROGDIRS.
+ (DEVDIRS): Remove font directories for gxditview.
+ (ALLDIRS, DISTDIRS): Add XDEVDIRS.
+ (EXTRADIRS): Remove src/xditview.
+
+ * Makefile.sub (DISCLEANFILES): Updated.
+
+ * Makefile.comm (LIBXUTIL): New variable.
+ (.cpp.o, .cpp.obj): Handle EXTRA_CCFLAGS.
+ (.c.o, .c.obj, .y.o): Handle EXTRA_CFLAGS.
+
+ * Makefile.cpg, Makefile.ccpg ($PROG): Handle EXTRA_LDFLAGS.
+
+ * aclocal.m4 (GROFF_X11): New function.
+
+ * configure.ac: Call GROFF_X11.
+ Don't create src/xditview/Imakefile.
+ Don't emit notice how to build gxditview.
+
+ * configure: Regenerated.
+
+ * test-groff.in (GROFF_BIN_PATH, XENVIRONMENT): Updated.
+
+2004-05-28 Akihiro Sagawa <sagawa@sohgoh.net>
+
+ * Makefile.in (CPPFLAGS): Define.
+ (MDEFINES): Add CPPFLAGS.
+
+2004-05-27 Werner LEMBERG <wl@gnu.org>
+
+ * arch/misc/Makefile.sub (shdeps.sed): Use $(srcdir).
+
+2004-05-26 Niklas Edmundsson <nikke@acc.umu.se>
+
+ Fix problems with `friend name injections'.
+
+ * src/preproc/eqn/box.h (make_mark_box, make_lineup_box,
+ make_script_box), src/roff/troff/div.h (end_diversions),
+ src/roff/troff/env.h (title), input.cpp (process_input_stack): Undo
+ change 2004-04-08.
+
+2004-05-25 Bernd Warken <bwarken@mayn.de>
+
+ * src/preproc/pic/pic.man, doc/pic.ms: Add example for `command'.
+
+2004-05-25 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/cset.cpp, src/libs/libgroff/lf.cpp,
+ src/libs/libgroff/color.cpp: Include lib.h.
+
+2004-05-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * PROBLEMS: Update documentation for problems with Sun C++ 5.0
+ through Forte 6u1, and for how to get GNU make on Solaris.
+
+2004-05-24 Werner LEMBERG <wl@gnu.org>
+
+ * PROBLEMS: Document problems with gcc 3.4.0 on Sun. Reported
+ by Paul Eggert.
+
+2004-05-15 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * arch/misc/Makefile.sub (shdeps.sed): Don't use `$<' in explicit
+ rule.
+
+2004-05-14 Werner LEMBERG <wl@gnu.org>
+
+ * REVISION: Set to 2.
+
+ * aclocal.m4 (GROFF_STDINT_H): Removed.
+ (GROFF_INTTYPES_H): Define HAVE_CC_INTTYPES_H.
+
+ * configure.ac: Updated.
+ * configure, src/include/config.hin: Regenerated.
+
+ * src/libs/libgroff/tmpname.cpp: Don't include stdint.h but
+ inttypes.h conditionally.
+
+2004-05-13 Werner LEMBERG <wl@gnu.org>
+
+Version 1.19.1 released
+=======================
+
+2004-05-10 Stephen Gildea <http://www.gildea.com/stephen>
+
+ * src/preproc/refer/label.y (same_author_last_name,
+ same_author_name): Handle empty sort keys.
+
+2004-05-10 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS, README, TODO, PROJECTS, PROBLEMS, MANIFEST, doc/webpage.ms,
+ tmac/TODO: Updated.
+
+ * tmac/doc-syms (doc-str-Lb-libposix, doc-str-Lb-libpthread,
+ doc-str-Lb-librt): Reset font.
+ (Lb): Rename `doc-str-Lb' to `doc-str-Lb1'.
+ Provide `doc-str-Lb' to reset font.
+ * tmac/groff_mdoc.man: Updated.
+
+2004-05-08 Jan Schaumann <jschauma@netmeister.org>
+
+ * src/preproc/html/pre-html.cpp (make_message): Make it work for
+ snprintf versions which don't conform to ANSI C 99 (this is,
+ counting the string's trailing null byte in the return value).
+
+2004-05-07 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * src/roff/troff/node.cpp (suppress_node::tprint): Don't expect
+ that all implementations of sprintf handle null pointers correctly.
+
+2004-05-04 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
+ Document `.U' register.
+
+ * src/roff/troff/env.cpp (environment::mark_last_line)
+ [WIDOW_CONTROL]: Fix scope of `p' for new C++ compilers.
+
+2004-05-04 Larry Kollar <kollar@alltel.net>
+
+ New read-only register `.U'; it returns 1 in safer mode and 0
+ otherwise.
+
+ * src/roff/troff/input.cpp (init_input_requests): Implement `.U'
+ register.
+
+2004-05-03 Werner LEMBERG <wl@gnu.org>
+
+ * install-sh, mkinstalldirs: New versions; taken from texinfo CVS.
+
+2004-04-17 Werner LEMBERG <wl@gnu.org>
+
+ * src/include/font.h (font): Use `int' for ch_index.
+ * src/libs/libgroff/font.cpp (font::alloc_ch_index,
+ font::compact): Updated.
+
+ * src/roff/groff/pipeline.c (run_pipeline) [_WIN32]: Fix compiler
+ warnings.
+
+ * src/roff/troff/div.cpp (begin_page), src/roff/troff/env.cpp
+ (hyphen_word): Fix compiler warnings.
+ * src/roff/troff/input.cpp (get_char_for_escape_name): Return
+ `char'.
+ Update all callers.
+ (get_delim_number, get_line_arg): Change second argument type to
+ `unsigned char'.
+ (macro_header::copy, token::next, do_define_string,
+ do_define_character, substring_request, asciify_macro,
+ unformat_macro, read_size, non_interpreted_node::interpret,
+ while_request, main: Fix compiler warnings.
+ (read_color_draw_node): Initialize `col'.
+
+ * src/preproc/tbl/table.cpp (horizontal_span, table_entry): Make
+ `start_col' and `end_col' of type `int'.
+ (vertical_rule): Make `col' of type `int'.
+
+ * src/preproc/grn/hdb.cpp (DBRead): Protect call to getc with check
+ for EOF.
+
+ * src/preproc/refer/label.y (uppercase_array, lowercase_array):
+ New arrays.
+ (format_serial): Use them to remove dependency on ASCII.
+
+ * src/devices/grops/ps.cpp (ps_printer::define_encoding): Fix
+ compiler warning.
+ * src/devices/grops/psrm.cpp (resource_manager::supply_resource):
+ Ditto.
+
+ * src/devices/grotty/tty.cpp (tty_font::load_tty_font): Fix
+ compiler warnings.
+ (glyph): Change type of `hpos' to `int'.
+
+ * src/devices/lbp/lbp.cpp (strsep): Removed. Unused.
+ * src/devices/lbp/lbp.h (splinerel): Fix compiler warnings.
+
+ * src/utils/tfmtodit.cpp (gf::load): Fix compiler warnings.
+
+ * src/utils/pfbtops/pfbtops.c (get_text): Fix compiler warning.
+
+2004-04-16 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grolbp/lbp.h, src/preproc/grn/gprint.h,
+ src/preproc/grn/hgraph.cpp, src/preproc/grn/hpoint.cpp,
+ src/preproc/html/pushback.cpp, src/preproc/html/pushback.h: Use
+ `double' instead of `float' everywhere.
+ * src/preproc/grn/main.cpp: Use `double' instead of `float'
+ everywhere.
+ (main): Add return value.
+ * src/preproc/grn/hdb.cpp: Use `double' instead of `float'
+ everywhere.
+ Update all user functions.
+
+ * src/include/search.h, src/include/ptable.h, src/include/printer.h,
+ src/preproc/eqn/box.h, src/preproc/pic/object.h,
+ src/preproc/refer/refer.h, src/preproc/tbl/table.h,
+ src/preproc/tbl/table.cpp, src/roff/troff/env.h,
+ src/roff/troff/div.h, src/roff/troff/token.h, src/roff/troff/node.h,
+ src/roff/troff/input.cpp, src/roff/troff/request.h,
+ src/roff/troff/node.cpp: Don't mix `struct' and `class' in forward
+ declarations.
+
+ * src/utils/indxbib/signal.c: Include stdlib.h.
+
+2004-04-14 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * tmac/s.tmac (@init, RP): Allow initialization of the PO register
+ before the first page.
+
+2004-04-14 Thomas Klausner <wiz@netbsd.org>
+
+ * tmac/doc-common (doc-volume-as-*): Use lowercase names.
+ (doc-operating-system-*): Updated.
+ * tmac/doc-syms (doc-str-St-*): Various small fixes.
+ (doc-str-Lb-*): Add more library names.
+
+2004-04-10 Art Haas <ahaas@airmail.net>
+
+ * src/utils/hpftodit/hpuni.cpp (hp_msl_to_unicode_list): Don't
+ use anonymous type.
+
+2004-04-09 Art Haas <ahaas@airmail.net>
+
+ * src/utils/tfmtodit.cpp (lig_chars): Don't use anonymous type.
+
+2004-04-09 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * arch/misc/shdeps.sh: Generate better comment for sed script.
+
+2004-04-08 Art Haas <ahaas@airmail.net>
+
+ * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list),
+ src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list),
+ src/libs/libgroff/uniuni.cpp (unicode_decompose_list),
+ src/preproc/eqn/box.cpp (param_table), src/preproc/grn/hgraph.cpp
+ (polyfill), src/preproc/grn/main.cpp (polyfill),
+ src/preproc/refer/command.cpp (command_table),
+ src/utils/tfmtodit.cpp (lig_table): Don't use anonymous types (which
+ gcc 3.5 doesn't like).
+
+2004-04-08 Werner LEMBERG <wl@gnu.org>
+
+ Removing many compiler warnings. groff should now compile with
+ a C++ compiler used for C files also. [Simple variable renamings
+ to avoid shadowing aren't logged in detail.]
+
+ * src/devices/grodvi/dvi.cpp: Some local variable renamings.
+ (draw_dvi_printer::draw) ['c']: Enclose in block.
+
+ * src/devices/grohtml/post-html.cpp: Some local variable renamings.
+ (page::add_line): Fix typos.
+ * src/devices/grohtml/html-text.cpp: Some local variable renamings.
+
+ * src/devices/grolbp/lbp.cpp: Don't define _GNU_SOURCE.
+ Some local variable renamings.
+ * src/devices/grolbp/lbp.h: Some local variable renamings.
+
+ * src/devices/grolj4/lj4.cpp, src/devices/grotty/tty.cpp: Some local
+ variable renamings.
+
+ * src/libs/libbib/index.cpp (index_search_item_iterator::get_tag):
+ Remove redundant local variable declaration.
+ * src/libs/libbib/map.c (mapread, unmap): Don't use K&R style.
+ Don't use `caddr_t' but `void *'.
+ Enclose functions with `extern "C"' for C++.
+
+ * src/libs/libdriver/input.cpp (remember_filename,
+ remember_source_filename): Use cast for string constant.
+
+ * src/libs/libgroff/font.cpp, src/libs/libgroff/fontfile.cpp,
+ src/libs/libgroff/nametoindex.cpp, src/libs/libgroff/paper.cpp,
+ src/libs/libgroff/geometry.cpp: Some local variable renamings.
+ * src/libs/libgroff/iftoa.c, src/libs/libgroff/itoa.c: Don't use K&R
+ style.
+ Enclose functions with `extern "C"' for C++.
+ * src/libs/libgroff/quotearg.c (TRUE,FALSE): Define as macros.
+ (needs_quoting): Return `int'.
+ (quote_arg): Add proper casts to malloc and realloc.
+ * src/libs/libgroff/spawnvp.c: Compile code only for MS-DOS and
+ various MS Windows environments.
+ (spawnvp_wrapper): Add proper cast to malloc.
+
+ * src/preproc/eqn/box.h: Remove redundant declarations of
+ `make_script_box', `make_mark_box' and `make_lineup_box'.
+ * src/preproc/eqn/eqn.y: Remove redundant declaration of `strsave'.
+ * src/preproc/eqn/script.cpp, src/preproc/eqn/pile.cpp: Some local
+ variable renamings.
+
+ * src/preproc/grn/hpoint.cpp: Some local variable renamings.
+ * src/preproc/grn/hgraph.cpp: Some local variable renamings.
+ (dx, dy): Renamed functions to...
+ (deltax, deltay): This.
+ * src/preproc/grn/main.cpp: Some local variable renamings.
+ (deffont): Add `const'.
+ (initpic, conv): Use cast for string constant.
+
+ * src/preproc/html/pre-html.cpp: Some local variable renamings.
+ (makeFileName, alterDeviceTo, addZ): Use cast for string constant.
+ (char_buffer::run_output_filter): Second argument is unused.
+ * src/preproc/html/pushback.cpp: Some local variable renamings.
+
+ * src/preproc/pic/pic.y: Remove redundant declaration of `do_copy'.
+ * src/preproc/pic/object.cpp: Some local variable renamings.
+
+ * src/preproc/refer/label.y (lookup_label): Remove redundant
+ declaration of local variable.
+
+ * src/preproc/soelim.cpp: Remove redundant declaration of
+ `interpret_lf_args'.
+
+ * src/preproc/tbl/main.cpp: Some local variable renamings.
+
+ * src/roff/groff/groff.cpp (main): Use cast for string constant.
+ * src/roff/groff/pipeline.c: Enclose declarations of `error',
+ `c_fatal', and `i_to_a' with `extern "C"' for C++.
+ Don't use C++-style comments.
+
+ * src/roff/troff/env.h: Remove redundant declaration of `title'.
+ * src/roff/troff/node.h, src/roff/troff/env.cpp,
+ src/roff/troff/div.cpp, src/roff/troff/node.cpp: Some local variable
+ renamings.
+ * src/roff/troff/div.h: Remove redundant declaration of
+ `end_diversions'.
+ * src/roff/troff/troff.h: Remove redundant declaration of
+ `cleanup_and_exit'
+ * src/roff/troff/input.cpp: Remove redundant declaration of
+ `handle_first_page_transition' and `process_input_stack'.
+
+ * src/utils/hpftodit.cpp: Some local variable renamings.
+
+ * src/utils/indxbib/signal.c: Enclose functions with `extern "C"'
+ for C++.
+ Don't define RETSIGTYPE.
+ * src/utils/indxbib/indxbib.cpp: Some local variable renamings.
+
+ * src/utils/pfbtops/pfbtops.cpp: Don't use K&R style.
+ (error): Use `const' in argument.
+ (main): Remove redundant declaration of `optind'.
+ Move declaration of `Version_string' to top-level.
+
+ * PROBLEMS: Document difficulties compiling signal.c if a C++
+ compiler is used for C.
+
+2004-04-07 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.sub (DISTCLEANFILES): Add `test-groff'.
+
+2004-04-06 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ Make scripts like nroff.sh and neqn.sh portable across various
+ (Unix-like) shell implementations from Cygwin, MSYS, etc., which use
+ non-POSIX path separators. The idea is to extend those scripts to
+ decide at run-time (of the script) which path separator to use.
+
+ * arch/misc/Makefile.sub: New file.
+ * arch/misc/shdeps.sh: New file, generating OS dependency fixups.
+ This script handles @GROFF_BIN_PATH_SETUP@, replacing it with
+ a proper definition of the variable `GROFF_RUNTIME'.
+
+ * Makefile.in (SH_DEPS_SED_SCRIPT): New variable.
+ (MDEFINES): Add SH_DEPS_SED_SCRIPT.
+ (PROGDEPDIRS): New variable.
+ `FORCE' it.
+ (PROGDIRS): Add PROGDEPDIRS.
+
+ * src/preproc/eqn/Makefile.sub (neqn): Call SH_DEPS_SED_SCRIPT.
+ Don't substitute @SEP@ and @BINDIR@.
+ * src/preproc/eqn/neqn.sh: Use @GROFF_BIN_PATH_SETUP@.
+ (PATH): Use GROFF_RUNTIME.
+
+ * src/roff/nroff/Makefile.sub (nroff): Call SH_DEPS_SED_SCRIPT.
+ Don't substitute @SEP@ and @BINDIR@.
+ * src/roff/nroff/nroff.sh: Use @GROFF_BIN_PATH_SETUP@.
+ (PATH): Use GROFF_RUNTIME.
+
+2004-04-05 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * src/roff/nroff/nroff.sh: Implement work-around for sh.exe from
+ Cygwin which doesn't handle stderr correctly.
+
+2004-03-08 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.comm (install_dev, uninstall_dev): Protect `for' loops
+ against empty argument. Problem reported by <cgd@broadcom.com>.
+
+2004-03-05 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * Makefile.in (SEP): Replaced with...
+ (RT_SEP, SH_SEP): Separators for the target platform's native path
+ separator and the build environment, respectively.
+ (fontpath, tmacpath): Use RT_SEP.
+ (MDEFINES): Updated.
+
+ * doc/Makefile.sub (GROFF_BIN_PATH): Use SH_SEP.
+ * src/preproc/eqn/Makefile.sub (neqn): Use SH_SEP.
+ * src/roff/nroff/Makefile.sub (nroff): Use SH_SEP.
+
+2004-03-05 Werner LEMBERG <wl@gnu.org>
+
+ * font/devlj4/Makefile.sub (LJ4RES): Set to 1200. This helps to
+ reduce alignment problems with newer printers which use built-in
+ TrueType fonts (instead of the older Intellifonts). The ideal
+ solution is to provide a second set of groff metric files, but this
+ is extremely time-consuming to produce, given that HP's metric
+ files are very rudimentary.
+
+2004-03-01 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grolj4/lj4.cpp (main): Fix argument of getopt_long.
+ s/operand/argument/ in error message.
+
+2004-03-01 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * src/roff/groff/groff.cpp (main): Don't allow option -o if -Thtml
+ is in use.
+
+2004-03-01 Antti Kantee <pooka@netbsd.org>
+
+ * tmac/s.tmac (XE): Fix error message.
+
+2004-02-27 Jeff Conrad <jeff_conrad@msn.com>
+
+ * src/include/nonposix.h (write, dup, dup2, close) [_MSC_VER]:
+ New macros.
+
+ * src/roff/groff/pipeline.c: Declare strcasecmp.
+ (run_pipeline) [_WIN32]: Use function name variants which don't
+ start with `_'.
+ Fix stream handling.
+
+2004-02-27 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * src/include/nonposix.h: Fix declaration of `system_shell_name'.
+ Declare `spawnvp_wrapper' and macro definitions of spawnvp only
+ for platforms which use the native Win32 runtime libraries.
+ (FLUSH_INPUT_PIPE) [_UWIN]: Provide non-empty version.
+
+ * src/libs/libgroff/quotearg.c (QUOTE_ARG_MALLOC_ERROR,
+ QUOTE_ARG_REALLOC_ERROR): Fix string.
+
+ * src/preproc/html/pre-html.cpp: Remove declaration of
+ `spawnvp_wrapper'.
+ Don't use __MINGW32__.
+ s/DEBUG_FILE/DEBUG_FILE_DIR/.
+ (DEBUG_TEXT, DEBUG_NAME, DEBUG_FILE) [DEBUGGING]: New macros.
+ (OUTPUT_STREAM, PS_OUTPUT_STREAM, REGION_OUTPUT_STREAM): New macros.
+ (char_buffer::run_output_filter) [MAY_FORK_CHILD_PROCESS]: Fix
+ calls to `set_redirection' and `WAIT'.
+ [MAY_SPAWN_ASYNCHRONOUS_CHILD]: Remove unused variable `i' and `j'.
+ Fix calls to `set_redirection' and `save_and_redirect'.
+ (char_buffer::do_html, char_buffer::do_image) [DEBUGGING]: Fix calls
+ to `set_redirection' and `save_and_redirect'.
+ (usage): Fix message.
+ (makeTempFiles, main): Use `DEBUG_FILE'.
+
+2004-02-21 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/troff.h (WARN_TOTAL): Fix value.
+
+2004-02-21 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * src/libs/libgroff/quotearg.c: New file, providing proper argument
+ quoting for MSVC's spawn* and exec* functions.
+ * src/libs/libgroff/spawnvp.c: New file, providing a wrapper around
+ spawnvp with proper quoting for MSVC.
+
+ * src/libs/libgroff/assert.cpp (program_name),
+ src/libs/libgroff/new.cpp (program_name): Declare as `extern "C"'.
+ * src/libs/libgroff/Makefile.sub (OBJS, CSRCS): Updated.
+
+ * src/roff/troff/input.cpp (program_name): Declare as `extern "C"'.
+
+ * src/include/error.h (program_name): Declare as `extern "C"'.
+ * src/include/nonposix.h [__MSDOS__ ...]: Handle spawnvp.
+
+2004-02-21 Jeff Conrad <jeff_conrad@msn.com>
+
+ * src/preproc/html/pre-html.cpp [__CYGWIN__ ...]: Declare
+ spawnvp_wrapper.
+ [MAY_SPAWN_ASYNCHRONOUS_CHILD]: Declare i and j.
+
+2004-02-20 Jeff Conrad <jeff_conrad@msn.com>
+
+ * src/roff/groff/pipeline.c (cmd) [__MSDOS__ || ...]: New global
+ variable.
+ (sbasename) [__MSDOS__ || ...]: New function.
+ (system_shell_name) [__MSDOS__ || ...]: Use a different, more
+ generic algorithm.
+ (system_shell_dash_c, is_system_shell) [__MSDOS__ || ...]: Updated.
+ (run_pipeline) [_WIN32]: Use _XXX variants for some macros instead
+ of XXX.
+ Use STDOUT_FILENO instead of hardcoded file handle.
+ (signal_catcher) [__MSDOS__]: Moved to non-_WIN32 section.
+
+2004-02-19 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/div.cpp: Include nonposix.h after troff.h to
+ avoid warnings w.r.t. redefinition of P_tmpdir for some compilers.
+
+2004-02-18 Werner LEMBERG <wl@gnu.org>
+
+ * font/devlj4/Makefile.sub (DEVFILES): Updated to contain all
+ new font and mapping files.
+
+2004-02-18 Jeff Conrad <jeff_conrad@msn.com>
+ Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * src/include/nonposix.h (FLUSH_INPUT_PIPE): New macro to empty
+ an input pipe. This is needed for the MSVC compiler to make troff's
+ `-o' option work.
+
+ * src/roff/troff/div.cpp: Include nonposix.h.
+ (cleanup_and_exit): Call FLUSH_INPUT_PIPE.
+
+2004-02-17 Werner LEMBERG <wl@gnu.org>
+
+ * font/devlj4/generate/special.awk: New script.
+ * font/devlj4/generate/Makefile (S): Use special.awk.
+ * font/devlj4/*: Regenerated, including the following new files:
+ Arial (AR, AB, AI, ABI), Times New Roman (TNRR, TNRB, TNRI, TNRBI),
+ MS Symbol (SYMBOL), Wingdings (WINGDINGS).
+ * NEWS: Document new lj4 fonts and revised hpftodit.
+
+2004-02-17 Paco Andrs Verd <pandres@dragonet.es>
+
+ * src/devices/grolbp/lbp.h (vmdvarc): Fix formatting string.
+
+2004-01-25 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/progname.cpp: Replaced with...
+ * src/libs/libgroff/progname.c: New file.
+ * src/libs/libgroff/Makefile.sub: Updated accordingly.
+
+2004-01-17 Werner LEMBERG <wl@gnu.org>
+
+ * font/devlj4/generate/Makefile (SYMBOL): Use 9nb28703.tfm.
+
+2004-01-16 Jeff Conrad <jeff_conrad@msn.com>
+
+ * font/devlj4/generate/wingdings.map,
+ font/devlj4/generate/symbol.map: Include unnamed glyphs.
+ Use groff glyph names where possible.
+ * src/devices/grolj4/lj4_font.man: Minor updates.
+
+2004-01-13 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/www.tmac (DC): Handle TTY devices.
+
+ * doc/webpage.ms: Document viewCVS from ffii.org.
+ * NEWS, README: Updated.
+
+ * src/roff/groff/groff.man: Mention lj4_font man page.
+
+ * font/devlj4/generate/Makefile (SYMBOLMAP, WINGDINGSMAP): New
+ variables.
+ (FONTS): Add SYMBOL and WINGDINGS.
+ (SYMBOL, WINGDINGS): New targets.
+
+2004-01-13 Jeff Conrad <jeff_conrad@msn.com>
+
+ * src/devices/grolj4/lj4_font.man: New man page.
+ * src/devices/grolj4/Makefile.sub (MAN5): New variable.
+ * src/devices/grolj4.man: Mention lj4_font man page.
+
+ * src/utils/hpftodit/hpftodit.cpp (read_map): Handle line comments.
+ * src/utils/hpftodit/hpftodit.man: Document it.
+ (CW): New macro.
+ Remove details about fonts (which are now in lj4_font.man).
+
+ * font/devlj4/generate/symbol.map,
+ font/devlj4/generate/wingdings.map: New files.
+
+2004-01-12 Werner LEMBERG <wl@gnu.org>
+
+ * README: Mention ffii's viewcvs access.
+
+2004-01-09 Werner LEMBERG <wl@gnu.org>
+
+ * font/devlj4/generate/special.map: Map MSL 228 to U+221F.
+
+2004-01-09 Jeff Conrad <jeff_conrad@msn.com>
+
+ Revert most of the change from 2004-01-03 to better control used
+ symbol sets.
+
+ * src/utils/hpftodit/hpftodit.cpp (symbol_set): New structure.
+ (text_symbol_sets, special_symbol_sets): New arrays.
+ (symbol_set_table): New global variable.
+ (read_symbol_sets): Use search order given in the text_symbol_sets
+ and special_symbol_sets arrays. If command line flag -a is not
+ given, search both arrays.
+ (output_charset): Require x_height_tag only for command line flag -i.
+
+2004-01-06 Werner LEMBERG <wl@gnu.org>
+
+ Implement string-valued registers \n[.m] and \n[.M] to return the
+ name of the current drawing and background color, respectively.
+
+ * src/roff/troff/symbol.h: Moved to...
+ * src/include/symbol.h: Here.
+ Small fixes to make it work outside of the `troff' directory.
+ * src/roff/troff/symbol.cpp: Moved to...
+ * src/libs/libgroff/symbol.cpp: Here.
+ Small fixes to make it work outside of the `troff' directory.
+
+ * src/include/Makefile.sub (HDRS), src/libs/libgroff/Makefile.sub
+ (OBJS, CCSRCS), src/roff/troff/Makefile.sub (OBJS, CCSRCS, HDRS):
+ Updated.
+
+ * src/include/color.h: Include symbol.h.
+ (color): Add new field `nm'.
+ * src/libs/libgroff/color.cpp (color::color): Updated.
+
+ * src/roff/troff/dictionary.cpp, src/roff/troff/div.cpp,
+ src/roff/troff/node.cpp, src/roff/troff/number.cpp,
+ src/roff/troff/reg.cpp: Don't include symbol.h.
+
+ * src/roff/troff/env.cpp: Don't include symbol.h.
+ (environment::get_glyph_color_string,
+ environment_get_fill_color_string): New member functions.
+ (init_env_requests): Handle `.m' and `.M' registers.
+ * src/roff/troff/input.cpp: Don't include symbol.h.
+ (default_symbol): Moved to symbol.cpp/symbol.h.
+ (do_glyph_color, do_fill_color, define_color): Pass symbol name
+ to color constructor.
+ * src/roff/troff/env.h: Updated.
+
+ * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
+ Document new registers.
+
+2004-01-05 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/node.cpp (space_node::get_breakpoints,
+ space_node::nbreaks): Protect against zero `next' field.
+
+2004-01-03 Jeff Conrad <jeff_conrad@msn.com>
+
+ In hpftodit, use the symbol sets offered in the TFM.
+
+ * src/utils/hpftodit/hpftodit.cpp (NO_GLYPH): New constant.
+ (symbol_set, text_symbol_sets, special_symbol_sets,
+ symbol_set_table): Removed.
+ (get_printcode): Removed.
+ (read_symbol_sets): Initialize `symbol_set' field with
+ `NO_SYMBOL_SET'.
+ Simplify code to just use the `kind' value.
+ (output_charset): Improve output formatting.
+ (dump_symbols): Simplified.
+
+2004-01-02 Werner LEMBERG <wl@gnu.org>
+
+ * font/devlj4/generate/text.map: Add more MSL numbers.
+
+2004-01-02 Jeff Conrad <jeff_conrad@msn.com>
+
+ * src/utils/hpftodit/hpftodit.cpp (is_decomposed): New macro.
+ (text_symbol_sets): Add more symbol sets.
+ (debug_flag): New static variable (moved from `main').
+ (get_printcode, show_symset): New functions.
+ (main): Remove `debug_flag'.
+ (output_charset): Use `show_symset'.
+ (dump_symbols): Use `show_symset'.
+ Print symsets for all glyphs.
+ (read_map): Actually call `unicode_to_ucode_make' but this time
+ correctly.
+
+2004-01-01 Werner LEMBERG <wl@gnu.org>
+
+ * font/devlj4/generate/text.map, font/devlj4/generate/special.map:
+ Fix placement of comments.
+
+2004-01-01 Jeff Conrad <jeff_conrad@msn.com>
+
+ * src/utils/hpftodit/hpftodit.cpp (main): Read map file also if
+ option `-d' is given.
+ (output_charset): Improve warning messages to give more information.
+ (dump_symbols): Make information more precise.
+ (usage): Updated.
+ (read_map): Don't call unicode_to_ucode_name; the glyph names must
+ appear as-is and shouldn't be decomposed.
+
+2003-12-31 Werner LEMBERG <wl@gnu.org>
+
+ * src/utils/hpftodit/hpftodit.cpp (dump_tags): Handle posture_tag.
+ * font/devlj4/generate/Makefile (IFLAG): Updated to new units.
+ (FONTS): Add TrueType font families Arial and Times New Roman.
+ (TNRR, TNRB, TNRI, TNRBI, AR, AB, AI, ABI): New targets.
+ * font/devlj4/generate/text.map: Fix Unicode values of `fi' and
+ `fl'.
+
+2003-12-31 Jeff Conrad <jeff_conrad@msn.com>
+
+ * test-groff.in (SEP): Quote value.
+ * src/roff/troff/node.cpp (suppress_node::tprint): Change type of
+ `tem' to `char*' to avoid deallocation of a pointer to a constant
+ object which some compilers don't like.
+
+2003-12-31 Werner LEMBERG <wl@gnu.org>
+
+ * font/devlj4/generate (text.map, special.map): Rewritten to work
+ with the new hpftodit version.
+
+2003-12-30 Jeff Conrad <jeff_conrad@msn.com>
+
+ * src/utils/hpftodit/hpftodit.cpp (output_charset): Emit HP symbol
+ set and 8bit character code for all glyphs also.
+
+2003-12-30 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/strcasecmp.c: Updated from gnulib.
+
+2003-12-29 Werner LEMBERG <wl@gnu.org>
+
+ More fixes for MSVC compiler.
+
+ * doc/Makefile.sub (GROFF_BIN_PATH): Use $(SEP).
+
+ * src/include/nonposix.h (STDIN_FILENO, STDOUT_FILENO,
+ STDERR_FILENO) [_MSC_VER]: Define conditionally.
+ (getpid) [_MSC_VER]: Remove.
+ Include direct.h and process.h conditionally.
+
+ * src/roff/troff/node.cpp (suppress_node::tprint): Don't use
+ parentheses for a_delete.
+
+ * src/utils/lookbib/lookbib.cpp: Include nonposix.h.
+
+ * test-groff: Replaced with...
+ * test-groff.in: This new template to handle path separator
+ properly.
+
+ * configure.ac: Check for direct.h and process.h.
+ Generate test-groff script.
+ * configure, src/include/config.hin: Regenerated.
+
+2003-12-28 Werner LEMBERG <wl@gnu.org>
+
+ Add integral extension glyph.
+ Add new option `-x' to afmtodit to suppress use of built-in AGL.
+
+ * font/devhtml/R.proto, font/devutf8/R.proto: Add `u23AE'.
+
+ * font/devps/generate/textmap: Provide entry for `integralex' to
+ override (old) PUA value of the AGL.
+ * font/devps/generate/Makefile (SS): Add afmtodit option `-x'.
+ * font/devps/*: Regenerated.
+
+ * src/utils/afmtodit/afmtodit.pl: Add option `-x'.
+ * src/utils/afmtodit/afmtodit.man, NEWS: Updated.
+
+2003-12-27 Werner LEMBERG <wl@gnu.org>
+
+ Add forgotten `coproduct' symbol (already available for DVI).
+
+ * font/devhtml/R.proto, font/devps/generate/textmap,
+ font/devps/symbolmap, font/devutf8/R.proto, man/groff_char.man,
+ src/libs/libgroff/uniglyph.cc, src/libs/libgroff/glyphuni.cpp: Add
+ U+2210 (\[coproduct]).
+
+2003-12-26 Jeff Conrad <jeff_conrad@msn.com>
+
+ hpftodit has been extended to handle TrueType metric files and
+ more glyphs. See hpftodit.man for more details.
+
+ * src/utils/hpftodit/hpftodit.cpp: Include stdio.h, string.h,
+ ctype.h, and unicode.h.
+ s/msl/charcode/ everywhere since we now handle Unicode values also.
+ (equal, NO, YES, MSL, SYMSET, UNICODE, UNICODE): New macros.
+ Use it where appropriate.
+ (MULTIPLIER): Replaced with...
+ (multiplier): New global static variable.
+ (scale): Updated.
+ (tag_type): Add more TFM tags.
+ (tag_name): New array.
+ (ENUM_TYPE, FLOAT_TYPE): Removed.
+ (BYTE_TYPE): New value assigned.
+ (ASCII_TYPE, RATIONAL_TYPE): New enumeration values.
+ (text_symbol_sets, special_symbol_sets): Extended to cover more
+ sets.
+ (check_type): Add return value.
+ (check_units): Add parameters to get ppi and upem values.
+ Handle TrueType TFM data.
+ (output_font_name): New function.
+ (output_charset): Add parameter to handle TFM type.
+ Handle TrueType TFMs also.
+ (em_fract): New macro.
+ (dump_tags): Be much more verbose and handle more tags.
+ (dump_ascii, dump_symbol_sets, dump_symbols): New functions.
+ (hp_msl_to_ucode_name, unicode_to_ucode_name, is_uname): New
+ functions.
+ (read_map): Add parameter to handle TFM type.
+ Handle both MSL and Unicode mappings.
+ (main): Add two new command line options `-a' and `-q'.
+ Updated to make use of new functions.
+ (usage): Updated.
+
+ * src/utils/hpftodit/hpuni.cpp: New file.
+
+ * src/utils/hpftodit/Makefile.sub, src/utils/hpftodit/hpftodit.man:
+ Updated.
+
+2003-12-25 Werner LEMBERG <wl@gnu.org>
+
+ * src/include/nonposix.h (read) [_MSC_VER]: Define.
+
+2003-12-24 Werner LEMBERG <wl@gnu.org>
+
+ * src/utils/afmtodit/afmtodit.man: Some reformulations as suggested
+ by Michail Vidiassov <master@iaas.msu.ru>.
+
+2003-12-20 Werner LEMBERG <wl@gnu.org>
+
+ * font/devhtml/R.proto: Add u00{47,67}_0306, u00{53,73}_0327,
+ and u0049_0307.
+ Add missing latin-2 glyphs.
+ * font/devutf8/R.proto: Add missing latin-2 glyphs.
+
+ * tmac/troffrc: Load `composite.tmac' earlier.
+
+ * tmac/dvi.tmac, tmac/ps.tmac, tmac/lbp.tmac: Add u00{47,67}_0306,
+ u00{53,73}_0327, and u0049_0307.
+ * tmac/X.tmac: Add u00{47,67}_0306.
+ * tmac/tty-char.tmac: Use composite glyph names for readability.
+
+ * NEWS: Updated.
+
+ * src/include/unicode.h: Remove `extern' keywords.
+
+2003-12-20 Nilgn Belma Bugner <nilgun@superonline.com>
+
+ * tmac/latin5.tmac: New file.
+
+2003-12-19 Werner LEMBERG <wl@gnu.org>
+
+ Add some glyphs needed for Turkish.
+
+ * font/devutf8/R.proto: Add u00{47,67}_0306, u00{53,73}_0327,
+ and u0049_0307.
+
+ * tmac/composite.tmac: Add `,' as a synonym for `ac' accent.
+ * tmac/tty-char.tmac: Add representations for u00{47,67}_0306,
+ u00{53,73}_0327, and u0049_0307.
+
+2003-12-18 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grops/ps.cc (ps_output::put_float): Revert change
+ from 2001-10-04.
+ Remove trailing zeros.
+
+2003-12-17 Werner LEMBERG <wl@gnu.org>
+
+ Make \? transparent to end-of-sentence recognition.
+
+ * src/roff/troff/input.cc (non_interpreted_node): Add
+ `ends_sentence' member function.
+
+2003-12-16 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Document `dt' request correctly.
+ Other minor typographical improvements.
+
+2003-12-10 Michail Vidiassov <master@iaas.msu.ru>
+
+ * src/utils/afmtodit/Makefile.sub (afmtodit): Fix typo.
+
+2003-12-10 Richard Stallman <rms@gnu.org>
+
+ * LICENSE: Better wording.
+
+2003-12-09 Werner LEMBERG <wl@gnu.org>
+
+ * aclocal.m4 (GROFF_BROKEN_SPOOLER_FLAGS): Set default value to 0.
+ * configure, NEWS: Updated.
+
+2003-12-08 Werner LEMBERG <wl@gnu.org>
+
+ * FDL: Updated to version 1.2 (from www.gnu.org/copyleft).
+
+2003-12-07 Bernd Warken <bwarken@mayn.de>
+
+ * LICENSE: Updated.
+
+2003-12-07 Werner LEMBERG <wl@gnu.org>
+
+ * INSTALL: Improved.
+
+2003-12-05 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ Use path separator character of target platform for compiled-in
+ default paths.
+
+ * aclocal.m4 (GROFF_TARGET_PATH_SEPARATOR): New macro.
+ * configure.ac: Use GROFF_TARGET_PATH_SEPARATOR.
+ * configure: Regenerated.
+ * Makefile.in (SEP): Use GROFF_PATH_SEPARATOR.
+
+2003-12-05 Werner LEMBERG <wl@gnu.org>
+
+ * src/include/nonposix.h (PATH_SEP_CHAR): New definition.
+ Replace `PATH_SEP[0]' with `PATH_SEP_CHAR' everywhere.
+
+2003-12-04 Bernd Warken <bwarken@mayn.de>
+
+ * LICENSE: New file.
+
+2003-12-03 Werner LEMBERG <wl@gnu.org>
+
+ * src/utils/afmtodit/afmtodit.pl: Comment out code which handles
+ ligatures present in AFM files since groff currently only
+ understands some standard ligatures and nothing else.
+
+2003-12-03 Jeff Conrad <jeff_conrad@msn.com>
+
+ * src/roff/groff/groff.cpp (main): Don't run the spooler if
+ option -v is given.
+
+ * src/roff/groff/pipeline.c (run_pipeline) [_WIN32]: Fix error
+ messages.
+ Close stdout copy.
+ Don't use Unix wait flags.
+
+2003-12-02 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/glyphuni.cpp, src/roff/troff/unicode.cpp,
+ src/roff/troff/unicode.h, src/roff/troff/uniglyph.cpp,
+ src/roff/troff/uniuni.cpp: Moved to...
+ * src/libs/libgroff/glyphuni.cpp, src/libs/libgroff/unicode.cpp,
+ src/libs/libgroff/unicode.h, src/libs/libgroff/uniglyph.cpp,
+ src/libs/libgroff/uniuni.cpp: Here.
+
+ * src/include/Makefile.sub.old (HDRS),
+ src/libs/libgroff/Makefile.sub (OBJS, CCSRCS),
+ src/roff/troff/Makefile.sub (HDRS, PBJS, CCSRCS): Updated.
+
+2003-12-01 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * src/preproc/htlp/pre-html.cpp (__tmpfile): Renamed to
+ `DEBUG_FILE'.
+ Updated all users.
+
+2003-12-01 Werner LEMBERG <wl@gnu.org>
+
+ * groff.texinfo: Document special behaviour of `.vs 0'.
+ Improve documentation of `cflags' request.
+ * NEWS: Updated.
+
+2003-11-29 Werner LEMBERG <wl@gnu.org>
+
+ * font/devlj4/generate/Makefile (CORONET): Use correct TFM.
+ * font/devlj4/CORONET: Regenerated.
+
+2003-11-24 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/env.cpp (hyphen_trie::read_patterns_file): Fix loop
+ if processing hyphenation patterns in traditional mode.
+ Improve error messages.
+
+2003-11-20 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/node.cpp (troff_output_file::put_char_width,
+ troff_output_file::put_char): Fix type of local variable `c'.
+
+2003-11-19 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/groff/pipeline.c (P): Removed. Updated all function
+ declarations.
+ (i_to_a): Removed. libgroff already provides this function.
+ (run_pipeline) [_WIN32]: Don't use itoa but i_to_a.
+
+2003-11-18 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * src/roff/groff/pipeline.c (xstrsignal): Fix usage of
+ HAVE_DECL_SYS_LIST.
+
+2003-11-17 Werner LEMBERG <wl@gnu.org>
+
+ * COPYING: Use correct version.
+
+2003-11-11 Werner LEMBERG <wl@gnu.org>
+
+ LynxOS 4.0.0 doesn't declare vfprintf.
+
+ * configure.ac: Check for vfprintf.
+ * configure: Regenerated.
+ * src/include/lib.h: Handle `NEED_DECLARATION_VFPRINTF'.
+ * src/include/config.hin: Regenerated.
+
+2003-11-10 Werner LEMBERG <wl@gnu.org>
+
+ LynxOS 4.0.0 has snprintf (without declaration) but no vsnprintf.
+
+ * configure.ac: Check for vsnprintf.
+ * configure: Regenerated.
+ * src/include/lib.h: Handle `NEED_DECLARATION_VSNPRINTF' and
+ `HAVE_VSNPRINTF'.
+ * src/include/config.hin: Regenerated.
+
+2003-11-09 Werner LEMBERG <wl@gnu.org>
+
+ * aclocal.m4: Updated syntax to autoconf 2.59.
+ (GROFF_HTML_PROGRAMS): Use AC_FOREACH.
+ Don't check for gsos2.
+ (GROFF_SRCDIR, GROFF_BUILDDIR): Removed. autoconf 2.59 provides
+ working abs_top_srcdir and abs_top_builddir.
+
+ * configure.ac: Updated syntax to autoconf 2.59.
+ Don't call GROFF_SRCDIR and GROFF_BUILDDIR.
+ Replace call to AC_DECL_SYS_SIGLIST with call to AC_CHECK_DECLS.
+ * configure: Regenerated.
+
+ * Makefile.in, doc/Makefile.in: s/@top_srcdir@/@abs_top_srcdir@/,
+ s/@groff_top_builddir@/@abs_top_builddir@/.
+
+ * src/roff/groff/pipeline.c (xstrsignal):
+ s/SYS_SIGLIST_DECLARED/HAVE_DECL_SYS_SIGLIST/.
+
+2003-11-07 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grodvi/dvi.cpp (draw_dvi_printer::draw) ['a']: Always
+ make start angle smaller than end angle to circumvent a bug in tpic
+ handling of some versions of dvipdfm (and dvipdfmx).
+
+2003-10-30 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grops/grops.man: Improve section on creating EPS.
+
+2003-10-29 Werner LEMBERG <wl@gnu.org>
+
+ * contrib/pic2graph/pic2graph.sh: Fix typo (-P-letter ->
+ -P-pletter).
+
+2003-10-28 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Fix documentation of `.if'.
+
+2003-10-27 Michail Vidiassov <master@iaas.msu.ru>
+
+ * src/utils/afmtodit/afmtodit.pl: Handle unmapped characters of
+ the form `uniXXXX' also.
+
+2003-10-27 Werner LEMBERG <wl@gnu.org>
+
+ * contrib/eqn2graph/eqn2graph.sh, contrib/grap2graph/grap2graph.sh,
+ contrib/pic2graph/pic2graph.sh: Implement secure management of
+ temporary files.
+ Pass `-P-pletter' to groff to avoid data outside of the converted
+ area -- some versions of `convert' (for example 5.3.8) don't check
+ the bounding box of the image but always use a fixed image size
+ (letter paper format).
+ * contrib/eqn2graph/eqn2graph.man, contrib/grap2graph/grap2graph.man,
+ contrib/pic2graph/pic2graph.man: Updated.
+
+ * src/roff/groff/groff.man: Document $TMP and $TEMP.
+
+2003-10-26 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/pic/troff.cpp (troff_output::simple_circle,
+ troff_output::simple_ellipse, troff_output::simple_arc,
+ troff_output::simple_line, troff_output::simple_spline,
+ troff_output::simple_polygon): Insert a space before arguments.
+ (troff_output::set_fill): Emit `\&' before `\D'Fg...' since the
+ latter doesn't produce a node, so the following `.sp -1' would do
+ the wrong thing.
+ Don't emit `.sp -1' after \M. This also doesn't produce a token
+ (and we don't have to care about compatibility mode).
+ (troff_output::set_color, troff_output::reset_color): Don't emit
+ `.sp -1' after \M and \m.
+
+ * src/roff/troff/input.cpp (old_have_input): New global variable.
+ (input_stack::get): Handle `old_have_input'.
+ (process_input_stack) <token::TOKEN_NEWLINE>: Call
+ `trapping_blank_line' depending on `old_have_input', not
+ `have_input'.
+
+2003-10-20 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * src/libs/libgroff/tmpfile.cpp [__MSDOS__, _Win32]
+ (WIN32_TMPDIR_ENVVAR, MSDOS_TMPDIR_ENVVAR): New macros, providing
+ default directory names for temporary files.
+ [__MSDOS__, _Win32] (temp_init::temp_init): Use them.
+
+ * src/roff/groff/pipeline.c [__MSDOS__]: Include stdlib.h.
+ [__MSDOS__] (run_pipeline): Honour environment variables.
+ Don't use `tmpnam' but `tempnam' to work around messy
+ implementation.
+
+ * README.MinGW: New file.
+
+2003-10-16 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/html/pre-html.cpp (write_upto_newline): Don't use
+ `(*t)->next' without testing validity of `*t'.
+ (usage): Make it more readable.
+
+2003-10-16 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ Make html device run under both MS-DOS and Win32.
+
+ * src/preproc/html/pre-html.cpp (MAY_FORK_CHILD_PROCESS,
+ MAY_SPAWN_ASYNCHRONOUS_CHILD): New macros to control whether
+ spawn or fork+exec has to be used, and whether parent must sleep
+ until the child process terminates. Used in
+ `char_buffer::run_output_filter'.
+ (copyofstdoutfd): Removed.
+ (char_buffer): Replace `write_file_html' and `write_file_troff'
+ member functions with `emit_troff_output' and `run_output_filter'.
+ (DEVICE_FORMAT, HTML_OUTPUT_FILTER, IMAGE_OUTPUT_FILTER): New
+ macros.
+ (replaceFd): Replaced with...
+ (set_redirection): New auxiliary function.
+ (waitForChild): Replaced with...
+ (save_and_redirect): New auxiliary function for.
+
+ (char_buffer::do_html, char_buffer::do_image): Simplified, using new
+ functions.
+
+2003-10-14 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * aclocal.m4 (GROFF_SYS_NERR): Check stdlib.h also.
+ (GROFF_LIBC): New function.
+ * configure.ac: Call GROFF_LIBC.
+ Check for `kill'.
+ * configure: Regenerated.
+
+ * src/include/lib.h: Handle __MINGW32__.
+ * src/include/nonposix.h [_MSC_VER]: Handle __MINGW32__.
+ Add macro for `pipe'.
+ Define P_tmpdir.
+
+ * src/roff/groff/pipeline.c (run_pipeline): Handle `no_pipe'
+ correctly.
+
+ * src/utils/indxbib/signal.c (handle_fatal_signal) [!HAVE_KILL]:
+ Implement.
+
+2003-10-12 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/groff/groff.cpp (help), src/devices/grops/ps.cpp (usage),
+ src/roff/troff/input.cc (usage): Updated.
+
+ * NEWS, doc/groff.texinfo: Updated.
+
+2003-10-12 Peter Miller <millerp@canb.auug.org.au>
+
+ * src/libs/libgroff/searchpath.cpp
+ (search_path::open_file_cautious): New function which also handles
+ `-' as stdin and stdout depending on the access mode.
+ * src/include/searchpath.h (search_path): Updated.
+
+ * src/devices/grops/ps.cpp (main): Handle new `-I' switch.
+ * src/devices/grops/ps.h: Include `searchpath.h'.
+ * src/devices/grops/psrm.cpp (resource_manager::supply_resource):
+ Open resource file with `include_search_path.open_file_cautious'.
+ * src/devices/grops/grops.man: Document new `-I' switch.
+
+ * src/devices/grodvi/dvi.cpp (main), src/devices/grolbp/lbp.cpp
+ (main), src/devices/grolj4/lj4.cpp (main),
+ src/devices/grotty/tty.cpp (main): Ignore new `-I' switch.
+
+ * src/preproc/soelim/soelim.cpp (include_list_length, include_list):
+ Replaced with...
+ (include_search_path): New global variable.
+ (include_path_append): Removed.
+ (main): Use `include_search_path.command_line_dir' to handle `-I'.
+ (do_file): Simplify, using new
+ `include_search_path.open_file_cautious'.
+
+ * src/roff/groff/groff.cpp (print_commands): Accept file handle as
+ parameter.
+ (main): Pass arguments to `-I' to both troff and devices.
+ Improve handling of `-V'.
+ * src/roff/groff/groff.man: Document changes to -I and -V.
+
+ * src/roff/troff/input.cpp (include_search_path): New global
+ variable.
+ (next_file, source, ps_bbox_request, transparent_file,
+ process_input_file): Use new
+ `include_search_path.open_file_cautious'.
+ (main) Handle `-I' switch.
+ * src/roff/troff/node.cpp (troff_output_file::really_copy_file):
+ Use new `include_search_path.open_file_cautious'.
+ * src/roff/troff/node.h: New extern symbol `include_search_path'.
+ * src/roff/troff/troff.man: Document new `-I' switch.
+
+2003-09-15 Ruslan Ermilov <ru@FreeBSD.org>
+
+ Support multiple calls of .Lb in LIBRARY section.
+
+ * tmac/doc-common (doc-in-library-section): New register.
+ (doc-section-library): New string.
+ (Sh): Set `doc-in-library-section'.
+ (Rd): Updated.
+ * tmac/doc-syms (Lb): Insert breaks before and after arguments
+ if in LIBRARY section.
+ * tmac/doc.tmac (doc-save-global-vars): Updated.
+ * NEWS, tmac/groff_mdoc.man: Updated.
+
+2003-09-14 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/doc-common (doc-default-operating-system): New variable.
+ (Os): Use it.
+
+2003-09-08 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc.tmac (doc-reset-reference): Handle data for `%I' also.
+
+2003-08-31 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.comm: Use `test ... ||' in favor of `if test ...; then'.
+ (install_dev, uninstall_dev): Check whether $(DEVSCRIPTS) and
+ $(DEVFILES) are not empty.
+ * Makefile.in: Use `test ... ||' in favor of `if test ...; then'.
+
+2003-08-23 Stephen Gildea <http://www.gildea.com/stephen>
+
+ * src/preproc/refer/ref.cpp (reference::compute_sort_key): Always
+ insert SORT_SEP. With certain combinations of sort specifications,
+ refer sorted entries in the wrong order. In particular, entries
+ with a missing field should be be sorted before all entries that
+ have that field, before refer looks to the next field.
+
+2003-08-23 Werner LEMBERG <wl@gnu.org>
+
+ * src/utils/pfbtops/Makefile.sub (LINK.c): Define it so that the
+ g++ linker is used. Reported by Mark J. Reed
+ <mark.reed@turner.com>.
+
+2003-08-16 Heinz-Jrgen Oertel <hj.oertel@surfeu.de>
+
+ Add key character `x' to tbl which makes tbl call a user-defined
+ macro on a table cell.
+
+ * src/preproc/tbl/table.h (entry_modifier): Add `macro'.
+ * src/preproc/tbl/table.cpp (block_entry::do_divert): Call
+ `set_modifier' after printing the compatibility request.
+ (set_modifier): Print call to `m->macro' if not empty.
+ * src/preproc/tbl/main.cpp (entry_format::debug_print): Handle
+ `macro'.
+ (process_format): Implement cases `x' and `X'.
+ * src/preproc/tbl/tbl.man, NEWS: Updated.
+
+2003-08-15 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Minor fixes.
+
+2003-08-09 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac [cR]: Fix redefinition of `bp'.
+
+2003-08-07 Werner LEMBERG <wl@gnu.org>
+
+ * doc/Makefile.sub: Not all shells expand wildcards in the `for'
+ argument list to nothing if there is no file to match. Use `ls' as
+ a protection, similar to autoconf.
+
+ * Makefile.comm (install_dev, uninstall_dev): Protect `for' against
+ empty argument lists.
+
+ * doc/groff.texinfo: Improve documentation how vertical spacing
+ and line breaks interact.
+ Other minor fixes.
+
+ * tmac/www.tmac: Initialize `www-htmlimage-gap'.
+
+2003-08-03 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS, src/devices/grops/grops.man: -b16 is necessary to produce
+ EPS (using eps2eps or similar programs to compute the bounding box).
+
+2003-07-24 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Use the new @/ command to avoid overlong lines.
+ * doc/texinfo.tex: Updated from texinfo 4.6.
+ * README.CVS: From now on we need texinfo 4.6.
+
+2003-07-23 Werner LEMBERG <wl@gnu.org>
+
+ Add requests `dei1' and `ami1' for completeness.
+
+ * src/roff/troff/input.cc (calling_mode): Remove
+ CALLING_DISABLE_COMP.
+ (comp_mode): New enumeration.
+ (do_define_string, define_string, define_nocomp_string,
+ append_string, append_nocomp_string): Updated.
+ (do_define_macro): Add third parameter.
+ (define_macro, define_nocomp_macro, define_indirect_macro,
+ append_macro, append_nocomp_macro, append_indirect_macro): Updated.
+ (define_indirect_nocomp_macro, append_indirect_nocomp_macro): New
+ functions.
+ (ignore): Updated.
+ (init_input_requests): Add `dei1' and `ami1'.
+
+ * tmac/trace.tmac: Handle de1 and am1.
+ (de): Improve tracing message.
+ (am): Add missing `do'.
+ (return): Use de1.
+
+ * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
+ Document new requests.
+
+2003-07-22 Heinz-Jrgen Oertel <hj.oertel@surfeu.de>
+
+ Add option -G to .MPIMG to insert a gap between text and the image.
+
+ * tmac/www.tmac (www-finish-left-po, www-finish-right-ll,
+ www-finish-left-ll): Updated.
+ (www-image-just, www-image-gap, www-htmlimage-gap): New variables.
+ (MPIMG): Make option -L and -R optional.
+ Implement option -G.
+
+2003-07-22 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/devices/grohtml/post-html.cpp
+ (html_printer::do_file_components): Don't use `stdout' as lvalue
+ since it can be a macro.
+
+2003-07-22 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/strerror.c: Include errno.h to be in sync with
+ the corresponding test in aclocal.m4.
+
+2003-07-21 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/html/pre-html.cpp (TRANSPARENT): Don't use colour
+ names but RGB values directly. Otherwise pnmtopng depends on
+ an external file `rgb.txt' which maps colour names to values.
+
+2003-07-20 Werner LEMBERG <wl@gnu.org>
+
+ * aclocal.m4 (GROFF_SYS_ERRLIST): Include stdlib.h for MinGW.
+ * configure, src/include/config.hin: Regenerated.
+
+ * src/libs/libgroff/strerror.c: Include stdlib.h for MinGW.
+
+2003-07-19 Werner LEMBERG <wl@gnu.org>
+
+ * PROBLEMS: Add solution for UTF-8 problem with hyphens.
+
+2003-07-18 Werner LEMBERG <wl@gnu.org>
+
+ * *.man: Switch to non-compatibility mode temporarily if GNU
+ syntax extensions are used in the particular man page.
+
+ * PROBLEMS: Add solutions for SGR problems.
+
+2003-07-17 Werner LEMBERG <wl@gnu.org>
+
+ Don't ignore grotty's command line options if \X'tty: sgr ...' is
+ used to change the drawing scheme.
+
+ * src/devives/grotty/tty.cpp (bold_flag_option,
+ underline_flag_option, italic_flag_option, reverse_flag_option,
+ bold_underline_mode_option): New global variables.
+ (update_options): New function.
+ (tty_printer::special): Call update_options.
+ (main): Don't set xxx_flag but xxx_flag_option, then call
+ update_options.
+
+2003-07-14 Werner LEMBERG <wl@gnu.org>
+
+ Make grotty emit proper Unicode box drawing characters for -Tutf8.
+
+ * src/devices/grotty/tty.cpp (START_LINE, END_LINE): New enum
+ values.
+ (hline_char, vline_char): New global variables.
+ (tty_printer::tty_printer): Initialize them.
+ (tty_printer::draw): Emit START_LINE and END_LINE flags for both
+ horizontal and vertical lines.
+ (crossings): New global array.
+ (tty_printer::end_page): Use it to determine the proper crossing
+ character for -Tutf8.
+
+2003-07-12 Werner LEMBERG <wl@gnu.org>
+
+ * doc/Makefilesub (HTMLDOCFILESALL): New macro.
+ (HTMLDOCFILES): Revert to `pic.html'.
+ (CLEANADD, install_html, uninstall_sub): Use HTMLDOCFILESALL.
+
+2003-07-11 Werner LEMBERG <wl@gnu.org>
+
+ * doc/pic.ms: Improve documentation of absolute coordinates.
+ Document absolute positioning of pictures.
+
+ * NEWS: Add new pic capability.
+
+2003-07-09 Hartmut Henkel <hartmut_henkel@gmx.de>
+
+ * src/libs/libgroff/geometry.cpp (check_output_arc_limits):
+ Rewritten.
+
+2003-07-07 Werner LEMBERG <wl@gnu.org>
+
+ Implement support for dashed and dotted ellipses in pic. Based on
+ a patch from Hartmut Henkel <hartmut_henkel@gmx.de>.
+
+ * src/preproc/pic/common.cpp (common_output::ellipse_arc,
+ common_output::dashed_ellipse, common_output::dotted_ellipse): New
+ functions. Ellipse arcs are approximated with circle arcs.
+ * src/preproc/pic/common.h (common_output): Updated.
+ * src/preproc/pic/tex.cpp (tex_output::ellipse): Use new ellipse
+ functions.
+ * src/preproc/pic/troff.cpp (simple_output::ellipse): Ditto.
+
+ * src/preproc/pic/TODO, src/preproc/pic/pic.man: Updated.
+
+2003-07-06 Werner LEMBERG <wl@gnu.org>
+
+ Make grotty work on platforms which have unsigned char as the
+ default for char. Based on a patch by Thomas Klausner
+ <wiz@netbsd.org>.
+
+ * src/devices/grotty/tty.cpp (schar): New typedef.
+ Updated calls to declare_ptable and implement_ptable.
+ (glyph): Use schar for back_color_idx and fore_color_idx.
+ (tty_printer): Use schar for curr_fore_idx and curr_back_idx.
+ (tty_printer::tty_color, tty_printer::tty_printer,
+ tty_printer::color_to_idx, tty_printer::put_color): Updated.
+
+2003-07-06 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * src/roff/nroff/nroff.sh: Add option -d for completeness.
+ * src/roff/nroff/nroff.man: Updated.
+
+2003-07-05 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS, tmac/groff_www.man: Updated.
+ * doc/Makefile.sub: Updated.
+
+2003-07-05 Gaius Mulley <gaius@glam.ac.uk>
+
+ Implement support for multiple HTML output files.
+
+ * src/preproc/html/pre-html.cpp (scanArguments): Dummy handling for
+ -j command line option.
+
+ * src/devices/grohtml/post-html.cpp (job_name, multiple_files): New
+ global variables.
+ (file): New fields `new_output_file', `require_links',
+ `output_file_name'.
+ (file::file): Updated.
+ (files::set_file_name, files::set_links_required,
+ files::are_links_required, files::is_new_output_file,
+ files::file_name, files::next_file_name): New functions.
+ (header_desc): New fields `no_of_level_one_headings',
+ `header_filename'.
+ (header_desc::header_desc): Updated.
+ (header_desc::write_headings): Handle multiple files.
+ (html_printer::write_header): Save file name in which header occurs.
+ (html_printer::determine_header_level): Possibly split files on
+ level one headings.
+ (html_printer::do_links, html_printer::troff_tag): Updated.
+ (html_printer::insert_split_file, html_printer::do_job_name,
+ html_printer::emit_link, html_printer::write_navigation,
+ html_printer::do_file_components): New functions.
+ (html_printer::~html_printer): Handle multiple files.
+ (main): Handle command line option `-j'.
+
+ * src/devices/grohtml/grohtml.man: Updated.
+
+ * doc/Makefile.sub (pic.html), doc/Makefile.in (pic.html): New rule
+ which splits file.
+
+ * tmac/www.tmac (JOBNAME): New macro.
+ * tmac/s.tmac (SH-NO-TAG): New macro.
+ (@SH): Call SH-NO-TAG.
+ (@NH): Updated.
+
+2003-07-05 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/groff_mdoc.man: Improve documentation of punctuation
+ characters.
+
+2003-07-04 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/doc.tmac (Bd): Change to doc-Li-font later.
+
+2003-07-03 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac [cR]: Redefine `bp' to avoid empty lines.
+
+2003-07-01 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/doc.tmac (doc-do-func, doc-do-func-args): Don't print a comma
+ after `/*' and `*/'.
+ Fix spacing.
+ (Fn, Fo): Reduce indentation in synopsis.
+
+ * tmac/doc-common (doc-check-depth): New macro.
+ (doc-end-macro, Sh, Ss): Use it.
+ (Cd): Fix behaviour in synopsis.
+ (In): Make it parsed and callable.
+ If not in the synopsis, represent the C header file enclosed in
+ angle brackets.
+ (doc-str-Rv-std-suffix, doc-str-Rv-stds-suffix, doc-str-Rv-std0):
+ Use minus, not hyphen.
+
+ * tmac/groff_mdoc.man: Updated.
+
+2003-07-01 Werner LEMBERG <wl@gnu.org>
+
+ Integrated grap2graph, contributed by Eric S. Raymond.
+
+ * contrib/grap2graph/{Makefile.sub, grap2graph.sh, grap2graph.man}:
+ New files.
+ * Makefile.in, NEWS, MANIFEST, contrib/eqn2graph.man,
+ contrib/pic2graph.man, src/roff/groff/groff.man: Updated.
+
+2003-07-01 Colin Watson <cjwatson@debian.org>
+
+ * src/xditview/*.c: Add prototypes, fix return types, add includes.
+ Based on work by Fumitoshi UKAI <ukai@debian.or.jp>.
+
+2003-06-31 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/tty-char.tmac: Provide `lb', `rb', `lk', `rk', `lt', `rt'.
+
+2003-06-31 Werner LEMBERG <wl@gnu.org>
+
+ * doc/Makefile.sub (CLEANADD): Remove all files created by
+ running `make groff.{pdf,dvi}'.
+
+ * Makefile.sub (DISTCLEANFILES): Remove all non-source files from
+ src/xditview also.
+
+2003-06-30 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.in (SHELL): Define as @SHELL@.
+ (mkinstalldirs): Use $(SHELL).
+ (MDEFINES): Add $(SHELL).
+ * Makefile.comm (SHELL): Removed.
+
+2003-06-29 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/s.tmac (De, Ds): New aliases for .DE and .DS, respectively.
+ The X11 documentation files use them.
+ * tmac/groff_ms.man, doc/groff.texinfo: Document them.
+
+2003-06-15 Robert Goulding <goulding@Princeton.EDU>
+
+ * tmac/e.tmac (@C): Handle .ad also.
+
+2003-06-12 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/tbl.man: Document formatting of text blocks.
+
+ * src/roff/troff/input.cc (token::next) <handle_escape_char>:
+ Assign `n' even here. It is possible to construct a node
+ immediately following an escape character:
+
+ .di xx
+ \?\\\?a
+ .br
+ .di
+ .xx
+
+2003-06-10 Werner LEMBERG <wl@gnu.org>
+
+ * README.WIN32: Removed.
+ * MANIFEST: Updated.
+
+2003-06-07 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/nroff/nroff.sh: Don't emit SGR for option -u.
+
+2003-06-05 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/pic/pic.y <sprintf_args>: Implement workaround for bug
+ in Compaq C++ V6.5-033 for Compaq Tru64 UNIX V5.1A (Rev. 1885).
+
+2003-06-03 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/grn/hdb.cpp (DBRead): Don't close file handle; this
+ is done by the calling function.
+
+2003-05-22 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/X.tmac: Fix definition of `em'.
+
+2003-05-22 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cc (return_macro_request): Fix detection of
+ argument.
+
+2003-05-18 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc.tmac (doc-tag-list): Force horizontal mode after tag
+ to make items work which consist only of a tag.
+
+2003-05-17 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc.tmac (doc-tag-list): Don't use \Z to assure that spaces
+ aren't stretched in a tag (this can fail with unformatted boxes).
+ Instead, insert a break and go back one line.
+
+2003-05-16 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cc (return_macro_request): If called with
+ argument pop macro twice. We need this to trace `return'.
+
+ * tmac/trace.tmac: Handle `return'.
+ Fix typos.
+
+ * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
+ Document.
+
+2003-05-15 Larry Kollar <kollar@alltel.net>
+
+ * tmac/groff_ms.man, doc/groff.texinfo: Improve documentation of
+ registers `FPS', `FVS', and `FPD'.
+
+2003-05-15 Werner LEMBERG <wl@gnu.org>
+
+ * src/utils/pfbtops/pfbtops.c (get_text): Handle loop counter
+ correctly.
+
+2003-05-03 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/groff_mdoc.man: Slight improvements.
+
+2003-05-03 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc-common (doc-header): Emit vertical space of 1v instead of
+ `doc-header-space' after header line if register `cR' is set.
+
+2003-05-02 Werner LEMBERG <wl@gnu.org>
+
+ * TODO: Updated.
+
+2003-05-01 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/doc-common (Nd): Use \[em].
+
+2003-05-01 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc-ditroff, tmac/doc-nroff (doc-header-space,
+ doc-footer-space): Initialize to 0.5i.
+ (doc-setup-page-layout): Don't set doc-header-space and
+ doc-footer-space.
+
+2003-04-30 Werner LEMBERG <wl@gnu.org>
+
+ * REVISION: Set to 1.
+
+ * doc/pic.ms: Document possible problems with `figname'.
+
+2003-04-29 Werner LEMBERG <wl@gnu.org>
+
+Version 1.19 released
+=====================
+
+ * VERSION: Set to 1.19.
+ * REVISION: Set to 0.
+ * doc/groff.texinfo, doc/webpage.ms, NEWS: Updated.
+
+ * src/devices/grohtml/post-html.cpp (html_printer::~html_printer):
+ Define charset as `US-ASCII' in html output.
+
+ * tmac/www.tmac (ULE): Add missing scaling indicator.
+
+ * win32-diffs: Removed.
+
+2003-04-28 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Document `dn' and `dl' registers if used with
+ `.da' and `.boxa'.
+ Document how to insert discardable whitespace with `.ss'.
+
+2003-04-27 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/pic/tex.cpp (tex_output::start_picture): Make code
+ work with plain TeX also.
+
+ * src/preproc/pic/pic.man, doc/pic.ms: Fix TeX code example.
+
+2003-04-25 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/devices/grohtml/post-html.cpp (html_printer::~html_printer):
+ Use a loose DTD.
+
+2003-04-24 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/pic/pic.man, doc/pic.ms: Explain how to get a
+ vbox with positive height and zero depth if in TeX mode.
+
+ * NEWS: Document glyph name changes for grodvi and grolj4.
+
+2003-04-23 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/pic/tex.cpp (tex_output::start_picture): Fix TeX code.
+ * doc/pic.ms: Fixed.
+
+2003-04-21 Werner LEMBERG <wl@gnu.org>
+
+ HP-UX 10.20 has `snprintf' but it isn't declared.
+
+ * configure.ac: Add declaration test for snprintf.
+ * configure: Regenerated.
+ * src/include/lib.h: Handle `NEED_DECLARATION_SNPRINTF'.
+ * src/include/config.hin: Regenerated.
+
+2003-04-19 Werner LEMBERG <wl@gnu.org>
+
+ Add keyword `figname' to pic, specifying the name of the picture
+ box in TeX mode. Based on a patch from William J Poser
+ <wjposer@unagi.cis.upenn.edu>.
+
+ * src/preproc/pic/pic.y: New token `FIGNAME'.
+ (macro_name): New rule of type <str>.
+ (placeless_element): Handle `FIGNAME'.
+ * src/preproc/pic/lex.cpp (lookup_keyword): Add `figname'.
+ * src/preproc/pic/main.cpp (graphname): New global variable.
+ (do_picture): Initialize `graphname'.
+ * src/preproc/pic/pic.h: Updated.
+ * src/preproc/pic/tex.cpp (tex_output::start_picture): Use
+ `graphname'.
+ Simplify TeX code.
+ (tex_output::text): Beautify output.
+ * src/preproc/pic/object.cpp (object_spec::~object_spec): Deallocate
+ `shaded' and `outlined' unconditionally.
+ * NEWS, src/preproc/pic/pic.man, doc/pic.ms: Updated.
+ Minor improvements.
+
+ * PROBLEMS, README.CVS: Mention that bison version 1.875b or
+ greater is necessary.
+
+2003-04-17 Hartmut Henkel <hartmut_henkel@gmx.de>
+
+ Add option -r to soelim to avoid emission of `.lf' lines.
+ Add option -t to produces TeX comment lines instead of `.lf' lines.
+
+ * src/preproc/soelim/soelim.cpp: New global variables `raw_flag'
+ and `tex_flag'.
+ (usage): Updated.
+ (main): Handle `-r' and `-t'.
+ (set_location): Handle `raw_flag' and `tex_flag'.
+ * src/preproc/soelim/soelim.man, NEWS: Updated.
+
+2003-04-17 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/hyphenex.sh: Replaced with...
+ * tmac/hyphenex.pl: This perl script to avoid sed compatibility
+ nightmares.
+
+ * aclocal.m4 (GROFF_HTML_PROGRAMS): Emit useful warning message
+ if --quiet is used for the configure script.
+ * configure: Regenerated.
+
+2003-04-16 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grohtml/post-html.cpp (text_glob::text_glob):
+ Add `const' to second argument.
+ (html_printer::add_table_end): Add `const' to argument.
+ * src/devices/grohtml/html-text.cpp (html_text::issue_tag): Add
+ `const' to arguments.
+ * src/devices/grohtml/html-text.h: Updated.
+
+ * src/devices/grolbp/charset.h (symset): Use `unsigned char'.
+ * src/devices/grolbp/lbp.h (lbpputc): Use `unsigned char' for
+ argument.
+
+ * src/devices/grotty/tty.cpp (tty_printer::make_rgb_string): Use
+ cast for integer constant.
+
+ * src/preproc/html/pre-html.cpp (image_device): Use `const'.
+ (writeNbytes): Add `const' to first argument.
+ (writeString): Add `const' to argument.
+ (char_buffer::can_see): Add `const' to third argument.
+ * src/preproc/html/pushback.cpp (pushBackBuffer::isString): Add
+ `const' to argument.
+ * src/preproc/html/pushback.h: Updated.
+
+ * src/preproc/soelim/soelim.cpp (include_list): Add `const'.
+ (include_path_append): Add `const' to argument.
+ (do_file): Updated.
+
+ * src/roff/troff/uniglyph.cpp (unicode_to_glyph_list): Use `const'
+ for `value'.
+ (unicode_to_glyph_init::unicode_to_glyph_init): Updated.
+ * src/roff/troff/uniuni.cpp (unicode_decompose_list): Use `const'
+ for `value'.
+ (unicode_decompose_init::unicode_decompose_init): Updated.
+ * src/roff/troff/glyphuni.cpp (glyph_to_unicode_list): Use `const'
+ for `value'.
+ (glyph_to_unicode_init::glyph_to_unicode_init): Updated.
+ * src/roff/troff/input.cc (process_startup_file): Add `const' to
+ argument.
+
+ * tmac/hyphenex.sh: Make script more portable by using a here
+ document.
+
+2003-04-15 Werner LEMBERG <wl@gnu.org>
+
+ Renamed all `*.cc' files to `*.cpp'.
+ Updated all configuration files, makefiles, and documentation.
+
+2003-04-14 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/hyphenex.sh: Slight improvements.
+
+2003-04-13 Werner LEMBERG <wl@gnu.org>
+
+ * font/devascii/R.proto, font/devcp1037/R.proto,
+ font/devlatin1/R.proto, font/devutf8/R.proto: Fill up remaining
+ character slots with unnamed glyphs.
+
+ * tmac/an-old.tmac: Fix hyphenation value if `cR' is active.
+ (an-first): New global variable.
+ (an-header): Emit vertical space between multiple man pages.
+
+2003-04-11 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo, man/groff_out.man: \S only accepts integer
+ values.
+
+2003-04-10 Werner LEMBERG <wl@gnu.org>
+
+ * PROBLEMS: Revised.
+
+2003-04-10 Bernd Warken <bwarken@mayn.de>
+
+ * doc/webpage.ms: Improved.
+
+2003-04-09 Werner LEMBERG <wl@gnu.org>
+
+ Add register \n[.height] which returns the value of \H.
+ Add register \n[.slant] which returns the value of \S.
+
+ * src/roff/troff/env.cc (init_env_requests): Implement.
+ * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
+ Document.
+
+2003-04-08 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/html.tmac: Move some of the data into html-end.tmac.
+ Remove most of the character translations for eqn since html fonts
+ now cover those characters.
+ Load www.tmac.
+ * tmac/html-end.tmac: New file.
+ * tmac/troffrc: Load html.tmac not www.tmac for -Thtml.
+ * tmac/troffrc-end: Load html-end.tmac not html.tmac for -Thtml.
+ * tmac/Makefile.sub (NORMALFILES): Add html-end.tmac.
+
+2003-04-07 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_out.man: Document negative values of `N' if -Thtml is
+ used.
+
+2003-04-06 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.comm (depend.temp): Check location of YTABC.
+
+2003-04-05 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * doc/Makefile.in (TROFFBIN): New variable for troff
+ binary path.
+ (GROFFBIN): New variable for groff binary path.
+ (groff_bin_path): Rename to GROFF_BIN_PATH.
+ (TROFF): Use TROFFBIN.
+ (GROFF): Use GROFFBIN and GROFF_BIN_PATH.
+ * doc/Makefile.sub (GROFFBIN): New variable for groff
+ binary path.
+ (groff_bin_path): Rename to GROFF_BIN_PATH.
+ (GROFF): Use GROFFBIN and GROFF_BIN_PATH.
+
+ * Makefile.comm (install_dev): Install scripts from DEVSCRIPTS
+ with INSTALL_SCRIPT.
+ (uninstall_dev): Uninstall scripts from DEVSCRIPTS.
+ * Makefile.dev (all): Depend on DEVSCRIPTS.
+ (install_dev): Likewise.
+ * font/devdvi/Makefile.sub (DEVSCRIPTS): New variable to hold
+ scripts.
+ * font/devps/Makefile.sub (DEVSCRIPTS): Likewise.
+ (DEVGENSCRIPTS): New variable to hold generated scripts.
+
+2003-04-05 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libdriver/input.cc (IntArray::operator[],
+ IntArray::get_data): Remove meaningless `const' in return value.
+
+ * README.CVS: New file.
+
+2003-04-04 Werner LEMBERG <wl@gnu.org>
+
+ Check for stdint.h in C++, not in C.
+
+ * aclocal.m4 (GROFF_STDINT_H): New function,
+ * configure.ac: Check for stdint.h with GROFF_STDINT_H instead of
+ AC_CHECK_HEADERS.
+ * configure, src/include/config.hin: Regenerated.
+ * src/libs/libgroff/tmpname.cc: Use HAVE_CC_STDINT_H.
+
+
+ Fix handling of &nbsp; in grohtml. To do this, troff emits `N'
+ with a negative value, representing the width of the unbreakable
+ space (only for -Thtml). grohtml then converts this back to
+ &nbsp; and uses the value of N as its width.
+
+ * src/roff/troff/node.cc (space_char_hmotion_node::tprint,
+ unbreakable_space_node::tprint): Emit `N-<width>'.
+ * src/include/printer.h (printer::set_numbered_char): Make it
+ virtual.
+ Make members `font_table' and `nfonts' protected instead of private.
+ * src/devices/grohtml/post-html.cc
+ (html_printer::set_numbered_char): New member function.
+
+
+ * src/libs/libgroff/maxfilename.cc:
+ s/HAVE_LIMITS_H/HAVE_CC_LIMITS_H/.
+
+ * src/roff/troff/node.cc (unbreakable_space_node::tprint): Don't
+ emit word marker.
+
+2003-04-03 Sergey A. Osokin <osa@freebsd.org.ru>
+
+ * man/roff.man: Small fixes.
+
+2003-04-03 Werner LEMBERG <wl@gnu.org>
+
+ Make groff independent from locale's numeric settings.
+
+ * configure.ac: Check for `setlocale'.
+ * configure, src/include/config.hin: Regenerated.
+
+ * src/include/lib.h: Handle HAVE_SETLOCALE.
+
+ * src/devices/grodvi/dvi.cc (main), src/devices/grolj4/lj4.cc
+ (main), src/devices/grops/ps.cc (main), src/preproc/grn/main.cc
+ (main), src/preproc/pic/main.cc (main): Call `setlocale'.
+
+
+ * doc/groff.texinfo: Change dir category to `Typesetting'.
+ (Man font macros): Mention that there is no space between arguments
+ of .BI and friends.
+
+ * src/libs/libdriver/printer.cc, src/devices/grotty/tty.cc
+ (*printer::change_color, *printer::change_fill_color): Add missing
+ `const'.
+
+2003-04-02 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grohtml/html-table.cc (html_table::emit_col,
+ html_table::is_gap): Compute table widths after converting border
+ positions to avoid rounding errors.
+
+2003-04-01 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grohtml/html-text.cc (html_text::do_space): Handle
+ `space_emitted' properly.
+
+2003-03-31 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grohtml/html-table.cc: Fix column width calculation.
+ (html_table::set_linelength): Don't add 1.
+ (html_table::add_indent): Don't subtract 1.
+
+ * tmac/html.tmac: Set default page offset to zero.
+
+2003-03-30 Werner LEMBERG <wl@gnu.org>
+
+ Make groff emit `&nbsp;' for `\ ' and `\~' if `-Thtml' is used.
+
+ * src/roff/troff/node.cc (space_char_hmotion_node::tprint,
+ unbreakable_space_node::tprint): New functions.
+ (troff_output_file): Make space_char_hmotion_mode::tprint and
+ unbreakable_space_node::tprint to friends.
+ * src/roff/troff/node.h: Updated.
+
+ * font/devhtml/R.proto: Add `&nbsp' at position 0xA0 (as defined
+ in the HTML standard).
+
+2003-03-29 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/env.cc (point_size): Fix emission of html tag.
+ Otherwise, the following code
+
+ .di xxx
+ .ps 10
+ a
+ .br
+ .di
+ x\*[xxx]
+
+ produces `x a' instead of `xa'. This is a temporary fix, disabling
+ font changes in diversions for -Thtml.
+
+ * tmac/an-old.tmac (TH, SH): Use `HTML-TAG-NS' instead of
+ `HTML-TAG'.
+ (an-do-tag-html): Merge with ...
+ (an-do-tag): This macro.
+ Change code slightly to circumvent grohtml bug.
+ * tmac/troffrc-end: Define dummy for HTML-TAG-NS.
+
+ * src/devices/grohtml/html-table.cc (html_table::emit_col,
+ html_table::is_gap): Round `width' properly.
+
+ * tmac/html.tmac: Provide some default layout parameters for
+ grohtml.
+
+ * font/devhtml/DESC.proto: Don't use discrete values for `sizes'
+ command.
+
+2003-03-28 Werner LEMBERG <wl@gnu.org>
+
+ src/devices/grops/ps.cc (ps_printer::do_import): Fix error message.
+
+2003-03-27 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac (BT): Don't call .tl if register `ps4html' is
+ defined.
+
+2003-03-20 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/env.cc (vertical_spacing): Allow zero value for
+ `.vs'.
+ * doc/groff.texinfo: Updated.
+
+2003-03-19 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cc (process_input_stack) <TOKEN_BEGIN_TRAP,
+ TOKEN_END_TRAP>: Reset `have_input'.
+
+2003-03-18 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/groff/groff.man: Mention groff_trace man page.
+
+2003-03-16 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.in (LIBEXT): New variable to indicate the file extension
+ of library files. Computed heuristically from $(OBJEXT).
+ (MDEFINES): Add $(LIBEXT).
+ * Makefile.lib, Makefile.comm: Use it.
+
+ * src/utils/pfbtops/pfbtops.c (get_text): New function. Split
+ overlong lines into smaller chunks.
+ (get_binary): New function.
+ (main): Use them.
+ * src/utils/pfbtops/pfbtops.man: Updated.
+
+2003-03-15 Colin Watson <cjwatson@debian.org>
+
+ * src/roff/groff/groff.man: Minor syntax fix.
+
+2003-03-14 Egil Kvaleberg <egil@kvaleberg.no>
+
+ * src/devices/grops/ps.cc (ps_printer::media_set,
+ ps_printer::~ps_printer): Handle zero paper width and length.
+
+2003-03-13 Werner LEMBERG <wl@gnu.org>
+
+ Add options -p and -l to grodvi.
+
+ * src/devices/grodvi/dvi.cc: Include paper.h.
+ (landscape_flag, user_paper_length, user_paper_width): New global
+ variables.
+ (dvi_printer::begin_page): Emit `papersize' special.
+ Set color after initialization of `cur_h' and `cur_v'.
+ (main): Add options `-l' and `-p'.
+ * font/devdvi/Makefile.sub (DESC): Set `papersize'.
+ * src/devices/grodvi/grodvi.man, NEWS: Updated.
+
+ * src/devices/grops/psrm.cc (valid_input_table): Fixed.
+
+2003-03-12 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grops/grops.man: Move documentation of .PSPIC to...
+ * man/groff_tmac.man: This man page.
+ * man/groff_font.man: Declare `paperwidth' and `paperlength' as
+ deprecated.
+
+ * tmac/X.tmac: Don't load pspic.tmac.
+
+2003-03-11 Werner LEMBERG <wl@gnu.org>
+
+ Make variable `pr' local to libdriver/input.cc. Based on a patch
+ by Bernd Warken <bwarken@mayn.de>.
+
+ * src/include/driver.h (pr): Removed.
+
+ * src/libs/libdriver/input.cc (pr): New global variable.
+ (do_file): Deallocate `pr'.
+ * src/libs/libdriver/printer.cc (pr): Removed.
+
+ * src/devices/grodvi/dvi.cc (main), src/devices/grohtml/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): Don't delete `pr'.
+
+2003-03-10 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/a4.tmac, tmac/composite.tmac: Use `.do'.
+ * tmac/papersize.tmac: New file.
+ * tmac/troffrc: Include `papersize.tmac'.
+ * tmac/Makefile.sub (NORMALFILES): Add `papersize.tmac'.
+ * tmac/an-old.tmac: Set LT to LL by default.
+
+ * NEWS, MANIFEST, tmac/groff_man.man, man/groff_tmac.man,
+ doc/groff.texinfo: Updated.
+
+ * src/libs/libgroff/paper.cc (add_iso_paper): Fix very embarassing
+ bug which caused all odd iso papers to have wrong dimensions.
+
+ * src/devices/grops/ps.cc (user_paper_width): New global variable.
+ (main) <'p'>: Set `user_paper_width' also.
+ (ps_printer::media_width, ps_printer::media_height): Use values
+ given with option `-p'.
+
+2003-03-09 Werner LEMBERG <wl@gnu.org>
+
+ * src/include/nonposix.h: Provide default for SET_BINARY.
+
+ * src/devices/grodvi/dvi.cc, src/devices/grolbp/lbp.cc,
+ src/devices/grolj4/lj4.cc, src/devices/grops/ps.cc: Call SET_BINARY
+ unconditionally.
+
+ * src/utils/pfbtops/pfbtops.c: Call SET_BINARY unconditionally.
+ (main): Treat \r\n as \n.
+
+2003-03-08 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac: Use register `HY' to control hyphenation.
+ * NEWS, tmac/groff_man.man, doc/groff.texinfo: Document it.
+
+2003-03-07 Werner LEMBERG <wl@gnu.org>
+
+ Added support to access more than 256 glyphs in Type 1 fonts.
+
+ * src/devices/grops/ps.cc (subencoding): New structure.
+ (style): Add `sub' field.
+ Updated all users.
+ (ps_printer): Add `subencodings' and `next_subencoding_index' fields.
+ Add `set_subencoding', `get_subfont' and `encode_subfont' member
+ functions.
+ Updated all users.
+ (ps_printer::set_char): Use `set_subencoding'.
+ (make_subencoding_name): New function.
+ (ps_printer::set_style): Handle case where `sty.sub' is not zero.
+ (ps_printer::~ps_printer): Emit subencoding definitions.
+
+ * src/devices/grops/psrm.cc (valid_input_table): New array to
+ properly support EBCDIC.
+ (white_space): Add `\f'.
+ (ps_get_line): Change first argument to be of type `string &'.
+ Updated all callers.
+ This allows to get lines of arbitrary length.
+ Use `valid_input_table'.
+ Remove warning about non-conforming PS line length. This seems
+ not to be of great importance -- for example, dvips don't emit
+ a warning either.
+ (PS_LINE_MAX): Removed.
+ (matches_comment): Change first argument to be of type `string &'.
+
+ * src/devices/grops/grops.man, src/devices/grops/TODO: Updated.
+
+ * src/utils/afmtodit/afmtodit.pl (%unicode_decomposed,
+ %AGL_to_unicode, %default_ligatures): New hash tables.
+ Read all map entries.
+ Add unencoded characters.
+ Check for default ligatures if there are no `L' entries.
+ Print all kern entries.
+ Print all characters in charset.
+ * src/utils/afmtodit/afmtodit.man: Updated.
+
+ * font/devps/*: Regerated all fonts.
+
+ * tmac/latin[129].tmac, tmac/cp1047.tmac: Don't test for existence
+ of characters, just use `.trin'. Otherwise the mapping depends
+ on the font encoding.
+ * tmac/ps.tmac: Add `fi' and `fl'.
+ Improve `Fi' and `Fl'.
+ * tmac/X.tmac, tmac/lbp.tmac, tmac/tty.tmac: Improve `Fi' and `Fl'.
+ * tmac/Xps.tmac: Fix `em'.
+
+ * NEWS: Updated.
+
+2003-03-04 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cc (charinfo_to_node_list): Reset
+ `have_input'.
+
+2003-03-03 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.sub (DISTCLEANFILES): Add gxditview._man.
+
+ * font/devps/generate/textmap: Remove entry `similarequal'.
+ * font/devps/symbolmap: Updated.
+
+2003-03-02 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/font.cc (font::load): Fix error message for
+ bad character type.
+
+ * src/devices/grops/grops.man: Improve documentation of the -b
+ flag.
+
+ * tmac/tty.tmac: Load latin1.tmac for all TTY devices except
+ `ascii' and `cp1047'.
+
+2003-03-01 Werner LEMBERG <wl@gnu.org>
+
+ Document composite glyphs and the `composite' request.
+
+ * man/groff.man, man/groff_diff.man, doc/groff.texinfo: Do it.
+
+2003-02-28 Werner LEMBERG <wl@gnu.org>
+
+ * font/devdvi/generate/ec.map: Add some more Unicode entities.
+ * font/devdvi/*EC: Updated.
+
+ * tmac/composite.tmac, tmac/latin2.tmac, tmac/latin9.tmac: New files.
+ * tmac/latin1 (latin1-tr): Undo any previous mapping.
+ * tmac/troffrc: Load `composite.tmac'.
+ * tmac/Makefile.sub (NORMALFILES): Updated.
+
+ * doc/groff.texinfo (Input Encodings): New section.
+ * NEWS: Updated.
+
+2003-02-27 Werner LEMBERG <wl@gnu.org>
+
+ * doc/texinfo.tex: New version 2003-02-11.06.
+
+ * tmac/doc-common (Dt): Don't emit warning for unknown section.
+ * tmac/groff_mdoc.man: Fix description of `Dt'.
+
+2003-02-26 Egil Kvaleberg <egil@kvaleberg.no>
+
+ * font/devps/prologue.ps: Fix for included Postscript that does
+ a setpagedevice -- which is now safely ignored.
+
+ * NEWS: Updated.
+
+ * src/devices/grops/ps.cc: Now sets the page size in the generated
+ document. This is done in two ways: Via a %%-comment for gv and
+ the like, and via a PageSize and setpagedevice for programs that
+ understands Postscript proper, like ps2pdf.
+
+ * src/devices/grops/ps.h: New broken-flag to avoid page size
+ definition, if required.
+
+ * src/devices/grops/grops.man: New broken-flag 16 mentioned.
+
+ * doc/Makefile.in: Added -nosetpage flag (via @pnmtops_nosetpage@).
+ Not really necessary due to the fix in prologue.ps, but cleaner:
+ Such information does not belong in an .eps file.
+
+ * doc/Makefile.sub: See doc/Makefile.in.
+
+2003-02-26 Ralph Corderoy <ralph@inputplus.co.uk>
+
+ * aclocal.m4 (GROFF_PNMTOPS_NOSETPAGE): Use P2 format for testing
+ instead of P1 since the latter is broken in some versions of netpbm.
+ * configure: Updated.
+
+2003-02-26 Larry Kollar <kollar@alltel.net>
+
+ Make man pages more customizable.
+
+ * tmac/an-old.tmac (FT): New register holding footer distance from
+ bottom.
+ (HF): New string holding the default heading font.
+ (TH): Handle registers `IN' and `SN' set on the command line.
+ Use `FT'.
+ (PT, BT): New strings to customize header and footer lines.
+ (an-header, an-footer): Use them.
+ (SH, SS): Use `HF'.
+ * tmac/groff_man.man: Document changes.
+
+ * doc/groff.texinfo: Document man changes.
+ Document Ultrix extensions of man.
+
+2003-02-26 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cc (do_width, do_if_request): Reset
+ `have_input' after changing back to old environment.
+
+ * src/devices/grolbp/lbp.cc (lbp_printer::set_line_thickness): Move
+ function up to be defined before first call. This is necessary to
+ avoid a compilation problem with Sun's WorkShop 6 C++ compiler.
+
+ * src/utils/afmtodit/afmtodit.pl: Make script search for files in
+ the default font directory also. Based on a patch from James
+ J. Ramsey <jjramsey_6x9eq42@yahoo.com>.
+ * src/utils/afmtodit/Makefile.sub (afmtodit): Handle @FONTDIR@.
+ * src/utils/afmtodit/afmtodit.man: Document it.
+
+ * NEWS: Updated.
+
+ * tmac/groff_man.man, doc/groff.texinfo: Many minor fixes.
+
+2003-02-25 Gaius Mulley <gaius@glam.ac.uk>
+
+ * aclocal.m4 (GROFF_HTML_PROGRAMS): Add test for pnmtops.
+ (GROFF_PNMTOPS_NOSETPAGE): New macro.
+ * configure.ac: Use it.
+ * configure: Regenerated.
+ * Makefile.in: Updated.
+
+ * tmac/Makefile.sub (NORMALFILES): Remove www.tmac.
+ (CLEANADD): Add www.tmac-sed.
+ (pnmtops_nosetpage): Define default.
+ (install_data): Handle www.tmac-sed and substitute
+ @PNMTOPS_NOSETPAGE@.
+ (stamp-sed): Add www.tmac.
+ * tmac/www.tmac: Rewritten, based on a patch by Bernd Warken.
+ It now breaks URLs at suitable places.
+ (www:substring_ok): New register set by...
+ (www:@test_substring): New macro.
+ (www:error): New alias to www-error.
+ (www:lenstr, www:splitstr, www:url_breaks, www:url_breaks_splitted):
+ New macros.
+ (URL): Use www:url_breaks.
+ (PIMG, MPIMG): Use @PNMTOPS_NOSETPAGE@.
+ (CDS, CDE): New macros.
+
+2003-02-25 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grops/ps.cc (ps_printer::define_encoding): Avoid
+ buffer overflow.
+
+2003-02-24 Werner LEMBERG <wl@gnu.org>
+
+ Contrary to the PCL5 Developer's Guide, the ascenders in TFM files
+ can be negative also.
+
+ * src/utils/hpftodit/hpftodit.cc (char_info): `ascent' must be
+ `int16'.
+ (read_char_table): Avoid negative ascenders.
+ (output_charset): Add cast.
+ * font/devlj4/*: Regenerated.
+
+ Replace unnamed glyphs for DVI fonts with `uXXXX' glyph names where
+ possible.
+
+ * font/devdvi/generate/{tc,texttt,ec,texmi,texsy,textex}.map: Do it.
+ * font/devdvi/generate/textex.map: Map glyph 23 to `u21C6' instead
+ of `<>'.
+ * font/devdvi/*: Regenerated.
+
+ Map `la' and `ra' to U+27E8 and U+27E9. These two characters have
+ normal width, while the previously used characters (U+2329 and
+ U+232A) are classified as wide due to canonical equivalence with the
+ CJK punctuation characters U+3008 and U+3009.
+
+ * font/devutf8/R.proto: Updated.
+ * src/roff/troff/uniglyph.cc, src/roff/troff/glyphuni.cc: Ditto.
+
+ * man/groff_char.man: Simplify handling of table traps by
+ introducing `start block' and `end block' macros.
+ (Ns, Ne, 2s, 2e, Ds, De): New macros.
+ (DL): Make it work with Unix troff also.
+ Fix code values of `la' and `ra'.
+
+ * tmac/dvi.tmac: Define `<>' for CW and CWI.
+
+2003-02-23 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/devices/grohtml/post-html.cc (element_list::~element_list):
+ New destructor, fixing a major memory leak.
+
+2003-02-22 Werner LEMBERG <wl@gnu.org>
+
+ * font/devhtml/R.proto, font/devutf8/R.proto: Flip `*f' and `+f'
+ to be in conformance with Unicode 3.0 and newer.
+
+ * font/devlj4/generate/text.map: Add `Eu'.
+ * font/devlj4/generate/special.map: Flip `*e' and `+e'.
+ * font/devlj4/S: Regenerated.
+
+ * man/groff_char.man: Completely rewritten.
+
+ * doc/groff.texinfo: Fix description of request and macro arguments.
+
+2003-02-20 Gaius Mulley <gaius@glam.ac.uk>
+
+ Valgrind fixes.
+
+ * src/devices/grohtml/html-table.cc (html_table::~html_table):
+ Deallocate `columns' list.
+ * src/devices/grohtml/post-html.cc (char_block::~char_block):
+ New destructor.
+ (text_glob::text_glob_html, text_glob::text_glob_special,
+ text_glob::text_glob_line, text_glob::text_glob_auto_image,
+ text_glob::text_glob_tag): Avoid memory leaks.
+ (text_glob::remember_table): Free memory before reassigning.
+
+2003-02-19 Werner LEMBERG <wl@gnu.org>
+
+ Add glyph `+e', greek lunate epsilon symbol, and `-h' (with the
+ alias `hbar'), the Planck constant over two pi.
+
+ * font/devdvi/generate/texmi.map: Use `*e' for position 15 and
+ `+e' for position 34.
+ * font/devdvi/generate/texsy.map: Replace `DI' and `HE' with
+ `u2662' and `u2661'.
+ * font/devdvi/{MI,S}: Regenerated.
+ * font/devhtml/R.proto, font/devutf8/R.proto: Add `+e', `-h', `hbar'.
+ * font/devlbp/*: Add `hbar' alias.
+ * font/devlj4/generate/special.map: Ditto.
+ * font/devlj4/S: Regenerated.
+ * font/devps/generate/symbolchars: Add `+e'.
+ * font/devps/generate/textmap: Fix PS name for `-h'.
+ Add `hbar' alias.
+ * font/devps/symbolmap: Regenerated.
+
+ * src/devices/grops/ps.cc (transform_fill): Removed since unused.
+
+ * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Add `+e',
+ `-h', `hbar'.
+ * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Add `+e',
+ `-h'.
+
+ * tmac/X.tmac, tmac/ps.tmac: Provide definitions for `-h' and
+ `hbar'.
+ * tmac/tty-char.tmac: Add `+e'.
+
+2003-02-17 Werner LEMBERG <wl@gnu.org>
+
+ Another round trying to really fix problems with `have_input'.
+
+ * src/roff/troff/input.cc (input_stack::get): Handle `have_input'.
+ (token::next) <'\n'>, <\'\n'>: Don't handle `have_input'.
+
+ * src/devices/grotty/tty.cc (tty_printer::put_color): Fix color
+ handling if both foreground and background colors are default.
+
+ * doc/groff.texinfo (Debugging): Document .lf differences to
+ AT&T troff.
+
+2003-02-16 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grotty/tty.cc (tty_printer::make_rgb_string): Avoid
+ null-bytes in created string.
+
+ * src/roff/troff/input.cc (lookup_color, interpolate_macro,
+ alias_macro, lookup_request): Improve warning messages.
+
+ * src/roff/troff/node.cc (suppress_node::tprint): Use `strsave',
+ not `strdup'.
+ Free `last_image_filename'.
+
+ * src/preproc/html/pre-html.cc (char_block::char_block): Initialize
+ `buffer'.
+ (imageList::createPage, imageList::createImage): Use `free', not
+ `a_delete'.
+ (imageItem::~imageItem): Free `imageName'.
+ (addRegDef): Use `strsave', not `strdup'.
+ (get_resolution): Free `pathp'.
+
+2003-02-15 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grotty/tty.cc (tty_printer::tty_printer): Fix pointer
+ to `dummy'.
+
+2003-02-14 Werner LEMBERG <wl@gnu.org>
+
+ Add memory management for colors to deallocate unnamed colors
+ properly.
+
+ * src/include/color.h (color): New members `free_list' and `next'.
+ New member functions `new' and `delete'.
+ Add destructor.
+ * src/libs/libgroff/color.cc: Implement it.
+
+ * src/libs/libgroff/font.cc (font::add_kern): Use integer cast
+ for array size of new operator.
+
+ * src/libs/libdriver/input.cc (IntArray::operator[]): Remove
+ redundant comparison.
+
+ * src/roff/troff/input.cc (word_space_node::reread,
+ hmotion_node::reread): Avoid warning about unused parameter.
+ (reset_output_registers): Remove redundant parameter.
+ (define_color): Undo change 2003-02-12.
+
+ * src/roff/troff/reg.h: Updated.
+
+ * src/roff/troff/node.cc (troff_output_file::really_print_line,
+ output_file::put_filename, real_output_file::really_put_filename,
+ ascii_output_file::really_print_line,
+ break_char_node::get_hyphen_list): Avoid warning about unused
+ parameter.
+ (suppress_node::tprint): Updated.
+
+ * configure.ac: Check declaration for rand() and srand().
+ * configure: Regenerated.
+
+ * src/preproc/pic/pic.h: Declare fmod(), rand(), and srand()
+ conditionally.
+ * src/preproc/pic/pic.y: Remove declaration of fmod(), rand(),
+ and srand().
+
+ * src/preproc/eqn/delim.cc (delim_table): Add missing initializers
+ to avoid compiler warnings.
+
+ * src/preproc/grn/hgraph.cc (HGPrintElt): Second parameter is
+ unused.
+
+ * src/devices/grops/ps.cc (ps_printer::set_char): Last parameter
+ is unused.
+ * src/devices/grops/psrm.cc (skip_possible_newline): Remove first
+ (unused) parameter.
+ Updated all callers.
+
+ * src/devices/grotty/tty.cc (tty_printer::set_char): Last parameter
+ is unused.
+ * src/devices/grodvi/dvi.cc (dvi_printer::set_char): Ditto.
+ * src/devices/grolj4/lj4.cc (lj4_printer::set_char): Ditto.
+
+ * src/devices/grohtml/post-html.cc (html_printer::emit_line):
+ Parameter is unused.
+ (html_printer::add_table_end): Define parameter conditionally.
+ * src/devices/grohtml/output.cc (simple_output::special): Parameter
+ is unused.
+
+ * src/devices/grolbp/lbp.cc: Define _GNU_SOURCE conditionally.
+ (lbp_printer::set_char): Last parameter is unused.
+
+ * src/utils/indxbib/indxbib.cc (main): Remove redundant comparison.
+
+2003-02-13 Werner LEMBERG <wl@gnu.org>
+
+ New commands \D'Fr ...', \D'Fc ...', etc. for orthogonality.
+ Make \D'f ...' move horizontally again for backwards compatibility.
+ Replace it with \D'Fg ...' where appropriate to avoid dependency
+ on horizontal resolution.
+
+ * src/roff/troff/input.cc (do_get_long_name): New function.
+ (get_long_name): Call it.
+
+ (read_draw_node): Handle `\D'Fx ...' by calling ...
+ (read_color_draw_node): New function.
+
+ (read_rgb, read_cmy, read_cmyk, read_gray): New optional argument
+ `end'.
+ Pass it to `do_get_long_name' which is used instead of
+ `get_long_name'.
+
+ * src/libs/libdriver/input.cc (color_from_Df_command): Remove
+ unnecessary value guard.
+ (parse_D_command) <'f'>: Add horizontal shift.
+
+ * src/preproc/grn/hgraph.cc (HGPrintElt) <POLYGON>: Use \D'Fg ...'.
+ * src/preproc/pic/troff.cc (troff_output::set_fill): Ditto.
+ (FILL_MAX): Removed.
+
+ * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
+ Updated.
+
+2003-02-12 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cc (do_name_test, do_expr_test,
+ do_zero_width): Push `\n' if closing delimiter is missing.
+
+ (token::next) <ESCAPE_NEWLINE>, <'\n'>, <\'\n'>: Reset `have_input'.
+ <'F'>: Make \F non-transparent at the beginning of line.
+ (process_input_stack) <token::TOKEN_CHAR, token::TOKEN_NEWLINE,
+ token::TOKEN_REQUEST, token::TOKEN_BEGIN_TRAP>: Don't handle
+ `have_input'.
+
+ (define_color): Free color in case of reassignment.
+
+ * doc/groff.texinfo (@Defesc, @DefescList, @DefescItem,
+ @DefescListEnd): Use @Var, not @var.
+ Fix all calls.
+
+ * src/preproc/grn/hgraph.cc (HGPrintElt): Fix typo.
+
+ * src/preproc/pic/object.cc (object_spec::~object_spec): Free
+ `shaded' and `outlined' arrays.
+ (object_spec::object_spec): Initialize `shaded' and `outlined'.
+ (graphic_object::set_fill_color, graphic_object::set_outline_color):
+ Use strsave.
+ (closed_object::set_fill_color): Ditto.
+ * src/preproc/pic/troff.cc (troff_output::set_color): Use strsave
+ instead of strdup.
+ (troff_output::reset_color): Use a_delete instead of free.
+ * src/preproc/pic/main.cc (do_file): Free `out' in case of error.
+
+2003-02-11 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Improve documentation of `ad'.
+ Document that \D'f...' is dependent on the horizontal resolution.
+ * man/groff_diff.man: Improve documentation of \D'f...'.
+
+ * src/preproc/grn/hgraph.cc (HGPrintElt) <POLYGON>: Don't emit
+ compensating \h'...' for \D'f ...' since the latter no longer moves
+ current position.
+ * src/preproc/pic/troff.cc (troff_output::set_fill): Ditto.
+
+2003-02-10 Werner LEMBERG <wl@gnu.org>
+
+ Improve error messages for `x F' (and `F') commands.
+
+ * src/include/error.h: Add declaration for
+ `current_source_filename'.
+ * src/libs/libgroff/filename.cc: Add `current_source_filename'.
+ * src/libs/libgroff/error.cc (do_error_with_file_and_line): Add
+ parameter for source file string.
+ Updated all callers.
+
+ * src/libs/libdriver/input.cc: Add `current_source_filename'.
+ (remember_source_filename): New function.
+ (parse_x_command <'F'>, do_file <'F'>): Use it.
+
+2003-02-09 Werner LEMBERG <wl@gnu.org>
+
+ Make grotty not emit warnings about unknown colors more than
+ necessary.
+
+ * src/devices/grotty/tty.cc: Include `ptable.h'.
+ (TTY_MAX_COLORS): Removed.
+ (DEFAULT_COLOR_IDX): Defined to -1.
+ (glyph): Change `back_color_idx' and `fore_color_idx' to `char'.
+ (tty_printer): Change `curr_back_idx' and `curr_fore_idx' to `char'.
+ Change `tty_colors' to be a ptable.
+ First arg of `put_color' is now `char'.
+ New functions `make_rgb_string' and `tty_color'.
+ (tty_printer::tty_printer): Use `tty_color'.
+ (tty_printer::color_to_idx): Return value is now `char'.
+ Use `tty_color'.
+
+ * src/include/color.h (color): Add `print_color' member function.
+ * src/libs/libgroff/color.cc (color::print_color): Implement it.
+
+2003-02-08 Werner LEMBERG <wl@gnu.org>
+
+ Valgrind fixes.
+
+ * src/devices/grops/ps.cc (ps_printer::define_encoding): Close
+ encoding file.
+
+ * src/include/ptable.h (PTABLE::~PTABLE, PTABLE::define): Always
+ assume that value has been allocated with `new[]', thus use
+ `a_delete' for deallocation.
+
+ * src/libs/libdriver/input.cc (get_integer_arg,
+ get_possibly_int_args, parse_x_command, do_file): Use `a_delete'
+ where appropriate.
+
+ * src/libs/libgroff/new.cc (delete) [!COOKIE_BUG]: Define.
+ * src/libs/libgroff/nametoindex.cc
+ (character_indexer::named_char_index): Use `new <type>[1]'.
+
+ * src/preproc/eqn/lex.cc (init_table, do_definition): Use `new
+ <type>[1]'.
+ * src/preproc/eqn/text.cc (set_special_char_type): Ditto.
+ (split_text): Use `a_delete'.
+
+ * src/preproc/pic/pic.y (define_label, define_variable): Use `new
+ <type>[1]'.
+
+ * src/roff/troff/env.cc (environment::choose_breakpoint): Avoid
+ harmless memory leak.
+ (hyphen_trie::read_patterns_file): Initialize `buf'.
+ * src/roff/troff/node.cc (troff_output_file::troff_output_file):
+ Initialize `current_fill_color'and `current_glyph_color'.
+ * src/roff/troff/glyphuni.cc
+ (glyph_to_unicode_init::glyph_to_unicode_init): Use `new <type>[1]'.
+ * src/roff/troff/uniuni.cc
+ (unicode_decompose_init::unicode_decompose_init): Ditto.
+ * src/roff/troff/uniglyph.cc
+ (unicode_to_glyph_init::unicode_to_glyph_init): Ditto.
+
+2003-01-26 Werner LEMBERG <wl@gnu.org>
+
+ * src/utils/indxbib/indxbib.cc (main) [__EMX__]: Check with
+ `access' before calling `unlink'.
+ (do_file): Handle __EMX__.
+
+ * src/include/nonposix.h: Handle __EMX__.
+
+ * Makefile.in (SEP): New variable; set to @PATH_SEPARATOR@.
+ (fontpath,tmacpath): Use it.
+ (MDEFINES): Add it.
+ Sorted alphabetically.
+
+ * src/preproc/eqn/neqn.sh, src/roff/nroff/nroff.sh: Use
+ @SEP@.
+ * src/preproc/eqn/Makefile.sub, src/roff/nroff/Makefile.sub: Handle
+ @SEP@.
+
+2003-01-27 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/strcasecmp.c, src/libs/libgroff/strncasecmp.c:
+ New files, copied from gnulib.
+ * src/libs/libgroff/Makefile.sub (CSRCS): Add them.
+ * configure.ac: Updated.
+ * configure: Regenerated.
+
+ * src/include/config.hin: Regenerated.
+ * src/include/lib.h [!HAVE_STRCASECMP]: Declare `strcasecmp'.
+ Don't define `strcasecmp' as `strcmp'.
+ [!HAVE_STRNCASECMP]: Declare `strncasecmp'.
+ Dont define `strncasecmp' as `strncmp'.
+
+ * src/roff/groff/pipeline.c [!HAVE_STRCASECMP, !HAVE_STRNCASECMP]:
+ Removed.
+
+2003-01-26 Werner LEMBERG <wl@gnu.org>
+
+ * src/utils/indxbib/indxbib.cc (main) [__EMX__]: Fix typo:
+ s/unline/unlink/.
+
+2003-01-25 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo (Ligatures and Kerning): Mention limitations.
+
+2003-01-24 Werner LEMBERG <wl@gnu.org>
+
+ Add US-english hyphenation exceptions (converted from Barbara
+ Beeton's hyphenation exception log reports which appear irregularly
+ in TUGBoat).
+
+ * tmac/hyphen.us: Updated to latest version.
+ * tmac/README: Updated.
+ * tmac/hyphenex.us, tmac/hyphenex.sh: New files.
+ * tmac/troffrc: Load `hyphenex.us'.
+ * tmac/Makefile.sub (NORMALFILES): Add `hyphenex.us'.
+ * doc/groff.texinfo: Updated.
+
+2003-01-23 Werner LEMBERG <wl@gnu.org>
+
+ Improve hyphenation slightly. This is a first step in redesigning
+ the hyphenation algorithm to make it more flexible (e.g. allowing
+ kerns and ligatures between the hyphenation character and the
+ following character -- while not used normally in English, other
+ languages like German would benefit).
+
+ * src/roff/troff/env.cc (environment::hyphenate_line): Use
+ assertion instead of if-clause.
+ Let `get_hyphen_list' return the number of involved characters in
+ the hyphenation pattern instead of computing it directly (which
+ often yields too small values).
+ * src/roff/troff/node.h (*::get_hyphen_list): Add second parameter.
+ * src/roff/troff/node.cc (*::get_hyphen_list): Handle new second
+ parameter.
+
+2003-01-22 Werner LEMBERG <wl@gnu.org>
+
+ Fixing a bug which caused groff to hang if the hyphenation exception
+ dictionary tried to grow.
+
+ * src/roff/troff/env.cc (hyphen_trie::insert_hyphenation,
+ hyphen_trie::read_patterns_file, do_hyphenation_patterns_file): Use
+ pointer to dictionary.
+
+2003-01-20 Werner LEMBERG <wl@gnu.org>
+
+ * src/utils/afmtodit/afmtodit.pl: Add switch `-m' to suppress
+ negative left italic correction.
+ * src/utils/afmtodit/afmtodit.man: Document it.
+
+ * font/devps/generate/Makefile (RFLAG): Add `-m'.
+ * font/devps/{AB,AR,BMB,BMR,CB,CR,EURO,HB,HR,HNB,HNR,NB,NR,PB,PR,
+ S,TB,TR,ZD,ZDR}: Regenerated with afmtodit options `-i 0 -m'.
+
+ * NEWS: Updated.
+
+2003-01-16 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS: Updated.
+
+2003-01-16 Jrgen Grahn <jgrahn@algonet.se>
+
+ * src/preproc/refer/refer.man: Mention REFER environment variable.
+
+2003-01-05 Werner LEMBERG <wl@gnu.org>
+
+ Similar to \[is], the square root glyph (\[sr]) and the square root
+ extension glyph (\[radicalex]) are now text symbols. The new
+ mathematical versions are called \[sqrt] and \[sqrtex],
+ respectively.
+
+ * font/devX*/S: Regenerated.
+ * font/devdvi/generate/texex.map: Rename `sr[0123]' to `sqrt[0123]'.
+ * font/devdvi/generate/texsy.map: Rename `sr' to `sqrt'.
+ * font/devdvi/EX, font/devdvi/S: Regenerated.
+ * font/devhtml/R.proto, font/devutf8/R.proto: Add `sqrt'.
+ * font/devlj4/generate/special.map: Add `sqrt'.
+ * font/devlj4/S: Regenerated.
+ * font/devps/generate/textmap: Add `sqrt'.
+ * font/devps/S, font/devps/symbolmap: Regenerated.
+
+ * src/preproc/eqn/sqrt.cc (SQRT_CHAR, RADICAL_EXTENSION_CHAR,
+ SQRT_CHAIN, BAR_CHAIN): Use `sqrt*' and `sqrtex*'.
+ * src/roff/troff/input.cc (init_charset_table): Make `sqrtex'
+ overlap horizontally.
+
+ * tmac/X.tmac, tmac/ps.tmac, tmac/lj4.tmac: Add `sqrtex'.
+ * tmac/dvi.tmac: Add `sr', and `sqrtex'.
+ Fix `radicalex'.
+
+ * doc/groff.texinfo, man/groff_diff.man: Document that `radicalex'
+ and `sqrtex' are overlapping glyphs.
+
+2003-01-04 Werner LEMBERG <wl@gnu.org>
+
+ * font/devdvi/generate/texsy.map: Add `is'.
+ * font/devps/symbolmap: Regenerated.
+ * font/devdvi/*TC, MI, S: Regenerated.
+
+ * tmac/dvi.tmac: Remove `is'.
+
+2003-01-03 Werner LEMBERG <wl@gnu.org>
+
+ `is' is now a text symbol (only relevant for dvi). The math variant
+ can be accessed with `integral'.
+
+ * font/devX*/S: Regenerated.
+ * font/devdvi/generate/texex.map: Remove `is'.
+ * font/devdvi/EX: Updated.
+ * font/devhtml/R.proto, font/devutf8/R.proto: Add `integral'.
+ * font/devlj4/generate/special.map: Ditto.
+ * font/devlj4/S: Regenerated.
+ * font/devps/generate/textmap: Add `integral'.
+ * font/devps/S: Regenerated.
+
+ * tmac/dvi.tmac: Define `is'.
+
+ * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Add `integral'.
+
+ * src/preproc/tbl/main.cc (process_format): Fix error message.
+
+2003-01-02 Werner LEMBERG <wl@gnu.org>
+
+ * font/devhtml/R.proto, font/devutf8/R.proto: Add `ne' and `nc'.
+ * font/devps/textmap: Fix entries for `ne' and `nc'.
+ * font/devps/symbolmap: Regenerated.
+
+ * src/roff/troff/glyphuni.cc (glyph_to_unicode_list),
+ src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Add `18',
+ `38', `58', `78', `-+', `|=', `nc', `ne'.
+
+ * tmac/dvi.tmac: Add `nm', `ne', `nc'.
+ Use `schar' for `aq'.
+ * tmac/ps.tmac, tmac/X.tmac: Add `nc' and `ne'.
+ * tmac/ec.tmac: Add `SC' to special fonts for `CW' and `CWI'.
+ * tmac/tty.tmac: Add `ne'.
+
+ * src/roff/troff/node.cc (make_glyph_node): Test with `get_macro'
+ for fallback glyphs.
+
+2002-12-29 Werner LEMBERG <wl@gnu.org>
+
+ Add glyph `|='.
+
+ * font/devX*/*: Regenerated.
+ * font/devdvi/generate/ec.map: Remove `eq'.
+ * font/devdvi/generate/texsy.map: Make `~=' the same as `~~'.
+ Assign `|=' to position 39.
+ * font/devdvi/*EC, S: Regenerated.
+ * font/devhtml/R.proto, font/devutf8/R.proto: Add `|='.
+ * font/devlj4/generate/special.map: Make `~=' the same as `~~'.
+ Assign `|=' to position 549.
+ * font/devps/generate/textmap, font/devps/enerate/symbolmap: Remove
+ `equalmath'.
+ Add `uni2243' for `|='.
+
+ * tmac/ec.tmac: Add `eq'.
+ * tmac/dvi.tmac: Add `=~'.
+ * tmac/tty-char.tmac, tmac/ps.tmac, tmac/X.tmac, tmac/lbp.tmac: Add
+ `|='.
+
+2002-12-21 Werner LEMBERG <wl@gnu.org>
+
+ * font/devdvi/generate/tc.map: Remove `**'.
+ * font/devdvi/*TC: Regenerated.
+ * font/devhtml/R.proto, font/devutf8/R.proto: Add `18', `38', `58',
+ `78', `<<', `>>'.
+ * font/devutf8/NOTES: Updated.
+
+ * src/roff/troff/charinfo.h (charinfo): Add `setx_macro' function.
+ Don't give default parameter to `set_macro'.
+ * src/roff/troff/input.cc (do_define_character): Use `setx_macro'
+ instead of `set_macro'.
+ (charinfo::setx_macro): Implement it.
+ (charinfo::set_macro): Don't change `mode'.
+
+ * tmac/tty.tmac: Add `18', `38', `58', `78', `<<', `>>'.
+ * tmac/ps.tmac, tmac/X.tmac: Add `<<', `>>'.
+ * tmac/dvi.tmac: Define `!=' with `.schar'.
+
+2002-12-20 Werner LEMBERG <wl@gnu.org>
+
+ * font/devX*/S: Regenerated.
+ * font/devdvi/generate/ec.map: Remove `pl'.
+ * font/devdvi/generate/tc.map: Remove `mi', `14', `12', `34'.
+ * font/devdvi/*{TC,EC}: Regenerated.
+ * font/devhtml/R.proto: Add `-+'.
+ Remove double entries for `rk', `lk', `lt', `rt', `rb', `lb'.
+ * font/devlbp/*: Remove `or'.
+ * font/devlj4/generate/special.map: Remove `or'.
+ * font/devlj4/S: Regenerated.
+ * font/devps/generate/textmap: Add `fiveeighths', `oneeighth',
+ `seveneighths', `threeeighths'.
+ Remove `plusmath'.
+ Replace `minusplus' with `uni2213'.
+ * font/devps/symbolmap: Regenerated.
+ * font/devutf8/R.proto: Replace `shc' with unnamed glyph.
+ Add `-+'.
+
+ * src/roff/troff/charinfo.h (charinfo): Add `is_normal' inline
+ function.
+ * src/roff/troff/node.cc (troff_output_file::put_char_width):
+ Call glyph_color and fill_color even if tcommand_flag isn't set.
+ (make_node, node::add_char): Check not ci->is_fallback but
+ ci->is_normal.
+
+ * tmac/lj4.tmac, tmac/lbp.tmac: Define `or'.
+ * tmac/ec.tmac: Add .rchar entry for `f/'.
+ Don't remove `12', `14', `34'.
+ Define `pl' to be always roman.
+ * tmac/ps.tmac (ps-frac, ps-frac-mono): New macros.
+ Define `18', `38', `58', `78'.
+ * tmac/tty.tmac: Add `-+'.
+ * tmac/dvi.tmac: Define `f/'.
+ (dvi-frac): Use `f/'.
+ * tmac/X.tmac (X-frac, X-frac-mono): New macros.
+ Define `18', `38', `58', `78'.
+
+2002-12-15 Colin Watson <cjwatson@debian.org>
+
+ * contrib/pic2graph/pic2graph.sh: Add missing `;;'.
+
+2002-12-10 Werner LEMBERG <wl@gnu.org>
+
+ Add glyph `tno', a textual variant of `no'.
+
+ * font/devX*/*: Regenerated.
+ * font/{devcp1047,devlatin1,devutf8,devhtml}/R.proto: Add `tno'.
+ * font/devdvi/generate/{tc.map: Replace `no' with `tno'.
+ * font/devdvi/generated/{texsy,textex}.map: Add `tno'.
+ * font/devdvi/*: Regenerated.
+ * font/devlbp/*: Add `tno'.
+ * font/devlj4/generate/tex.map: Replace `no' with `tno'.
+ * font/devlj4/*: Regenerated.
+ * font/devps/generate/textmap: Replace `no' with `tno'.
+ * font/devps/generate/symbolchars: Add `no'.
+ * font/devps/*: Regenerated.
+
+ * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Add `tno'.
+
+ * tmac/cp1047.tmac, tmac/latin1.tmac: Replace `no' with `tno'.
+ * tmac/tty-char.tmac: Add entry for `tno' and `3d'.
+
+ * NEWS: Updated.
+
+ * tmac/dvi.tmac: Replace most `\\' with `\E'.
+ Add definition for `sd'.
+ * tmac/X.tmac, tmac/ps.tmac: Replace most `\\' with `\E'.
+
+ * tmac/eqnrc <dvi>: Use `integral' instead of `is' glyph.
+
+2002-12-08 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac (TH): Use integer value for `IN' if in nroff
+ mode to avoid rounding errors.
+ (an-do-tag, an-do-tag-html, RS, RE): Remove redundant `.br'.
+
+ * src/roff/groff/groff.man, src/roff/nroff/nroff.man,
+ src/roff/troff/troff.man: Improve documentation of -T.
+
+2002-12-07 Jeff Conrad <jeff_conrad@msn.com>
+
+ * src/roff/groff/pipeline.c: Don't define `const' for _WIN32.
+ (run_pipeline) [_WIN32]: Provide working function without `fork'.
+
+2002-12-06 Werner LEMBERG <wl@gnu.org>
+
+ * font/devps/generate/freeeuro.sfd: Make dimensions of Euro.symbol
+ glyphs compatible to Adobe's Euro fonts (scaling them down a bit).
+ Scaling Euro.sansserif glyphs down to have the same height as
+ digits.
+ Removed unnecessary points; added some extrema.
+
+ * font/devps/EURO, font/devps/freeeuro.afm, font/devps/freeeuro.pfa:
+ Regenerated.
+
+2002-12-04 Werner LEMBERG <wl@gnu.org>
+
+ * font/devps/generate/freeeuro.sfd: Add glyphs `Euro.symbol.slanted'
+ and `Euro.symbol.bold.slanted'.
+ Improve some glyph offsets and widths.
+ * font/devps/EURO, font/devps/freeeuro.afm, font/devps/freeeuro.pfa:
+ Regenerated.
+ * font/devps/generate/Makefile (freeeuro.afm freeeuro.pfa): Fix
+ typo.
+ * font/devps/generate/sfdtopfa.pe: Generate PFA in current
+ direcory.
+
+ * tmac/europs.tmac: Updated to new glyph indices.
+ Use Euro.symbol for font familiy `A'.
+
+ * doc/groff.texinfo: Minor improvements.
+
+2002-12-02 Werner LEMBERG <wl@gnu.org>
+
+ * font/devdvi/generate.tc.map: s/%O/%0/.
+ * font/devdvi/*TC: Regenerated.
+
+ * src/roff/troff/div.cc (init_div_requests): Sorted.
+
+ * tmac/dvi.tmac: Remove `Ye'.
+ * tmac/ec.tmac: Remove `Ye'.
+ Add .rchar entry for `de'.
+
+ * man/groff.man, man/groff_diff.man: Document register `.pe'.
+ * doc/groff.texinfo: Document registers `.pe', `.n', and `.w'.
+ * NEWS: Updated.
+
+2002-11-30 Werner LEMBERG <wl@gnu.org>
+
+ Add PS font for various Euro glyphs.
+
+ * font/devps/generate/freeeuro.sfd: New master font file for
+ pfaedit.
+ * font/devps/generate/sfdtopfa.pe: New conversion script for
+ pfaedit.
+ * font/devps/generate/Makefile (FONTS): Add `EURO'.
+ (EURO, freeeuro.afm, freeeuro.pfa): New rules.
+ * font/devps/freeeuro.pfa, font/devps/freeeuro.afm: Generated from
+ `freeeuro.sfd'.
+ * font/devps/EURO: Generated from `freeeuro.afm'.
+ * font/devps/download: Add `freeuro.pfa'.
+ * font/devps/Makefile.sub (NORMALFILES): Adde `EURO' and
+ `freeeuro.pfa'.
+
+ * tmac/europs.tmac: New file.
+ * tmac/ps.tmac: Include `europs.tmac'.
+ * tmac/Makefile.sub (DISTFILES): Add `europs.tmac'.
+
+2002-11-29 Werner LEMBERG <wl@gnu.org>
+
+ * font/devdvi/generate/texsy.map: Remove `lh' and `rh'.
+ * font/devdvi/S: Regenerated.
+ * font/devhtml/R.proto: Fix `CR' and `ci'.
+ Add `OK'.
+ * font/devps/generate/textmap: Fix `lh', `rh', and `sq'.
+ Remove `bs'.
+ * font/devps/symbolmap: Regenerated.
+ * font/devutf8/R.proto: Fix `CR' and `ci'.
+ Add `OK'.
+ * font/devutf8/NOTES: Updated.
+
+ * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Fix `CR' and
+ `ci'.
+ Add `OK'.
+ * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Ditto.
+
+ * tmac/dvi.tmac: Add `lh' and `rh'.
+ * tmac/Xps.tmac: Fix `lh' and `rh'.
+ * tmac/X.tmac: Add `OK'.
+ * tmac/lj4.tmac: Ditto.
+
+2002-11-24 Werner LEMBERG <wl@gnu.org>
+
+ * font/devX*/S: Regenerated.
+ * font/devascii/R.proto, font/devcp1047/R.proto: Remove glyphs `lb',
+ `lc', `lf', `lk', `lt', `rb', `rc', `rf', `rk', and `rt'.
+ * font/devdvi/generate/texsy.map: Remove `or' glyph.
+ * font/devdvi/S: Regenerated.
+ * font/devhtml/R.proto, font/devutf8/R.proto: Add/fix glyphs
+ `parenlefttp', `parenleftex', `parenleftbt', `parenrighttp',
+ `parenrightex', `parenrightbt', `bracketlefttp', `bracketleftex',
+ `bracketleftbt', `bracketrighttp', `bracketrightex',
+ `bracketrightbt', `bracelefttp', `braceleftmid', `braceleftbt',
+ `braceex', `braceleftex', `bracerightex', `bracerighttp',
+ `bracerightmid', `bracerightbt', `lt', `lk', `lb', `rt', `rk',
+ `rb', and `bv'.
+ * src/roff/troff/glyphuni.cc, src/roff/troff/uniglyph.cc: Ditto.
+ * font/devutf8/NOTES: Updated.
+ * font/devlj4/generate/special.map: Add glyph `braceex'.
+ * font/devlj4/S: Regenerated.
+
+ * tmac/tty-char.tmac: Add glyphs `lf', `rf', `lc', and `rc'.
+
+2002-11-14 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Add `va'
+ and `vA'.
+ Fix code for `an'.
+ * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Ditto.
+
+ * doc/texinfo.tex: New version from texinfo 4.3.
+ * doc/groff.texinfo: Updated for texinfo 4.3.
+ Use @tie{} where appropriate.
+ * font/devdvi/generate/ec.map: Don't include `or' and `bv'.
+ * font/devdvi/generate/tc.map: Remove `rn'.
+ * font/devdvi/*TC, font/devdvi/*EC: Regenerated.
+ * font/devhtml/R.proto, font/devutf8/R.proto: Add `vA'.
+ Fix code for `an'.
+ * font/devX100/*, font/devX100-12/*, font/devX75/*,
+ font/devX75-12/*: Regenerated.
+
+ * tmac/dvi.tmac: Add special fonts `SA' and `SB'.
+ Use .char (again) for `br', `ul', `rn', `or', and `ru'.
+ Improve definition of `an'.
+ * tmac/ps.tmac: Use .char (again) for `br', `ul', `rn', `or', and
+ `ru'.
+ * tmac/lj4.tmac: Use .char (again) for `br', `ul', `rn', and `ru'.
+ * tmac/X.tmac: Add definition for `or'.
+ * tmac/Xps.tmac: Undo change 2002-11-05.
+ * tmac/lbp.tmac: Add definitions for `br', `rn', `ul', and `ru'.
+
+2002-11-11 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/node.cc (troff_output_file::put_char): Always
+ call flush_tbuf.
+
+2002-11-10 Werner LEMBERG <wl@gnu.org>
+
+ Added three new requests `schar', `fschar', and `rfschar'. `schar'
+ defines a glyph which is searched after the check for fonts declared
+ with `.special' (and before the check for all mounted special
+ fonts). `fschar' defines a glyph for a particular font which is
+ searched after the check for fonts declared with `.fspecial' (and
+ before the check for fonts declared with `.special'). `rfschar'
+ removes glyphs defined with `fschar'.
+
+ * src/roff/troff/token.h (char_mode): New enum.
+ Declare do_define_character.
+ * src/roff/troff/charinfo.h (charinfo): Replace `fallback' with
+ `mode'.
+ (charinfo::is_fallback): Updated.
+ (charinfo::is_special): New method.
+ * src/roff/troff/input.cc (do_define_character): Add and use
+ optional second parameter used as a prefix for font-specific glyph
+ names.
+ (define_character, define_fallback_character): Updated.
+ (define_special_character): New function.
+ (init_input_requests): Add `schar'.
+ (charinfo::charinfo, charinfo::set_macro): Updated.
+ * src/roff/troff/node.cc: Include `stringclass.h'.
+ (make_glyph_node): Handle special glyphs defined with `.schar' and
+ `.fschar'.
+ (define_font_special_character, remove_font_special_character): New
+ functions.
+ (init_node_requests): Sorted.
+ Add `fschar' and `rfschar'.
+ * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo:
+ Document new requests.
+
+ * font/devhtml/R.proto, font/devutf8/R.proto: Add `va'.
+ * tmac/dvi.tmac: Add `va' for CW and CWI (using `.fschar').
+
+2002-11-08 Werner LEMBERG <wl@gnu.org>
+
+ Added new font `SC' (cmtex10) to devdvi.
+
+ * devdvi/generate/Makefile (FONTS): Add `SC'.
+ (SC): New rule.
+ * devdvi/generate/textex.map: New map file for cmtex.
+ * devdvi/SC: New.
+ * devdvi/Makefile.sub (DEVFILES): Updated.
+ * tmac/dvi.tmac: Add fspecial entries for SC.
+ Add `MI', `S' and `CW' to the `special' call. Otherwise, `SC' is
+ found before `S' since the font position of `SC' is lower due to the
+ gaps in DESC's `font' line.
+ * tmac/ec.tmac: Add a `special' call.
+ * NEWS: Updated.
+
+ * font/devhtml/R.proto: Remove double entry for `ti'.
+ * tmac/tty.tmac: Add entries for `IJ', `ij', and `bq'.
+ * tmac/tty-char.tmac: Remove entry for `bq'.
+ * tmac/lbp.tmac: Add entries for `lq', `rq', `fo', `fc', and `em'.
+ * tmac/ec.tmac: Don't remove `aq' glyph.
+ * tmac/X.tmac: Fix entry for `em'.
+ Add entries for `fo' and `fc'.
+ * tmac/dvi.tmac: Add entries for `em', `en', `hy', `fo', and `fc'.
+
+ * doc/groff.texinfo, man/groff.man, man/groff_diff.man: Fix
+ documentation of `special' and `fspecial' requests.
+
+2002-11-05 Werner LEMBERG <wl@gnu.org>
+
+ * font/devascii/R.proto, font/devcp1047/R.proto,
+ font/devlatin1/R.proto: Remove entry for `.i'.
+ * font/devdvi/generate/textt.map: Add entry for `ad'.
+ * font/devdvi/generate/texr.map, font/devdvi/generate/texb.map,
+ font/devdvi/generate/texi.map: Add dummy glyph name `slash@for@l'.
+ We need this for getting kerning values to compose `/l' and `/L'.
+ * font/devdvi: Regenerated font definition files for CM fonts.
+ * font/devhtml/R.proto: Add entries for "'C", "'c", `IJ', and `ij'.
+ * font/devutf8/R.proto: Ditto.
+ Remove double entry for `ti'.
+
+ * src/roff/troff/glyphuni.cc (glyph_to_unicode_list): Fix entries
+ for (groff) ligatures, `la', and `ra'.
+ Add "'C", "'c", `IJ', and `ij'.
+ Remove double entry for `ti'.
+ * src/roff/troff/uniglyph.cc (unicode_to_glyph_list): Remove all
+ double entries.
+ Add "'C", "'c", `IJ', and `ij'.
+ Fix entries for (groff) ligatures, `la', and `ra'.
+
+ * tmac/ps.tmac (ps-achar): New macro.
+ Define "'c" and "'C".
+ * tmac/tty.tmac: Add entry for `.i'.
+ * tmac/X.tmac (X-achar): New macro.
+ Define "'c", "'C", and `:Y'.
+ Add entries for `IJ' and `ij'.
+ * tmac/Xps.tmac (Xps-achar): New macro.
+ Define "'c" and "'C".
+ Add entries for `IJ' and `ij'.
+ * tmac/lbp.tmac (lbp-achar): New macro.
+ Add fallback characters for all groff ligatures and many other
+ glyphs.
+ * tmac/dvi.tmac: Fix definitions of `_' and `ul'.
+ Add entries for `/l' and `/L'.
+ Define "'c" and "'C".
+ Add entries for `IJ' and `ij'.
+
+2002-11-02 Larry Kollar <kollar@alltel.net>
+
+ * PROBLEMS: Document how to solve Mac OS X compilation problems.
+
+2002-11-02 Werner LEMBERG <wl@gnu.org>
+
+ Adding support for composite glyphs: \[xxx yyy ...] and the
+ `composite' request.
+
+ * src/roff/troff/glyphuni.cc: New file for mapping groff glyph names
+ to Unicode-based glyph names.
+ * src/roff/troff/uniglyph.cc: New file for mapping Unicode-based
+ glyph names to groff glyph names.
+ * src/roff/troff/uniuni.cc: New file for canonically decomposing
+ Unicode-based glyph names.
+ * src/roff/troff/unicode.cc, src/roff/troff/unicode.h: New files
+ for handling Unicode glyph names.
+ * src/roff/troff/input.cc: Include unicode.h.
+ (composite_glyph_name): New function.
+ (token::next) <'['>: Handle Unicode glyph names and composite
+ glyphs.
+ (composite_dictionary): New dictionary for the `composite' request.
+ (composite_request): Implement `composite' request.
+ (init_input_requests): Add `composite'.
+ Alphabetically sorted.
+ * src/roff/troff/env.cc (tabs_save, tabs_restore): Removed (already
+ commented out).
+ (init_env_requests): Alphabetically sorted.
+ Removed `tas' and `tar' (already commented out).
+ * src/roff/troff/Makefile.sub: Updated.
+
+2002-10-31 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * src/roff/nroff/nroff.man, src/roff/nroff/nroff.sh: Fix description
+ of options.
+
+2002-10-29 Werner LEMBERG <wl@gnu.org>
+
+ Fix computation of .trunc register. Additionally, its value (and
+ the value of the .ne register) is now always set before entering the
+ trap.
+
+ * src/roff/troff/div.cc (diversion::need): Set `truncated_space' and
+ `needed_space' before calling `space'.
+ (top_level_diversion::space): Remove special code for 'sp before the
+ first page.
+ Call `begin_page' with the discarded space as a parameter.
+ (top_level_diversion::begin_page): Add optional parameter to set
+ `truncated_space'.
+ * src/roff/troff/div.h: Updated.
+
+ * doc/groff.texinfo: Improve documentation of .sp, \n[.trunc], and
+ \n[.ne].
+
+ * tmac/an-old.tmac (SH, SS, TP, IP, HP, TS): Undo change 2002-10-26.
+ (LP): Remove superfluous call to `br'.
+ * tmac/doc-common (doc-paragraph): Undo change 2002-10-26.
+ * tmac/doc.tmac (Bd, Bl, doc-set-vertical-and-indent): Ditto.
+
+2002-10-26 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc-ditroff: Remove useless switch/variable -rC.
+ (doc-setup-header): Don't set page register `%'.
+ * tmac/doc-nroff: Remove variable `C'.
+ (doc-setup-page-layout): Set doc-header-space to .5i unconditionally.
+ (doc-setup-header): Don't set page register `%'.
+ Don't call `bp'.
+ * tmac/doc-common (doc-header): Call `ns'.
+ (doc-paragraph): Protect .sp with .br so that it survives traps
+ possibly set by the user.
+ * tmac/doc.tmac (Bd, Bl, doc-set-vertical-and-indent): Ditto.
+
+ * tmac/doc*: Replace ' with . for consistency if no effect.
+
+2002-10-26 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac (SH, SS, TP, IP, HP, TS): Protect .sp with .br
+ so that it survives traps possibly set by the user.
+
+ * src/roff/troff/node.cc: Fix the changes from 2002-10-23.
+ (troff_output_file::set_font): Call flush_tbuf if necessary.
+ (troff_output_file::fill_color, troff_output_file::glyph_color): Call
+ flush_tbuf and do_motion only if necessary.
+ (troff_output_file::start_special,
+ troff_output_file::put_char_width, troff_output_file::put_char,
+ troff_output_file::draw): Updated.
+ (word_space_node::tprint, space_node::tprint, hmotion_node::tprint,
+ vmotion_node::tprint): Undo change 2002-10-23.
+
+2002-10-25 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/www.tmac (DC): Fix case of overlapping images.
+
+2002-10-23 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/node.cc (troff_output_file::fill_color,
+ troff_output_file::glyph_color): Set current color before testing
+ color_flag.
+ (troff_output_file::put_char_width, troff_output_file::put_char,
+ troff_output_file::draw): Don't call flush_tbuf and/or do_motion
+ before glyph_color.
+ (troff_output_file::file_color, troff_output_file::glyph_color):
+ Call do_motion.
+ (word_space_node::tprint, space_node::tprint, hmotion_node::tprint,
+ vmotion_node::tprint): Move first, then call fill_color.
+
+2002-10-20 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo, man/groff_tmac.man: Document that it is not
+ possible to use multiple main macro packages.
+
+2002-10-19 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grops/ps.cc (cmyk_flag): New global variable.
+ (ps_printer::set_color): Set `cmyk_flag' for CMY and CMYK colors.
+ (ps_printer::~ps_printer): Emit `%%Extensions: CMYK' if `cmyk_flag'
+ is set.
+ * font/devps/prologue.ps (Fk, Ck): Enclose definitions with a
+ `where' construction since `cmyksetcolor' is a PS Level 2 operator.
+
+2002-10-16 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS, doc/webpage.ms: Updated.
+
+2002-10-14 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/node.cc (troff_output_file::put_char_width,
+ troff_output_file::put_char, troff_output_file::fill_color,
+ troff_output_file::glyph_color): Handle case where color pointer
+ is null.
+
+2002-10-13 Ruslan Ermilov <ru@FreeBSD.org>
+
+ Add the new -r option to grotty. It is similar to the -i option
+ except it tells grotty(1) to use the `reverse video' attribute to
+ render italic fonts.
+
+ * src/devices/grotty/tty.cc (reverse_flag): New global variable.
+ (SGR_REVERSE, SGR_NO_REVERSE): New macros.
+ (tty_printer::make_underline, tty_printer::put_color,
+ tty_printer::end_page): Use it.
+ (main): Add -r switch.
+ (usage): Updated.
+ * src/devices/grotty/grotty.man: Document it.
+
+2002-10-11 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * src/roff/troff/env.cc (hyphen_trie::read_patterns_file): Add
+ cast to `unsigned char' to properly read patterns with 8bit
+ characters.
+
+2002-10-08 Werner LEMBERG <wl@gnu.org>
+
+ * REVISION: Increased to 2.
+
+Copyright 2002-2005
+ Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+version-control: never
+coding: latin-1
+End:
diff --git a/ChangeLog.120 b/ChangeLog.120
new file mode 100644
index 0000000..7e29aee
--- /dev/null
+++ b/ChangeLog.120
@@ -0,0 +1,3051 @@
+
+Version 1.20.1 released
+=======================
+
+ `gnu.png' isn't needed any more.
+
+ * doc/Makefile.in: Don't handle or create `gnu.png'.
+ Update all affected targets.
+
+ * doc/Makefile.sub: Don't handle or create `gnu.png'.
+ Update alll affected targets.
+
+
+ `gnu.eps' was missing in the tarball.
+ Problem reported by Patrik Grser.
+
+ (PROCESSEDEXAMPLEFILES): Remove `gnu.eps'.
+ (MOSTLYCLEANNOTSRCDIRADD): Fix names of info files.
+ (install_data): Handle `gnu.eps' specially.
+
+ * MORE.STUFF: Mention texi2html's troff backend.
+ Mention http://groff.ffii.org/groff/contrib.
+
+ * README: Mention `MORE.STUFF'.
+
+ * NEWS, doc/webpage.ms, doc/groff.texinfo: Updated.
+
+2009-01-08 Werner LEMBERG <wl@gnu.org>
+
+ * */Makefile.* (CLEANADD, CLEANNOTSRCDIRADD, CLEANDIRADD): Renamed
+ to...
+ (MOSTLYCLEANADD, MOSTLYCLEANNOTSRCDIRADD, MOSTLYCLEANDIRADD): This.
+
+2009-01-06 Werner LEMBERG <wl@gnu.org>
+
+ Remove heuristics for LIBEXT.
+
+ * configure.ac: Provide LIBEXT.
+ * Makefile.in: Use it.
+
+ * configure: Regenerated.
+
+2009-01-05 Werner LEMBERG <wl@gnu.org>
+
+Version 1.20 released
+=====================
+
+2009-01-05 Werner LEMBERG <wl@gnu.org>
+
+ * */*: Update FDL 1.1 to FDL 1.3.
+
+2009-01-05 Werner LEMBERG <wl@gnu.org>
+
+ * */*: Update copyright year.
+
+2009-01-05 Werner LEMBERG <wl@gnu.org>
+
+ * MANIFEST: Updated.
+
+2009-01-05 Werner LEMBERG <wl@gnu.org>
+
+ * doc/texinfo.tex (\key): Fix excessive whitespace.
+ (\texinfoversion): Tag file as patched.
+
+2009-01-05 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/s.tmac (@TS, TE, @EQ, @EN), tmac/an-old.tmac (TS, TE, EQ,
+ EN), tmac/e.tmac (TS, TE, EQ, EN): Set line length to a large value
+ if processed with -Thtml.
+
+2009-01-04 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/www.tmac (TS, TE, EQ, EN): Set line length to a large value
+ if processed with -Thtml to avoid warning messages (from code
+ inserted by tbl, for example).
+
+2009-01-04 Gunnar Florus <http://florus.no>
+
+ * */*: Update GPL2 to GPL3.
+
+2009-01-04 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.in (dist): Don't use soft links but copy files to
+ preserve the file's time stamps.
+ * Makefile.sub (configure): Remove `autom4te.cache'.
+
+2009-01-04 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/de.tmac: Fix German date strings. Reported by Axel Kielhorn.
+
+2009-01-04 Werner LEMBERG <wl@gnu.org>
+
+ * doc/texinfo.tex: Updated from `texinfo' CVS repository.
+ * doc/txi-en.tex: New file from `texinfo' CVS repository.
+
+2009-01-04 Werner LEMBERG <wl@gnu.org>
+
+ * font/make-Rproto: Moved to...
+ * font/util/make-Rproto: Here.
+
+ * Makefile.in (NOMAKEDIRS): Add `m4', `font/devps/old', and
+ `font/util'.
+
+2009-01-04 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/TODO: Mention local variables.
+
+2009-01-03 Werner LEMBERG <wl@gnu.org>
+
+ * contrib/hdtbl/examples/col_rowspan_colors.roff,
+ contrib/hdtbl/examples/color_boxes.roff,
+ contrib/hdtbl/examples/color_nested_tables.roff,
+ contrib/hdtbl/examples/color_table_cells.roff,
+ contrib/hdtbl/examples/color_transitions.roff,
+ contrib/hdtbl/examples/short_reference.roff: Minor improvements.
+
+2009-01-03 Werner LEMBERG <wl@gnu.org>
+
+ * doc/webpage.ms: Updated.
+
+2009-01-03 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS, doc/groff.texinfo, font/devps/*, VERSION, REVISION: Prepare
+ for version 1.20.
+
+2009-01-03 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/table.cpp (table::compute_expand_width,
+ table::compute_separation_factor): In warning messages, don't refer
+ to pages but to input line numbers.
+
+2009-01-03 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/groff_ms.man: Improve formatting of tables.
+
+2009-01-03 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/www.tmac (www->): Handle XHTML.
+ (HTML</p>): Handle non-HTML devices.
+ (www:url_check_tag): Avoid warnings.
+
+2009-01-03 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac, tmac/doc.tmac: For -Tutf8, map \-, -, ', and `
+ conservatively to ASCII for the sake of easy cut and paste.
+
+2009-01-03 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS: Mention hdtbl.
+
+2009-01-02 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/groff_mdoc.man: Update OS version string listing.
+
+2009-01-02 Werner LEMBERG <wl@gnu.org>
+
+ * config.rpath, m4/codeset.m4, m4/glibc21.m4, m4/iconv.m4,
+ m4/lib-link.m4, m4/lib-prefix.m4, src/include/localcharset.h,
+ src/libs/libgroff/config.charset, src/libs/libgroff/localcharset.c,
+ src/libs/libgroff/ref-add.sin, src/libs/libgroff/ref-del.sin:
+ Updated from `gnulib' git repository.
+
+ * configure: Regenerated.
+
+2009-01-02 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/ptx.tmac: New file.
+
+ * NEWS, man/groff_tmac: man: Document it.
+
+2008-12-30 Werner LEMBERG <wl@gnu.org>
+
+ Fix more quoting issues.
+
+ * tmac/www.tmac (BCL, BGIMG, PIMG, MPIMG, LNS): For the sake of
+ XHTML, quote more arguments.
+ (IMG): Fix quoting.
+
+2008-12-30 Werner LEMBERG <wl@gnu.org>
+
+ Fix quoting issues in www.tmac.
+
+ * tmac/www.tmac (www:url_breaks_splitted): Renamed to...
+ (www:url_breaks_split): This.
+ (www->): New string to close tag singletons like <img> or <hr>. In
+ XHTML mode (not implemented yet), this has to be changed from `>' to
+ `/>'.
+ (IMG): Don't use </img>
+ Use www->.
+ (PIMG, MPIMG): Don't use </img>
+ Use www->.
+ Fix doublequote issues.
+ (HR): Don't use </hr>.
+ Use www->.
+ (LNS): Fix doublequote issues.
+
+2008-12-24 Michail Vidiassov <master@iaas.msu.ru>
+
+ * tmac/doc-common: Add entries for Mac OS X and FreeBSD.
+
+2008-12-22 Alexey Gladkov <legion@altlinux.ru>
+
+ * contrib/groffer/perl/roff2.pl: Fix syntax error.
+
+2008-12-15 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS: Mention `preconv'.
+
+2008-11-12 Werner LEMBERG <wl@gnu.org>
+
+ Implement `x' specifier for expanded columns. Contrary to old DWB
+ tbl, more than a single `x' specifier can be used. At the same
+ time, remove most of the code from change 2007-02-09 which collides
+ with the new implementation.
+
+ * src/preproc/tbl/main.cpp (format): Add `expand' array.
+ (format::format, format::~format): Updated.
+ (input_entry_format): Add `expand' field.
+ (input_entry_format::input_entry_format): Updated.
+ (input_entry_format::debug_print): Handle `expand'.
+ (process_format): Handle `x' specifier.
+ (process_data): Updated.
+
+ * src/preproc/tbl/table.cpp (AVAILABLE_REG, COLCOUNT_REG): Remove.
+ (EXPAND_REG): New macro.
+ (table_entry::divert, block_entry::divert,
+ alphabetic_block_entry::divert): Add parameter to control whether
+ expanded columns shall be handled.
+ (block_entry::do_width): Remove.
+ (block_entry::do_divert): Add parameter to control whether expanded
+ columns shall be handled.
+ Treat expanded columns like columns with a minimum width.
+ Remove `experimental' code.
+ (table::table, table::~table, table::allocate): Updated.
+ (table::set_expand_column): New function.
+ (table::count_block_columns): Replace with...
+ (table::count_expand_columns): This function.
+ (table::divide_span): Handle expanded columns the same as equal
+ columns.
+ (table::sum_columns): Add parameter to control whether expanded
+ columns shall be handled.
+ (table::compute_available_block_width): Replace with...
+ (table::compute_expand_width): This function.
+ (table::compute_total_separation): New function, taking code from
+ `compute_separation_factor'.
+ (table::compute_separation_factor): Simpler code. The check for the
+ `EXPAND' flag has been moved to the caller.
+ (table::compute_widths): Add `top-level' changes to handle expanded
+ blocks.
+
+ * src/preproc/tbl/table.h (table): New field `total_separation'.
+ Remove `blockflag' array.
+ Add `expand' array.
+ Update member function declarations.
+
+ * src/preproc/tbl/tbl.man: Document `x' specifier.
+ Expand documentation to cover all aspects of Lesk's tbl reference.
+
+ * NEWS: Document `x' specifier.
+
+2008-11-08 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/tbl.man: Restructuring.
+ Improve text block documentation.
+
+2008-11-07 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/table.cpp (table::compute_widths): Use default
+ scaling operator for minimum width. Without this fix, `lw3' (or
+ `lw(3)' would be handled as a column with a minimum width of 3u
+ instead of 3n.
+
+2008-11-05 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc-common (Dt): Start a new page if necessary and set up
+ headers.
+
+ * tmac/andoc.tmac (reload-doc): Simplify due to change in
+ doc-common.
+
+ * NEWS: Document it.
+
+2008-10-18 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/main.cpp (process_format): Rename `x' and `X' to
+ `m' and `M', respectively.
+ Sort entries in `switch' block.
+ * src/preproc/tbl/tbl.man: Updated.
+ Sort key entries; other minor improvements.
+
+2008-10-17 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/table.cpp (table::compute_available_block_width):
+ New function.
+ (table::compute_widths): Replace some code with new function
+ (shifted to a more appropriate place).
+ * src/preproc/tbl/table.h: Updated.
+
+2008-10-16 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc-common (doc-operating-system-*), tmac/groff_mdoc.man: Add
+ NetBSD 4.0.1.
+
+2008-10-13 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/groff_mdoc.man: Update documentation on BSD-like OS string
+ versions.
+
+2008-10-10 Werner LEMBERG <wl@gnu.org>
+
+ * man/roff.man, doc/groff.texinfo: Improve the history part. This
+ is based on input from Tom Van Vleck <thvv@multicians.org>.
+
+
+ * src/preproc/eqn/sqrt.cpp (sqrt_box::compute_metrics): Assure that
+ value of `rst' register is not zero, as can happen for the HTML
+ output device. Otherwise, there are too many loops, and we get a
+ stack overflow because of recursion.
+
+2008-10-05 Stephen Gildea <http://www.gildea.com/stephen/>
+
+ * src/preproc/ref/ref.cpp (reference::compute_sort_key): Do
+ not insert SORT_SEP before the first field, so that sort_key
+ has the same format as before the patch of 2003-08-23.
+
+2008-10-04 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc-common (doc-operating-system-*): Update releases.
+
+ * tmac/an-old.tmac (an-extra1, an-extra2, an-extra3): Initialize.
+
+ * tmac/andoc.tmac: Rewritten, based on a preliminary version from
+ Tadziu Hoffmann. It can now process multiple man pages with both
+ man and mdoc formats intermixed.
+
+ * NEWS, tmac/groff_man.man, tmac/groff_mdoc.man,
+ man/groff_tmac.man: Document it.
+
+2008-10-04 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cpp (do_suppress): Make \O[3], \O[4], and
+ \O[5] non-transparent w.r.t. beginning-of-line recognition (similar
+ to the other \O variants).
+
+ * tmac/www.tmac (TS, TE, EQ, EN): Don't use .als for setting up
+ default macros. This causes endless loops (at least for TE).
+
+ * doc/groff.texinfo: Improve documentation of `.als'.
+
+2008-10-03 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grops/grops.man, src/roff/troff/troff.man,
+ src/preproc/soelim/soelim.man: Correct documentation of -I switch.
+ Reported by Larry Kollar.
+ Other minor formatting issues.
+
+2008-10-02 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/trace.tmac: Much improved.
+ (trace-full): New register to be set on the command line; it
+ controls whether number and string register assignments get traced
+ also.
+ (!!c): New macro for comments.
+ (rm): New traced macro.
+ (de, de1, am, am1): Use \\[xxx]\\ calling method to pass \$0 to
+ `!!xxx'; this makes doc.tmac completely traceable.
+ Trace call of .de and friends also.
+
+ * tmac/groff_tmac.man, NEWS: Update.
+
+2008-09-30 Werner LEMBERG <wl@gnu.org>
+
+ Restore behaviour of \$0 if a macro is called with string syntax
+ (problem caused by change on 2008-09-29).
+
+ * src/roff/troff/input.cpp (input_iterator, input_stack,
+ macro_iterator): Add `get_macro_name' member function.
+ (interpolate_string): Use it.
+
+2008-09-29 Werner LEMBERG <wl@gnu.org>
+
+ Make \\*[xxx]\\ within a macro (with `xxx' a macro too) work as
+ expected. Without the patch,
+
+ .de aaa
+ \\*[bbb]\\
+ . tm \\$*
+ ..
+ .de bbb
+ . shift
+ ..
+ .aaa 1 2 3
+
+ prints `2 3' instead of `1 2 3'.
+
+ * src/roff/troff/input.cpp (input_iterator, input_stack,
+ macro_iterator): Add `get_arg_list' member function.
+ (macro): Add `is_a_string', `is_string', and `clear_string_flag'
+ members.
+ Update constructors and operators.
+ (arg_list): Add copy constructor.
+ (macro_iterator): Add optional argument to constructor to indicate
+ whether arguments shall be inherited from calling macro.
+ (interpolate_string): If string argument is a macro, push a macro
+ iterator on the stack.
+ (do_define_macro): Call clear_string_flag if macro data contains a
+ newline.
+
+ * src/roff/troff/request.h: Updated.
+
+2008-09-29 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * doc/pic.ms: Fold in documentation of pic2plot(1) capabilities.
+ Improve the documentation of text objects.
+
+2008-09-28 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * contrib/pic2graph, contrib/pic2graph.man, contrib/eqn2graph,
+ contrib/eqn2graph.man: Tweak scripts to cope with incompatible
+ changes in ImageMagick crop options. Document the bugs.
+
+2008-09-28 Werner LEMBERG <wl@gnu.org>
+
+ If a macro is called as a string, inherit value of \n[.br] from the
+ caller. This is useful for `trace.tmac'.
+
+ * src/roff/troff/input.cpp (string_iterator): New members
+ `with_break' and `get_break_flag'.
+ (string_iterator::string_iterator): Updated.
+
+ * doc/groff.texinfo: Improve documentation of \$0 and string syntax
+ calling of macros.
+ Document behaviour of \n[.br] within strings.
+
+2008-09-26 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/trace.tmac: Add copyright message.
+ Use `.de1' where possible to make source code more readable.
+ (so, mso, als, rn): Restore escape character before executing the
+ request.
+ (de, de1, am, am1): Trace `.foo' also if called as `\\[foo]'.
+
+2008-09-24 Werner LEMBERG <wl@gnu.org>
+
+ Fix incompatibility between `.de1' and `.do'. Without this change,
+ the following snippet
+
+ .de1 xx
+ . tm \\n(.C
+ ..
+ .cp 1
+ .do xx
+
+ prints 1 instead of 0.
+
+ * src/roff/troff/input.cc (do_request): If a macro gets processed,
+ call tok.next().
+ (interpolate_macro): Add optional argument. Update callers.
+ (request::invoke): Add optional argument.
+ (macro::invoke): Add optional argument to delay call of tok.next().
+
+ * src/roff/troff/request.h (request_or_macro): Add argument to
+ `invoke' member. Update all derived classes.
+
+ * doc/groff.texinfo: Improve documentation of .do request.
+
+2008-09-09 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac (FT): Initialize properly. Reported by Tadziu
+ Hoffmann.
+
+2008-09-06 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc-common (Dd, Os, Dt): Reset `doc-command-name' to make
+ `.Nm' work properly if next manual page is printed.
+
+2008-08-20 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/tbl.man: Document computation of element widths.
+
+2008-08-20 Alexey Gladkov <legion@altlinux.ru>
+ Werner LEMBERG <wl@gnu.org>
+
+ Add default encoding option -D to preconv and groff.
+
+ * src/preproc/preconv/preconv.cpp (default_encoding): Make it an
+ array.
+ Update all users.
+ (main): Handle new option -D.
+ (usage): Updated.
+ * src/preproc/preconv/preconv.man: Updated.
+
+ * src/roff/groff/groff.cpp (main): Handle new option -D.
+ (synopsis, help): Updated.
+ * src/roff/groff/groff.man: Updated.
+
+2008-07-26 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/eqnrc (.EQ, .EN): Provide default definitions. Reported
+ by Denis M. Wilson.
+
+ * tmac/www.tmac (.EQ, .EN, .TS, .TE): Fix definitions.
+
+2008-07-24 Denis M. Wilson <dmw@oxytropis.plus.com>
+
+ New options -f and -k for afmtodit.
+
+ * src/afmtodit/afmtodit.pl: New options `-f NAME' sets the internal
+ name of the groff font.
+ New option `-k' disables output of kerning data.
+ * src/afmtodit/afmtodit.man, NEWS: Document new options.
+
+2008-07-18 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/table.cpp (table::compute_separation_factor): Emit
+ warning messages if table gets squeezed.
+ (table::compute_widths): Fix computation of AVAILABLE_REG.
+ Emit warning if table is wider than line length.
+
+ * src/preproc/tbl/tbl.man: Minor improvements.
+
+2008-05-02 Larry Jones <lawrence.jones@siemens.com>
+
+ * contrib/chem/Makefile.sub (README, examples/README): In makefiles,
+ the `$<' macro is only guaranteed to be defined in inference rules,
+ not in explicit target rules. Since there is only one input file in
+ the places where it is used, the `$?' macro (which is guaranteed to be
+ defined for both kinds of rules) is a suitable replacement.
+
+ * hdtbl/examples/fonts_n.in, hdtbl/examples/fonts_n.in: Most
+ versions of ls don't have a `--color' option.
+
+2008-04-30 Larry Jones <lawrence.jones@siemens.com>
+
+ * Makefile.comm (depend.temp): Add `EXTRA_CCFLAGS'.
+
+2008-04-29 Larry Jones <lawrence.jones@siemens.com>
+
+ * src/eqn/script.cpp (script_box::output): Portability fix.
+
+2008-04-05 Dorai Sitaram <ds26gte@yahoo.com>
+
+ Add better support for `.TAG #<label>' in non-HTML documents: In
+ case of a forward reference in a call to .URL, write `(see below)'.
+ In case of a backwards reference use the page number instead. The
+ reference gets stored in a string `TAG_<label>' and can be
+ overridden while calling `.TAG' with its new optional argument --
+ this is useful for a second-pass system which resolves forward
+ references.
+
+ * tmac/www.tmac (www:url_check_tag): New function.
+ (URL): Use it.
+ (TAG): Add optional argument to define string `TAG_<label>'.
+
+2008-03-24 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/trace.tmac (so, mso): Added.
+
+ * tmac/www.tmac (PIMG): Replace `.ie' (without `.el') with `.if'.
+ If used with -mtrace, and this clause was active, the macro was
+ executed twice.
+
+ * tmac/pspic.tmac (PSPIC): Accept option `-C' for orthogonality.
+ This makes `.PIMG -C <file>' (from www.tmac) work on non-HTML
+ devices.
+ * man/groff_tmac.man: Document it.
+
+2008-02-26 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cpp: s/safer_flag/unsafe_flag/.
+ Update all occurrences so that \n[.U] works as advertised. Bug
+ reported by Dorai Sitaram.
+
+2008-02-17 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Improve documentation of .cf request.
+
+2008-01-19 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/html/pre-html.cpp (usage): Don't describe options but
+ mention that it should never be called stand-alone.
+
+ * tmac/groff_www.man, doc/groff.texinfo, man/groff_font.man,
+ man/groff_tmac.man, man/groff_out.man, README, README.MinGW,
+ src/roff/groff/groff.man: Mention -Txhtml.
+
+ * man/groff_font.man, man/groff_tmac.man, man/roff.man: Revised.
+
+2008-01-16 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/font.cpp (font::contains, font::get_code):
+ Handle single-letter names correctly.
+
+ * doc/groff.texinfo, man/groff_diff.man: Extend documentation of \^
+ and \|.
+ * NEWS: Updated.
+
+2008-01-15 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_font.man: Revised.
+
+2008-01-14 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff.man: Mention glyph and characters.
+ Minor other updates.
+ * man/groff_char.man: Minor updates.
+ * man/groff_diff.man: Better clarification between characters and
+ glyphs.
+
+2008-01-12 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Fix top-level structure to make it compilable
+ again with all texinfo modes. Reported by Jrg van den Hoff
+ <j.van_den_hoff@fzd.de>.
+
+2008-01-11 Werner LEMBERG <wl@gnu.org>
+
+ * doc/pic.ms: Mention that compass points of line objects are
+ arbitrarily located.
+
+2008-01-06 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/node.cpp (left_italic_corrected_node::add_self):
+ Don't remove itself if there is no glyph associated with the node
+ yet. This happens, for example, in this situation:
+
+ .ll 15000u
+ .ft I
+ x x
+ (\,f
+
+2008-01-05 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_char.man, man/groff.man: Revised.
+
+ * src/preproc/eqn/lex.cpp (troff_defs): Fix typo.
+
+2008-01-04 Werner LEMBERG <wl@gnu.org>
+ * */*: s/Osanna/Ossanna/.
+
+ * */*.man: Replace .URL with .UR/.UE (except in groff_www.tmac).
+ Replace .MTO with .MT/.ME (except in groff_www.tmac).
+ Insert `\:' in URLs where appropriate.
+ Don't include www.tmac (except in groff_www.tmac).
+
+ * man/groff.man (.ESC[]): Fix font of closing bracket.
+ (.ESCq): Fix font of closing quote character.
+ Many other improvements.
+
+2007-12-30 Bernhard Fisseni <bfi@ikp.uni-bonn.de>
+
+ * src/devices/grohtml/post-html.cc
+ (html_printer::writeHeadMetaStyle): Fix CSS output.
+
+2007-12-29 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/ec.tmac: Add CM fonts to the .fspecial lines; those fonts
+ contain additional glyphs (like some uppercase Greek letters).
+
+2007-12-06 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS: Updated.
+
+2007-12-06 Colin Watson <cjwatson@debian.org>
+
+ * src/roff/nroff/nroff.sh: Add options -w and -W.
+ * src/roff/nroff/nroff.man: Document them.
+
+2007-12-06 Karl Berry <karl@freefriends.org>
+
+ * tmac/hyphenex.pl: Update header output.
+
+2007-11-29 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grotty/tty.cpp (tty_printer::line): Fix line lengths.
+
+2007-11-20 Werner LEMBERG <wl@gnu.org>
+
+ * doc/pic.ms: Add Heinz-Jrgen's 3d boxes example.
+
+2007-11-17 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/nroff/nroff.sh: Handle GROFF_TYPESETTER environment
+ variable. Problem reported by Michael G Schwern
+ <schwern@pobox.com>.
+
+ * src/roff/nroff/nroff.man: Document it.
+ Other minor updates.
+
+2007-11-17 Heinz-Jrgen Oertel <hj.oertel@t-online.de>
+
+ * src/groff/preproc/pic/lex.cpp (table): Add box attributes
+ `xslanted' and `yslanted'.
+
+ * src/groff/preproc/pic/object.cpp (object_spec::object_spec):
+ Initialize `xslanted' and `yslanted'.
+ (graphic_object): Add methods `set_xlanted' and `set_yslanted'.
+ (closed_object): Ditto.
+ Add members `xslanted' and `yslanted'.
+ (box_object::print): Use them.
+ (object_spec::make_object): Handle slant values.
+ * src/groff/preproc/pic/object.h (IS_XSLANTED, IS_YSLANTED): New
+ constants.
+ (object_spec): Add members `xslanted' and `yslanted'.
+ * src/groff/preproc/pic/pic.y (XSLANTED, YSLANTED): New left-valued
+ tokens.
+ Add rules for them.
+
+ * src/groff/preproc/pic/pic.man, NEWS, doc/pic.ms: Document above
+ changes.
+
+2007-11-16 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/hyphenex.pl: Generate copyright notice (this has been
+ approved by Barbara Beeton).
+ * tmac/hyphenex.us: Updated.
+
+2007-11-10 Michail Vidiassov <master@iaas.msu.ru>
+
+ * tmac/doc-syms (doc-str-St--susv3): New string.
+ * tmac/groff_mdoc.man: Document it.
+
+2007-11-08 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/preconv/preconv.cpp (emacs_to_mime): Add `utf-16be',
+ `utf-16le', `utf-16be-with-signature', `utf-16le-with-signature'.
+ (is_comment_line): Handle '\" and '\# also.
+
+ * src/preproc/preconv/preconv.man: Revise and make complete.
+
+2007-10-25 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/cs.tmac: New file holding Czech strings, contributed by
+ Marcela Maslanova <mmaslano@redhat.com>.
+ * tmac/hyphen.cs, tmac/hyphenex.cs: New hyphenation pattern files
+ for Czech, taken from CTAN.
+ * LICENSES: Updated.
+ * tmac/Makefile (NORMALFILES): Add Czech stuff.
+ * doc/groff_tmac.man: Mention cs.tmac.
+
+2007-10-21 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cpp (do_ps_file): Handle `%X' in header
+ comments correctly. Reported by Frank Jahnke
+ <jahnke@sonatabio.com>.
+
+2007-10-02 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/doc-common, tmac/groff_doc.man: Add FreeBSD 6.2, document
+ FreeBSD 5.5 and 7.0.
+
+ * tmac/doc-syms: Give better names for System V releases.
+
+2007-09-25 Gaius Mulley <gaius@glam.ac.uk>
+
+ * doc/Makefile.in, doc/Makefile.sub (.ms.html): Add -P-V switch to
+ the production of html files.
+ (pic.html): Ditto.
+ Remove background colour switch.
+ (.SUFFIXES, clean): Handle *.xhtml files.
+
+ * src/devices/grohtml/grohtml.man: Document that -V option now
+ generates an HTML-4.01 validator or XHTML validator.
+
+ * src/devices/grohtml/html-text.cpp (html_text::end_tag,
+ html_text::start_tag): Suppress <small>, <big>, and <color> tags if
+ we are inside a <pre> block.
+
+ * src/devices/grohtml/post-html.cpp
+ (html_printer::handle_valid_flag): Add a parameter to indicate
+ whether it needs to generate a paragraph block.
+ (html_printer::write_navigation): Updated.
+ (html_printer::do_file_components): Generate an HTML-4.01 blue
+ validator button also.
+
+2007-09-23 Axel Kielhorn <A.Kielhorn@web.de>
+
+ * man/groff.man: Fix URL of CSTR 54.
+
+2007-09-23 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_char.man: Normalize character set names as defined
+ by IANA. Based on a patch from Axel Kielhorn.
+
+ * src/preproc/refer/label.y: Undo change from 2007-09-19.
+
+2007-09-19 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cpp (interpolate_arg): Remove compiler
+ warning.
+
+ * src/preproc/eqn/pile.cpp (pile_box::output, matrix_box::output):
+ Remove compiler warning.
+
+ * src/preproc/refer/label.y: Remove compiler warning.
+
+ * src/preproc/pic/pic.y: Remove doubled token entries.
+
+2007-09-19 Gaius Mulley <gaius@glam.ac.uk>
+
+ * doc/groff.texinfo: Document new .O register and add cross
+ reference entries.
+
+ * NEWS: Updated.
+
+ * src/devices/grohtml/grohtml.man: Document new -V and -y options.
+
+ * src/devices/grohtml/html-table.cpp: Add support for XHTML 1.1.
+ (html_table:: emit_colspan, html_table::emit_td): New methods.
+ (html_table::emit_col): Use html_table::emit_td.
+ (html_table::emit_table_header): Use html_table::emit_colspan if
+ dialect xhtml is specified.
+ (html_table::finish_row): Updated.
+
+ * src/devices/grohtml/html-table.h (html_table): Declare
+ emit_colspan, emit_td.
+
+ * src/devices/grohtml/html-text.cpp: Modified tags to comply with
+ xhtml if this dialect was requested.
+
+ * src/devices/grohtml/html-text.h (html_dialect): New enumeration.
+ (html_text): Add new variable `dialect'.
+
+ * src/devices/grohtml/post-html.cpp: Modify header tags to be XHTML
+ compliant.
+ (valid_flag, groff_sig, dialect): New global variables.
+ (html_printer::handle_valid_flag, html_printer::do_math,
+ html_printer::write_html_anchor, html_printer::write_xhtml_anchor,
+ html_printer::do_math, html_printer::handle_valid_flag): New
+ methods.
+ (html_printer::emit_line, html_printer::emit_raw,
+ html_printer::do_check_center, html_printer::write_title,
+ write_rule, html_printer::writeHeadMetaStyle, generate_img_src,
+ html_printer::begin_page): Altered to be XHTML compliant.
+ (html_printer::write_header): Updated.
+ (html_printer::troff_tag): Call do_math.
+ (html_printer::insert_split_file, html_printer::do_file_components,
+ html_printer::write_navigation): Create XHTML file components if
+ necessary and also produces a groff signature if requested.
+ (~html_printer): Call writeHeadMetaStyle at appropriate places
+ depending upon html_dialect.
+ (html_printer::special): Handle new tags `html<?p>' and `math<?p>'.
+ (main): Added options -x, -V, and -y.
+ (usage): Updated.
+
+ * src/preproc/eqn/box.cpp: Create a distinction between
+ the MathML device and the XHTML device.
+ (do_text): Issue a newline at the end of the equation if XHTML was
+ specified.
+ (box::top_level): Prefix the output of an equation by the .MATHML
+ macro.
+ (output_string): Suppress \n if XHTML was specified.
+
+ * src/preproc/eqn/main.cpp (xhtml): New global flag.
+ (inline_equation): Skip leading spaces after inline equation for
+ XHTML device.
+ (main): Set `xhtml' flag if `-Tmathml:xhtml' is specified.
+
+ * src/preproc/eqn/eqn.h (xhtml): New external flag.
+
+ * src/preproc/eqn/text.cpp (entity_table): Fix typo.
+
+ * src/preproc/html/pre-html.cpp (html_dialect): New enumeration.
+ (dialect, eqn_flag): New global variables.
+ (html_system): Improve debugging support.
+ (alterDeviceTo): Test for -Txhtml when altering device to the image
+ device and reset to -Txhtml.
+ (addZ): Renamed to...
+ (addArg): This.
+ Introducea a general parameter.
+ (print_args): New debugging function.
+ (char_buffer::run_output_filter): Use print_args and addArg rather
+ than addZ.
+ (char_buffer::do_html, char_buffer::do_image): Add -rxhtml=1 command
+ line parameter as an argument to the html generation of text when
+ xhtml is needed. Include -e on the command line if mathml is
+ required.
+ (scanArguments): Allow -e, -V, -y and -x options.
+ -V, -y are handled by the back end. -e sets `eqn_flag'.
+ -x determines HTML dialect.
+
+ * src/roff/groff/groff.cpp (possible_command): New method
+ `clear_name'.
+ (main): Set eflag if -e is present on command line.
+ Set is_xhtml if -Txhtml is present.
+ Pass `-x x' to the HTML pre and post processors.
+ Pass `-e' to the HTML pre processor if required.
+ Pass `-Tmathml:xhtml' to eqn if XHTML is requested.
+
+ * src/roff/troff/input.cpp (init_input_requests): Introduce new
+ number register `\n[.O]'.
+
+ * tmac/s.tmac: (LP): Use .nop for semantic sugar.
+ (cov*ab-init) reformat.
+ (@EQ): Use EQN-HTML-IMAGE and friends rather than HTML-IMAGE.
+ (CHECK-FOOTER-AND-KEEP): Define FS, FE such that they use
+ <cite></cite> for the html device rather than generate images for
+ footnotes.
+
+ * tmac/troffrc-end: Define EQN-HTML-IMAGE,
+ EQN-HTML-IMAGE-END, EQN-HTML-IMAGE-RIGHT,
+ EQN-HTML-IMAGE-LEFT, EQN-HTML-IMAGE-INLINE,
+ EQN-HTML-DO-IMAGE, EQN-HTML-IMAGE-END as null strings.
+
+ * tmac/www.tmac: (HTML<?p>): New macro.
+ (MATH<?p>): New macro.
+ (IMG, PIMG, MPIMG, HR): Use XHTML compliant syntax.
+ (www-emit-ltag): New macro.
+ (www-push-li): Updated.
+ (ULS): Ensure that tags are balanced in order by use of
+ www-emit-ltag.
+ (ULE): Likewise: Use www-emit-ltag and shut down paragraphs in
+ order.
+ (OLS, OLE, DLS, DLE): Ditto.
+ <global>: Define EQ and EN to EQN-HTML-IMAGE and EQN-HTML-IMAGE-END
+ respectively.
+ (www-li-ul, www-li-ol, www-li-dl): Updated.
+ (EQN-HTML-IMAGE, EQN-HTML-IMAGE-RIGHT, EQN-HTML-IMAGE-LEFT,
+ EQN-HTML-IMAGE-INLINE, EQN-HTML-DO-IMAGE, EQN-HTML-IMAGE-END,
+ MATHML): New macros.
+
+2007-09-17 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_font.man: Document `unicode' keyword.
+ * doc/groff.texinfo (DESC File Format): Synchronize with
+ groff_font.man.
+
+2007-09-15 Werner LEMBERG <wl@nu.org>
+
+ * man/groff.man: Document `\_'.
+ * doc/groff.texinfo: Ditto.
+ Remove references to `\@' which isn't a valid escape sequence in
+ groff.
+
+
+ * tmac/unicode.tmac: Add ` and '.
+ * tmac/html.tmac: Load unicode.tmac.
+
+2007-09-14 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/unicode.tmac: Make `-' a pure input character by mapping it
+ to `hy'.
+
+ * src/roff/troff/input.cpp (init_charset_table): Handle `hy'.
+
+2007-09-11 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/string.cpp (string::remove_spaces): Fix memory
+ allocation.
+
+ * src/preproc/tbl/table.cpp (table::allocate): Initialize
+ `blockflag' array.
+
+2007-09-10 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * README.MinGW: Add warnings about use of MSYS-RXVT, and about
+ defective GnuWin32 versions of netpbm/libpng.
+
+2007-07-15 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * tmac/s.tmac (cov*first-page-init): Remove invoking trap, to avoid
+ possible recursion.
+
+2007-07-11 Werner LEMBERG <wl@gnu.org>
+
+ * gendef.sh: Add shebang.
+
+2007-07-05 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/papersize.tmac: Fix dimensions of executive paper format.
+ Reported by John Rupley <rupley@u.arizona.edu>.
+
+2007-07-02 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * tmac/s.tmac (cov*first-page-init): Emit error message if not in
+ top-level environment.
+
+2007-06-12 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/xditview/TODO, NEWS: Updated.
+ * src/devices/xditview/Makefile.sub (install_data, uninstall_sub):
+ Handle `GXditview-color'.
+ * src/devices/xditview/gxditview.man: Updated.
+
+ * m4/groff.m4 (GROFF_APPRESDIR_CHECK): Updated.
+ * m4/codeset.m4, m4/glibc21.m4, m4/iconv.m4, m4/lib-link.m4: Updated
+ from `gnulib' git repository.
+
+ * configure.ac: Updated.
+ * configure: Regenerated (using autoconf 2.61).
+
+ * config.guess, config.sub: Updated from `config' CVS repository.
+ * config.rpath, install-sh, mkinstalldirs: Updated from `gnulib' git
+ repository.
+
+2007-06-12 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
+
+ * src/devices/xditview/GXditview.ad: Split off color definitions
+ into...
+ * src/devices/xditview/GXditview-color.ad: This new file.
+
+2007-06-08 Fabrice Mnard <menard.fabrice@wanadoo.fr>
+
+ * tmac/fr.tmac: Handle chapter system for `me'.
+
+2007-06-05 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
+
+ * src/devices/xditview/xditview.c (main): Add support for
+ accelerators.
+
+ * src/devices/xditview/GXditview.ad: Updated.
+ Make widget more colourful.
+
+2007-05-30 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/groff_mdoc.man: Convert `-' to `\-' where appropriate.
+ Recommend `tbl' instead of `-column' lists for more complicated
+ cases.
+
+2007-05-21 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grops/ps.cpp (ps_printer::set_char): Handle subfonts
+ correctly.
+
+2007-04-10 Werner LEMBERG <wl@gnu.org>
+
+ In pic, make rounded boxes work with colors. Reported by Urs Eggli
+ <Urs.Eggli@zuerich.ch>.
+
+ * src/preproc/pic/common.h (common_output), src/preproc/pix/output.h
+ (output): Add color parameter to `rounded_box' member function.
+
+ * src/preproc/pic/common.cpp (common_output::rounded_box): Use it.
+
+ * src/preproc/pic/object.cpp (box_object::print): Pass `color_fill'
+ to `out->rounded_box'.
+
+2007-04-09 Michail Vidiassov <master@iaas.msu.ru>
+
+ * font/devps/generate/textmap: Add Greek letters and some more.
+
+ * src/utils/afmtodit/afmtodit.tables: Change values of `Delta',
+ `Omega', and `mu' to the ones from aglfn.txt.
+
+2007-04-08 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * tmac/s.tmac (SN): Define unconditionally.
+ (SN-STYLE): New string; define.
+
+ * NEWS, tmac/groff_ms.man, doc/groff.texinfo (SN-STYLE): Document it.
+
+2007-03-22 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/pspic.tmac: Fix harmless numeric overflow warning. Reported
+ by Jrg van den Hoff <j.van_den_hoff@fzd.de>.
+
+2007-03-20 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/trace.tmac (rn): Added.
+ (nr, ds, ds1, as, as1, substring): Restore escape character while
+ executing the macro.
+ (nr): Remove dead code.
+
+ * src/preproc/eqn/box.cpp (box::top_level): Use \E in string
+ definitions to make them traceable.
+
+2007-03-19 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cpp (get_copy): Add third argument to control
+ whether \E shall be expanded.
+ (get_char_for_escape_name): Allow \E.
+
+2007-03-15 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/s.tmac (MO, CH, pg*OH, pg*EH, pg*OF, pg*EF, *, [., .],
+ par*define-font-macro, \[hooko]): Use \E to make it traceable.
+
+ (ref*field): Add argument to control the space between previous and
+ current argument.
+ Update all callers.
+ (ref*add-N): Fix handling of opening parenthesis. Problem reported
+ by Jrg van den Hoff <j.van_den_hoff@fzd.de>.
+
+2007-03-14 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/trace.tmac (als): Added.
+ (de, de1, am, am1): Make traced macros aliased with .als work.
+
+2007-02-25 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/xditview/TODO: Add some more items.
+
+ * Makefile.comm (.man.n): Add @APPRESDIR@.
+ Sort entries.
+
+ * src/devices/xditview/gxditview.man: Document GXditview resource
+ file.
+ Other documentation enhancements based on a patch from Jrg.
+
+2007-02-25 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
+ Joerg van den Hoff <j.van_den_hoff@fzd.de>
+
+ * src/devices/xditview/GXditview.ad: Make all keys work regardless
+ of the current mouse position.
+
+2007-02-20 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/groff_man.man: Revised to improve visual appearance.
+ Reduce use of future tense.
+
+ * tmac/groff_trace.man: Revosed to improve visual appearance.
+
+2007-02-19 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ Make groff.man viewer-portable.
+
+ * tmac/groff.man: Eliminate use of .eo/.ec.
+ (.REQ): Surround args 2 through N with quotes. This will enable us
+ not to rely on the shift request, which is nonportable.
+ (ExecFF): Remove. The code is simpler without it.
+
+2007-02-18 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * tmac/groff_www.man: Viewer-portability fixes.
+
+2007-02-16 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * man/groff.man: Remove some unneeded code and a no-longer-used
+ inclusion of the www macros.
+
+2007-02-12 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/table.cpp (compute_span_width): Fix use of
+ AVAILABLE_REG.
+ (table::compute_widths): Simplify.
+
+2007-02-11 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/table.h: Don't include `stdbool.h'.
+ (table): Replace `bool' type with `char' for orthogonality.
+ Update all users.
+
+ * src/preproc/tbl/table.cpp (block_entry::do_divert): Fix usage of
+ AVAILABLE_REG and COLCOUNT_REG.
+ (table::table): Fix order call of initializers.
+ (table::~table): Deallocate `blockflag'.
+
+2007-02-09 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ A try at the new rule for block column allocation is now enabled by
+ the new `experimental' global option: The horizontal space up to the
+ right margin which is not used by columns without text blocks is
+ evenly distributed to the columns with text blocks.
+
+ It doesn't work right as yet; there appears to be some error in the
+ computation of `3avail', the available line length. The purpose of
+ this patch is (a) to make experimenting with other formulas easy,
+ and (b) leave the infrastructure for flag `experimental' in place
+ for future experiments. Do not document any behavior associated
+ with this flag!
+
+ * src/preproc/tbl/table.h: Include `stdbool.h'.
+ (table): Make `flags' public.
+ Add `count_block_columns' function.
+ Add `blockflag' array.
+ Add `EXPERIMENTAL' enumeration value.
+
+ * src/preproc/tbl/table.cpp (AVAILABLE_REG, COLCOUNT_REG): New
+ macros.
+ (table_entry): New member `parent' so that class and subclass
+ members can set a parent field. Update all users.
+ (block_entry::do_divert): Handle `EXPERIMENTAL' flag.
+ (block_entry::do_width): Set the parent's `blockflag'.
+ (table::allocate): Handle `blockflag'.
+ (table::count_block_columns): New function.
+ (compute_span_width): Adjust AVAILABLE_REG.
+ (table::compute_widths): Handle COLCOUNT_REG and AVAILABLE_REG.
+
+ * src/preproc/tbl/main.cpp (process_options): Handle `experimental'
+ option.
+
+2007-02-08 Zhao, Yu (William) <yzhao2@alcatel-lucent.com>
+
+ * src/devices/grodvi/dvi.cpp (draw_dvi_printer::draw) <'e'>: Set
+ line thickness.
+
+2007-02-08 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_out.man (offset): Make it work reliably.
+
+2007-02-07 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * man/groff_out.man: Simplify some font changes so \fP is less
+ likely to do something surprising.
+
+ * man/groff_out.man: We can simplify the command macros still
+ further if we stop trying to hide structural requests inside them.
+ Also, fix some instances of \} at start of line without a dot, and
+ make some font changes explicit in strings.
+
+ * man/groff_out.man: Cleanup -- remove now-unneeded uses of .do and
+ .cp.
+
+ * man/groff_out.man: Final step: Reduce x-command, get rid of eo/ec
+ calls and fix macros to do without them. File should now be
+ viewer-portable.
+
+ * man/groff_out.man: Fourth step: Eliminate use of eqn in favor of
+ micromotions that produce the same visual result and can be lifted
+ to XML-DocBook.
+
+ * man/groff_out.man: Third step: Reduce Da-comand, fix a
+ call-sequence bug in the original.
+
+ * man/groff_out.man: Second step: Reduce D-commmand and D-command+,
+ move font-change escapes to portable form.
+
+ * man/groff_out.man: First step in macro simplification; eliminate
+ list1..n, simplify .offset and .index_offset so they no longer
+ require groff-specific features or eqn (instead, use troff
+ micromotions for subscripting).
+
+2007-02-06 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * src/preproc/eqn/eqn.man: Minor corrections.
+
+ * tmac/an-ext.tmac: Change .UR/.UE and .MT/.ME so the start macro no
+ longer takes a second argument that is pasted to the end of the
+ generated text. Instead, the end macro takes an argument that does
+ the same thing.
+
+ * man/ditroff.man, man/groff_diff.man, man/groff.man,
+ man/groff_out.man, man/groff_tmac.man, man/roff.man,
+ src/roff/groff/groff.man, src/roff/grog/grog.man,
+ tmac/groff_man.man, tmac/groff_trace.man: Update accordingly.
+
+ * src/roff/troff/troff.man: .SY and .YS are canned macros now,
+ so we can use them here.
+
+2007-02-05 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * src/preproc/eqn/lex.cpp, src/preproc/eqn/eqn.man:
+ By popular demand, make ... set three lower dots again
+ and introduce a new predefined macro 'cdots' to set
+ three centered dots.
+
+2007-02-05 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/eqn/eqn.man: Revised.
+
+ * src/preproc/eqn/text.cpp (map, special_char_boc::output): Use
+ `const'.
+ (spacing_type): Fix typo.
+ (special_to_entity): Use `const'.
+ Remove unused variable.
+ * src/preproc/eqn/other.cpp (font_box::output): Use `const'.
+
+2007-02-05 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * src/devices/grotty/grotty.man: \m[] and \M[] aren't portable,
+ which is a shame as the effect was cute.
+
+2007-02-04 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * man/groff_tmac.man, man/groff_diff.man: Portability conversion;
+ rip out over-elaborate macrology, use .EX/.EE and .UR/.UE where
+ possible, remove preamble declarations and macros that are no
+ longer needed. Conversion checked using the protocol described in
+ tmac/TESTING-HINTS.
+
+2007-02-03 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac (LP, IP, HP): Use .ns to suppress additional
+ vertical space.
+
+2007-02-03 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * tmac/groff_man.man: Documented the extension macros, and
+ added portability advice.
+
+ * MORE.STUFF: More-stuff entries for doclifter and pic2plot.
+
+
+ Add support for MathML output to eqn.
+
+ The strategy used is very simple and relies on the fact that the box
+ models of eqn and Presentation MathML differ in only trivial ways.
+ It leaves the grammar and existing internal object structures
+ unchanged. A new global, `output_format', is defined as an
+ enumerated type with values {troff, mathml}. Most of the functions
+ and methods that emit actual output acquire a top-level conditional,
+ dispatching on this global, which has one arm for troff mode and one
+ for MathML mode. In most cases the MathML arm is drastically
+ simpler.
+
+ (This strategy could be easily generalized to support other output
+ formats. TeX is a possibility that leaps to mind.)
+
+ The only even moderately tricky changes are in the lexer. Some of
+ the predefined macros used constructs like `up', `down', `fwd',
+ `back', and `vcenter' that have no equivalents in MathML. I
+ attacked this problem in these ways:
+
+ 1. I eliminated three uses of `back' to compose characters in favor
+ of using equivalent groff specials `\(<<', `\(>>', and `\(<>'
+ that did not exist when these macros were written. (This will be
+ a quality improvement for troff users.)
+
+ 2. I eliminated one use of `vcenter' by using \\(md. (Likewise...)
+
+ 3. I then split the table of pre-definitions in three; one large
+ common table and two small troff-specific and MathML-specific
+ tables. Use of troff-only operations (up, down, back, fwd,
+ vcenter) is now confined to the former. The latter now uses
+ `size big' and drops out the explicit positioning operations,
+ counting on MathML processors to do them.
+
+ POTENTIAL TROUBLE SPOTS:
+
+ Here are notes for reviewers on places I'm not 100% sure I've done
+ the right thing:
+
+ * In the process of preparing the troff table, I translated three
+ definitions (dot_def, dotdot_def, and utilde def) that previously
+ used explicit \v escapes to use `up' and `down' instead. I
+ modeled the new definitions on the way `vec' and `dyad' work, but
+ it's possible I got something subtle wrong.
+
+ * I'm not certain the MathML implementation of font_box::output() is
+ right, because I don't quite get what the switcheroo between
+ `current_roman_font' and `old_roman_font' is supposed to
+ accomplish. It does seem to generare good MathML, though.
+
+ Finally, I made one purely cosmetic change in `text.cpp'; I replaced
+ with an enum some magic numbers for spacing types that I thought
+ were too ugly to live.
+
+ REMAINING ISSUES:
+
+ The entirety of eqn is translated when `-TMathML' is specified,
+ with the following exceptions...
+
+ Limitations that cannot be fixed include non-support for special,
+ up/down/fwd/back, and vcenter.
+
+ Limitations that might be fixable include non-support for mark and
+ lineup. I will investigate further, but if these can be implemented
+ at all it's going to be in a very complicated and nasty way.
+
+ The way character boxes are output means that each digit of a
+ multi-digit number gets its own <mn></mn> tag pair in the MathHTML.
+ While this is not technically wrong for Presentation MathML, it is
+ ugly and inefficient. Fixing this will require implementing a
+ little state machine in the `text.cpp' output method.
+
+ * src/preproc/eqn/box.cpp, src/preproc/eqn/delim.cpp,
+ src/preproc/eqn/eqn.h, src/preproc/eqn/eqn.man,
+ src/preproc/eqn/lex.cpp, src/preproc/eqn/limit.cpp,
+ src/preproc/eqn/list.cpp, src/preproc/eqn/main.cpp,
+ src/preproc/eqn/other.cpp, src/preproc/eqn/over.cpp,
+ src/preproc/eqn/pile.cpp, src/preproc/eqn/script.cpp,
+ src/preproc/eqn/sqrt.cpp, src/preproc/eqn/text.cpp,
+ src/preproc/eqn/eqn.man: MathML output mode.
+
+ * NEWS: Document it.
+
+2007-02-02 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * src/roff/groff/groff.man: Converted to use .SY/.OP/.YS
+ and for cross-viewer portability. Conversion checked
+ using the protocol described in tmac/TESTING-HINTS.
+
+2007-02-02 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-ext.tmac (ME): Don't use `\:'.
+
+ * src/roff/grog/grog.man: Further refinements and normalizations.
+
+2007-02-02 Eric S. Raymond <esr@snark.thyrsus.com>
+
+ * src/roff/grog/grog.man: Converted to use .SY/.OP/.YS and for
+ cross-viewer portability. Conversion checked using the protocol
+ described in tmac/TESTING-HINTS.
+
+2007-02-01 Eric S. Raymond <esr@thyrsus.com>
+
+ * tmac/TESTING-HINTS: Added.
+
+2007-02-01 Eric S. Raymond <esr@thyrsus.com>
+
+ Enable the support for Bell archaisms on .SC, so the `-r bell'
+ switch is no longer needed to format old AT&T papers like
+ the EQN user guide.
+
+ * tmac/s.tmac (.SC, .UC, .P1, .P2): Updated.
+
+ * tmac/groff_ms.man, doc/groff.texinfo, NEWS: Updated.
+
+2007-02-01 Eric S. Raymond <esr@thyrsus.com>
+
+ Add some Bell labs extensions to the -ms macros.
+
+ * tmac/s.tmac (.SC, .UC, .P1, .P2) [bell]: New macros.
+
+ * tmac/groff_ms.man, doc/groff.texinfo, NEWS: Document `-r bell'.
+
+2007-01-30 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-ext.tmac (\n[EX]): Rename to \n[mX].
+ (\n[mH]): New register (set if grohtml is used).
+ (\n[SY]): Rename to \n[mS].
+ (\n[a]): Rename to \n[mA].
+ (\n[i]): Rename to \n[mI].
+ (mU): New auxiliary input trap macro.
+ (UR, UE): Replace stub with real definition.
+ (URL): Remove.
+ (MT, ME): New macros.
+ (MTO): Remove.
+ (EX, EE): Don't insert vertical space.
+ Use a register to store (and restore) the current font.
+
+ * man/ditroff.man, man/groff_diff.man, man/roff.man: Revised, based
+ on patches from Eric Raymond.
+ Fix URL addresses.
+
+2007-01-22 Gaius Mulley <gaius@glam.ac.uk>
+
+ * tmac/an-old.tmac (an-trap, HP): Make `HP' work as expected.
+
+2007-01-22 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-ext.tmac: Protect against being sourced twice.
+ (URL, EE): Use always two backslashes.
+ (MTO): New macro.
+
+2007-01-16 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-ext.tmac: Remove code for grodvi.
+ (SY): Fix typos.
+ Don't insert empty line.
+ (URL, TQ): Fix typos.
+
+2007-01-14 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-ext.tmac: New file, containing extension macros
+ for -man. See discussion on the groff mailing list for
+ background information.
+ * tmac/an-old.tmac: Load an-ext.tmac.
+ Decorate .ds and as with comment escapes where appropriate.
+ * tmac/Makefile.sub (NORMALFILES): Add an-ext.tmac.
+
+2007-01-05 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/tbl.man: Document .T# and \n[TW].
+
+2007-01-04 Gaius Mulley <gaius@glam.ac.uk>
+
+ Make -me macros ready for grohtml.
+
+ * tmac/e.tmac: Load devtag.tmac.
+ (need_eo_h, need_eo_tl, need_tl): New registers.
+ (check_need_title, (x-html, )x-html, xp-html): New macros.
+ (@h, hl, ip, @p, sh, (b, (l, EQ, EN, TS, TE, PS, PE, GS, GE, r, i,
+ b, rb, bi, bx, (x, )x, xp): Adapt for use with grohtml.
+ (bp): Rename to @b only if output device is not html.
+
+2007-01-01 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_font.man: Document empty lines.
+
+ * src/utils/afmtodit/afmtodit.pl: Always print a header comment at
+ the very beginning of the output.
+ [!$opt_x]: Fix typo.
+
+ * font/devps/*: Regenerate font definition files.
+
+2007-01-01 Werner LEMBERG <wl@gnu.org>
+
+ * font/devps/generate/Makefile (AFMTODIT): Use -c flag.
+
+ * font/devps/*: Regenerate font definition files.
+
+2006-12-31 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.in (oldfontdir): New variable.
+ (MDEFINES): Add $(oldfontdir).
+ (uninstall_dirs): Remove `current' link.
+ Remove $(oldfontdir).
+
+ * Makefile.comm (oldfontsubdir): New variable.
+ (install_dev): Install files collected in $(OLDDEVFILES) into
+ $(oldfontsubdir).
+ (uninstall_dev): Remove data in $(oldfontsubdir).
+ (.man.n): Handle @OLDFONTDIR@.
+
+ * src/devices/grodvi/grodvi.man, src/devices/grohtml/grohtml.man,
+ src/devices/grolbp/grolbp.man, src/devices/grolj4/grolj4.man,
+ src/devices/grotty/grotty.man, src/devices/xditview/gxditview.man:
+ Document GROFF_FONT_PATH.
+
+ * src/devices/grops/grops.man: Document GROFF_FONT_PATH and
+ old font description files.
+
+ * font/devps/Makefile.sub (OLDDISTFILES, OLDDEVFILES): New
+ variables.
+
+ * font/devps/old/*: New directory, holding the previous version
+ of the 35 Adobe core font description files.
+
+ * font/devps/*: Regenerated the 35 Adobe core fonts, using the
+ Adobe-Core35_AFMs-229.tar.bz2 bundle from ftp.dante.de.
+
+ * NEWS: Document font update.
+
+2006-12-31 Werner LEMBERG <wl@gnu.org>
+
+ * font/devps/generate/Makefile (symbolsl.afm): Use $(srcdir).
+
+ * Makefile.comm (fonts): New (empty) target.
+ * Makefile.in (TARGETS): Add `fonts'.
+
+ * MANIFEST: Add `chem'.
+
+ * doc/groff.texinfo (Changing Fonts): Font translations with .ftr
+ can't be chained.
+
+2006-12-26 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/grn/hdb.cpp: Include gprint.h later. From NetBSD.
+
+2006-12-19 Werner LEMBERG <wl@gnu.org>
+
+ Add support for German. For activation, simply use -mde or -mden
+ (for traditional and new orthgraphy, respectively) as the last
+ macro package.
+
+ * tmac/de.tmac, tmac/den.tmac, tmac/hyphen.det, tmac/hyphen.den,
+ tmac/hyphenex.det: New files, partly taken from CTAN.
+ * LICENSES: Updated list of hyphenation patterns.
+ * man/groff_tmac.man: Mention de.tmac and den.tmac.
+ * NEWS: Updated.
+
+2006-12-11 Werner LEMBERG <wl@gnu.org>
+
+ Support up to 32 macro arguments in pic (and up to 16 on EBCDIC
+ hosts).
+
+ * src/preproc/pic/lex.cpp (ARG1): Redefine. Update all users.
+ (MAX_ARG): New macro. Use it everywhere to replace hard-coded
+ limit of 9 arguments.
+ (process_body): Handle argument numbers with more than a single
+ digit.
+ (interpolate_macro_with_args): Protect against exceeding number of
+ arguments.
+
+ * NEWS, src/preproc/pic/pic.man, doc/pic.ms: Document it.
+
+2006-12-10 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.in (site.exp, docheck): Commented out. Not working
+ currently.
+ (check): Just emit dummy message.
+
+2006-12-08 Werner LEMBERG <wl@gnu.org>
+
+ During installation, create soft link from <version> to `current' in
+ <datadir>/groff.
+
+ * Makefile.comm (install): Renamed to...
+ (do_install): This.
+ (prefix_must_exist): Removed. Code moved to Makefile.in.
+
+ * Makefile.in (TARGETS): Remove `install'.
+
+ (install): New target which first creates the directory given by
+ --prefix, then calling `make' to do the installation, and finishing
+ with the creation of the soft link.
+
+2006-11-21 Werner LEMBERG <wl@gnu.org>
+
+ * doc/Makefile.sub (uninstall_sub): Fix names for info files.
+
+2006-11-18 Werner LEMBERG <wl@gnu.org>
+
+ * man/roff.man, doc/groff.texinfo: Improve history of roff, based on
+ information from Tom Van Vleck <thvv@multicians.org>.
+
+2006-11-16 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/62bit.tmac: New macro package.
+ * tmac/Makefile.sub (NORMALFILES): Add it.
+ * NEWS: Document it.
+
+ * tmac/trace.tmac: Protect against being loaded again.
+ (nr): Always show result.
+
+ * doc/groff.texinfo (Input Encodings): Document latin-5.
+
+ * man/grof_tmac.man: Document sv, latinX, cp1047, 60bit, ec.
+
+2006-11-13 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo (Page Location Traps) [.wh]: Give more details
+ on negative trap positions.
+
+2006-11-10 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.comm (.man.n): Handle @DATASUBDIR@.
+
+2006-11-09 Werner LEMBERG <wl@gnu.org>
+
+ * INSTALL: Move information about external installation from
+ INSTALL.gen into this file.
+ Updated.
+
+ * INSTALL.gen: Update to new version (from texinfo CVS).
+
+2006-11-09 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * INSTALL.gen: Extend the file by information on `external
+ installation'. Reorder the installation instruction as `normal
+ installation'.
+
+2006-11-08 Werner LEMBERG <wl@gnu.org>
+
+ * doc/Makefile.sub (install_data): Take care of proper paths while
+ installing info files. Bug reported by
+ Bernd Warken <groff-bernd.warken-72@web.de>.
+
+2006-11-06 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * src/roff/grog/grog.pl: Rewrite.
+ - Call by `#! /usr/bin/env perl'. That isn't replaced.
+ - Rename usage() to version().
+ - Use warnings.
+ - For `use strict', start all global variables with an upper case
+ character. Use `my' for all variables. Use several new variables.
+ - Add option `-h'.
+ - Add copyright to GPL and Emacs comment.
+ - Handle several `-m*' options.
+ - Fix handling of `-ms' and `-mm'. Add .TL and .NH.
+ - Allow options after file names.
+ - Allow only one `-' parameter (standard input).
+ - Add option abbreviations.
+ - Expand the usage information.
+ - Add `chem'.
+ - Add single quote "'" as additional first character and allow
+ arbitrary space after the first character.
+
+ * src/roff/grog/grog.sh: Rewrite.
+ - Remove option `-e' of `sed'.
+ - Allow file names with space characters.
+ - Add option `-h'.
+ - Add copyright to GPL.
+ - Handle several `-m*' options.
+ - Fix handling of `-ms' and `-mm'. Add .TL and .NH.
+ - Allow options after file names.
+ - Allow only one `-' parameter (standard input).
+ - Add option abbreviations.
+ - Expand the usage information.
+ - Add `chem'.
+ - Add single quote "'" as additional first character and allow
+ arbitrary space after the first character.
+
+ * src/roff/grog/Makefile.sub:
+ - Add copyright to GPL.
+ - Remove `grog:'. Move `grog.old:' to `grog:' in order to have a
+ fair chance to choose between the shell version and the Perl
+ version of `grog'. This is now again comparable to grog in groff
+ version 1.10.
+
+ * src/roff/grog/grog.man: Rewrite.
+ - Move the license to GPL.
+ - New sections: OPTIONS, DETAILS, EXAMPLES, COPYING.
+ - Take over some setup and macros from `groffer'.
+ - Add information on options.
+
+2006-10-28 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/trace.tmac: Improve tracing of `.nr'.
+ Trace `.substring' also.
+
+ * NEWS: Updated.
+
+2006-10-28 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * man/roff.man, src/roff/groff/groff.man: Add `chem', fix position
+ of groff development site, fix fonts.
+
+ * News: Add information on `chem' and `groffer'.
+
+2006-10-26 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * Makefile.in (OTHERDIRS, NOMAKEDIRS): Add `chem' bundle.
+
+2006-10-26 Werner LEMBERG <wl@gnu.org>
+
+ Add `\$^' escape to handle the parameters to a macro as a string
+ argument.
+
+ * src/roff/troff/input.h (DOUBLE_QUOTE): New special character.
+
+ * src/roff/troff/input.cpp (input_iterator, input_stack,
+ macro_iterator): Add `space_follows_arg' member function.
+ (macro_iterator::add_arg): Add parameter to set the `space_follows'
+ flag.
+ (arg_list): Add member `space_follows'.
+ Update constructor and all callers.
+ (decode_args): Store discarded double quotes.
+ (interpolate_args): Handle DOUBLE_QUOTE.
+ Add `\$^' escape.
+ (get_copy, token::next, composite_glyph_name): Handle DOUBLE_QUOTE.
+
+ * tmac/trace.tmac: Trace .nr, .ds, .ds1, .as, .as1.
+
+ * docs/groff.texinfo (Parameters), man/groff.man,
+ man/groff_diff.man, NEWS: Document it.
+
+2006-10-24 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * Makefile.in (NOMAKEDIRS): Add groffer subdirectories.
+
+2006-10-24 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/groff_trace.man: Mention problem with `\\\\'.
+
+2006-10-23 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo (Expressions): Improve documentation of `!'.
+
+ * tmac/trace.tmac (return): Don't call `substring'.
+
+2006-09-10 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cpp (read_size): Revert previous change
+ w.r.t. `\s-[-...]'.
+
+ * doc/groff.texinfo (Fractional Size Types): Clarify syntax of \s.
+
+2006-09-09 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cpp (read_size): Fix `\s[-\n[.s]]' so that it
+ behave the same as `\s-[\n[.s]]' (this is, emit a warning and set
+ point size to 1). Reported by Gunnar Ritter.
+ Also catch `\s-[-...]' and friends (causing an error).
+
+2006-09-06 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/env.cpp (environment::do_break): Insert zero-width
+ space only if there is no previous space. This fixes a bug which
+ caused unwanted filling of the last line in a paragraph. Thanks to
+ Gunnar Ritter for an analysis.
+
+2006-09-03 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/groff/groff.cpp (main): Pass -U flag to pic also.
+ Reported by Jennifer Sayers <jenjen@isu.usyd.edu.au>.
+
+2006-09-01 Nick Stoughton <nick@msbit.com>
+ Werner LEMBERG <wl@gnu.org>
+
+ Add a request `pev' to print environment information (similar to
+ `pnr' and `ptr' to print number registers and traps).
+
+ * src/roff/troff/env.h (environment): Add member function print_env.
+
+ * src/roff/troff/env.cpp: (environment::print_env): New function to
+ print a given environment state.
+ (print_env): New global function to iterate through the
+ environments, printing each one.
+ (init_env_requests): Register `pev'.
+
+ * doc/groff.texinfo (Debugging), man/groff.man, man/groff_diff.man,
+ NEWS: Document `pev' request.
+
+2006-09-01 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * src/preproc/soelim/soelim.cpp (usage): Fix option argument of
+ `-I' to `dir'.
+
+2006-09-01 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/pic/main.cpp (usage): Add missing options.
+
+2006-08-25 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/soelim/soelim.man: Document how to insert `\' and ` '
+ in file names.
+
+2006-08-19 Werner LEMBERG <wl@gnu.org>
+
+ * configure: Regenerated.
+
+2006-08-18 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * m4/groff.m4 (GROFF_MAKEINFO): Correct `makeinfo version testing
+ logic; it previously caused an `expr' syntax error, if no version of
+ `makinfo' was present. Also, remove dependency on `makeinfo' in VPATH
+ builds, if an up to date `groff.info' is present in either `builddir'
+ or in `srcdir'.
+
+2006-08-12 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
+
+ * font/devps/prologue.ps: Add BPhook.
+
+ * src/devices/grops/grops.man: Document BPHook.
+ Reorder some sections for better readability.
+
+2006-08-12 Werner LEMBERG <wl@gnu.org>
+
+ * src/include/lib.h (getlocale): New macro.
+ (setlocale, LC_ALL, LC_CTYPE) [!HAVE_SETLOCALE]: Define, as
+ suggested by Bruno.
+
+ * src/preproc/preconv/preconv.cpp (main): Use getlocale.
+
+2006-08-11 Werner LEMBERG <wl@gnu.org>
+
+ Add new flag to .cflags to enable hyphenation without looking at
+ hcode values.
+
+ * src/roff/troff/charinfo.h (charinfo): New enumeration value
+ `IGNORE_HCODES'.
+ New member function `ignore_hcodes'.
+
+ * src/roff/troff/node.cpp (break_char_node::add_self,
+ node::add_char): Updated.
+
+ * doc/groff.texinfo, man/groff_diff.man, NEWS: Document it.
+
+2006-08-09 Werner LEMBERG <wl@gnu.org>
+
+ Support composite Unicode characters again. Reported by Colin.
+
+ * font/devhtml/R.proto: Renamed to...
+ * font/devhtml/R.in: This.
+
+ * font/devutf8/R.proto: Renamed to...
+ * font/devutf8/R.in: This.
+ Add `charset' line.
+
+ * font/make-Rproto: New script.
+ * font/devhtml/R.proto, font/devutf8/R.proto: Generated.
+
+2006-07-26 Werner LEMBERG <wl@gnu.org>
+
+ * README: Fix description of CVS access. Reported by Joachim.
+
+2006-07-11 Werner LEMBERG <wl@gnu.org>
+
+ Add a request `.fzoom' and a number register `.zoom' to magnify
+ fonts.
+
+ * src/include/font.h (font): Add member variable `zoom'.
+ Add member functions `set_zoom' and `get_zoom'.
+ Remove `static' attribute from `scale' member function.
+
+ * src/libs/libgroff/font.cpp (font::font): Updated.
+ (scale_round): New version with three parameters to handle zoom
+ factor.
+ (font::scale, font::get_width): Handle zoom factor.
+ (font::set_zoom, font::get_zoom): New functions.
+ (font::load): Handle `zoom' while computing `space_width'.
+
+ * src/roff/troff/env.h: Declare `env_get_zoom'.
+ (environment): Add member function `get_zoom'.
+
+ * src/roff/troff/env.cpp (environment::get_zoom): New function.
+ (init_env_requests): Initialize `.zoom' register.
+
+ * src/roff/troff/node.cpp (font_info): New member functions
+ `set_zoom' and `get_zoom'.
+ (tfont): New member function `get_zoom'.
+ (env_get_zoom): New function.
+ (troff_output_file::set_font): Handle zoom factor.
+ (font_zoom_request): New function.
+ (init_node_requests): Initialize `fzoom' request.
+
+ * docs/groff.texinfo (Changing Fonts), man/groff.man,
+ man/groff_diff.man, NEWS: Document `fzoom' request and `.zoom'
+ register.
+
+ * src/roff/troff/TODO: Updated.
+
+2006-07-10 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo (Drawing Requests): Improve documentation of
+ \D'P ...'.
+
+2006-07-02 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_tmac.man: Document usage of .PSPIC within diversions.
+
+2006-07-01 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/pspic.tmac: Make .PSPIC work for all devices.
+ Print image file name for devices which don't support PS image
+ inclusion.
+ Handle multiple inclusions.
+ Add lots of comments.
+
+ * tmac/dvi.tmac, tmac/html.tmac, tmac/ps.tmac: Don't load
+ pspic.tmac.
+
+ * tmac/troffrc: Load pspic.tmac.
+
+ * man/groff_tmac.man: Update .PSPIC documentation.
+
+ * NEWS: Updated.
+
+2006-06-29 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cpp (interpolate_macro):
+ s/probably/possibly/, as suggested by Keith.
+
+2006-06-28 Werner LEMBERG <wl@gnu.org>
+
+ Add support for \D'p...' to grotty.
+
+ * src/devices/grotty/grotty.cpp (tty_printer::draw): Move most of
+ its code to...
+ (tty_printer::line): This function.
+ (tty_printer::draw): Rewritten; just call either draw_line or
+ draw_polygon.
+ (tty_printer::draw_line, tty_printer::draw_polygon): New functions.
+
+ * src/devices/grotty/grotty.man, NEWS: Document it.
+
+2006-06-27 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/refer/command.h (have_bibliography): New variable
+ declaration.
+
+ * src/preproc/refer/command.cpp (bibliography_command): Set
+ `have_bibliography'.
+
+ * src/preproc/refer/refer.cpp: Initialize `have_bibliography'.
+ (output_references): Emit warning only if `have_bibliography' is
+ set.
+
+2006-06-15 Michail Vidiassov <master@iaas.msu.ru>
+
+ * font/devps/Makefile.sub (DISTFILES): Add freeeuro.afm.
+ * font/devps/generate/Makefile (clean): Don't remove symbolsl.afm
+ and zapfdr.afm.
+
+2006-06-15 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/tbl.man: Document limitations of .TS/.TE within a
+ macro (as suggested by Tadziu Hoffmann).
+
+2006-06-12 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/tbl.man: Add example for use of .TS/.TE within a
+ macro (as suggested by Tadziu Hoffmann).
+
+2006-06-05 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/strip.sed: Strip `\#' also.
+
+ * doc/groff.texinfo (Operators in Conditionals): Document usage of
+ \? for string comparison.
+
+2006-06-04 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Add more index entries for copy-in mode.
+ (Changing Fonts) <.ft>: Document that a font definition file must
+ not be called `DESC'.
+
+2006-05-31 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/input.cpp (token::next) <\N>: Catch negative values
+ here.
+
+ * doc/Makefile.sub (EXAMPLEFILES): Move gnu.eps to...
+ (PROCESSEDEXAMPLEFILES): Here.
+
+2006-05-30 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/font.cpp (font::load): Reject fonts called
+ `DESC'.
+ Reduce number of false positives for `.if F ...' conditionals.
+ Improve warning messages.
+
+2006-05-29 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/Makefile.sub: Add copyright notice.
+ (NORMALFILES): Add man.tmac and ms.tmac.
+ (SPECIALFILES): Remove man.tmac and ms.tmac.
+ (CLEANADD): Remove man.tmac-sed and ms.tmac-sed.
+ (install_data, uninstall_sub): Don't handle man.tmac and ms.tmac
+ specially.
+ (stamp-sed): Don't handle man.tmac and ms.tmac.
+ Remove obsolete components in sed's regexp.
+
+ * doc/Makefile.sub (EXAMPLEFILES): Add gnu.eps.
+
+ * Makefile.in (OTHERDIRS, NOMAKEDIRS): Add hdtbl.
+
+2006-05-28 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo (History): Correct death circumstances of Joe
+ Ossanna.
+
+2006-05-27 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac (an-do-tag): Simplify.
+
+2006-05-26 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/an-old.tmac (an-do-tag): Make margin characters work.
+ (an-header, an-p-footer): Use named environment.
+
+ * src/roff/troff/env.cpp (environment::copy): Copy margin character
+ node.
+
+2006-05-21 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/trace.tmac (de1): Fix serious typo (.di -> .do) and minor
+ omissions.
+
+2006-05-11 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * src/roff/groff/groff.man: Remove superfluous word `intermediate'.
+
+2006-05-10 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * src/roff/groff/groff.man: Update copyright notice.
+ Improved wording to describe effect of `-Z' option.
+
+2006-05-06 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/www.tmac: Decorate `.ds' with trailing `\"' where missing.
+ Normalize handling of `"' in arguments.
+ (PIMG): Remove debug message.
+ Simplify code.
+
+2006-05-05 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grohtml/post-html.cpp (page::add_and_encode): Don't
+ swallow character immediately after `\[...]'.
+ Simplify code.
+
+2006-05-02 Gaius Mulley <gaius@glam.ac.uk>
+
+ * tmac/www.tmac (PIMG): Fix the HTML device specific components.
+
+2006-05-02 Larry Kollar <kollar@alltel.net>
+
+ * tmac/www.tmac (PIMG): Really default to `-C' if the alignment
+ option is missing.
+
+2006-04-30 Michail Vidiassov <master@iaas.msu.ru>
+
+ * src/utils/afmtodit/afmtodit.pl: New option `-c' to add font
+ information as a comment in output.
+ * src/utils/afmtodit/afmtodit.man, NEWS: Document it.
+
+2006-04-26 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grohtml/post-html.cpp (html_printer::~html_printer):
+ Handle current_paragraph only if it is non-NULL.
+
+ * src/libs/libdriver/input.cpp (parse_x_command <'F'>, do_file
+ <'F'>): Use `get_extended_arg' to behave as documented. Reported by
+ Bill Ward <william.a.ward.jr@erdc.usace.army.mil>.
+
+
+ Surround the (pseudo) file name for the .pso request with `<' and
+ `>'.
+
+ * src/roff/troff/node.cpp (real_output_file, troff_output_file): Add
+ second parameter to `really_put_filename' and `put_filename'.
+ (troff_output_file::really_put_filename): Emit `<' and `>' around
+ filename if second argument is set.
+ * src/roff/troff/node.h: Updated.
+
+ * src/roff/troff/input.cpp (file_iterator::file_iterator,
+ file_iterator::set_location): Update to changes in node.cpp.
+
+2006-04-25 Tetsurou Okazaki <okazaki@FreeBSD.org>
+
+ * src/preproc/preconv/preconv.cpp (do_file): Fix conditional
+ preprocessor expression (I18N -> HAVE_ICONV).
+ (main): Fix handling of option `-h'.
+ Fix conditional preprocessor expression.
+
+2006-04-04 Werner LEMBERG <wl@gnu.org>
+
+ Implement new number register `.br' which is set to 1 if a macro has
+ been called as .foo and to 0 if called as 'bar. This is useful for
+ -mtrace so that requests can be reliably traced too.
+
+ * src/roff/troff/input.cpp (input_iterator): Add virtual function
+ `get_break_flag'.
+ (macro_iterator): Add `with_break' member and `get_break_flag'
+ function.
+ Update constructors.
+ (input_stack): Add function `get_break_flag'.
+ (break_flag_reg): New number register class.
+ (input_init_requests): Register `.br'.
+
+ * src/roff/troff/TODO: Updated.
+
+ * tmac/trace.tmac: s/!!sp/!!!sp/.
+ Modify definitions of `de', `de1', `am', and `am1' to use \n[.br].
+
+ * docs/groff.texinfo (Requests), man/groff.man, man/groff_diff.man,
+ NEWS: Document it.
+
+2006-03-29 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grops/ps.cpp: s/must not/should not/ in warning
+ messages where appropriate.
+
+2006-03-28 Werner LEMBERG <wl@gnu.org>
+
+ * configure.ac: Call AC_PROG_EGREP.
+ * configure: Regenerated.
+
+ * Makefile.in (EGREP): New variable.
+ (MDEFINES): Add $(EGREP).
+
+ * src/roff/grog/grog.sh: Treat .TH between .TS and .TE properly
+ (bug reported by Robert Goulding <Goulding.2@nd.edu>).
+ Use @EGREP@.
+
+ * src/roff/grog/Makefile.sub (grog, grog.old): Use $(EGREP).
+
+2006-03-27 Werner LEMBERG <wl@gnu.org>
+
+ Add two requests `.device' and `.devicem' which are equivalent to
+ `\X' and `\Y', respectively.
+
+ * src/roff/troff/input.cpp (device_request, device_macro_request):
+ New functions.
+ (init_input_requests): Register them.
+
+ * doc/groff.texinfo (Postprocessor Access), man/groff_diff.man,
+ man/groff.man, NEWS: Document them.
+
+2006-03-27 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/roff/troff/input.cpp (encode_char): Emit special characters
+ for -Thtml as `\[...]'.
+ * src/devices/grohtml/post-html.cpp (page::add_and_encode): Updated.
+
+ * doc/groff.texinfo (Postprocessor Access) <\X>: Updated.
+
+2006-03-27 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/Makefile.sub (NORMALFILES, SPECIALFILES): Add various missing
+ files.
+
+2006-03-26 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo (Writing Macros): More documentation on
+ end-of-macro symbol of `.de'.
+ (Diversions): Minor addition to `.di' description.
+
+ * src/devices/grops/grops.man: Some clarifications regarding
+ insertion of PostScript snippets.
+
+2006-03-25 Michail Vidiassov <master@iaas.msu.ru>
+
+ Add rules to generate `symbolsl.afm'.
+
+ * font/devps/generate/zapfdr.sed,
+ font/devps/generate/symbolsl.awk: New files.
+
+ * font/devps/generate/Makefile (symbolfont, PRINTAFM): New
+ variables.
+ (SS, clean): Updated.
+ (freeeuro.afm): Use $(srcdir).
+ (symbolsl.afm): New rule.
+ (zapfdr.afm): Use zapfdr.sed.
+
+2006-03-22 Dwight Aplevich <aplevich@uwaterloo.ca>
+
+ * src/preproc/pic/pic.y (expr <INT>): Fix code.
+
+2006-03-22 Jrgen Grahn <jgrahn@algonet.se>
+
+ * tmac/sv.tmac: Add missing translations and activate support for
+ other macro packages.
+
+2006-03-21 Francis GUDIN <fgudin@nerim.net>
+
+ * tmac/doc-syms (Dx): New macro to identify DragonFly.
+ (doc-str-St--ieee1275-94, doc-str-St--isoC-amd1,
+ doc-str-St--isoC-tcor1, doc-str-St--isoC-tcor2): New standard
+ strings.
+ (doc-operating-system-FreeBSD-5.5, doc-operating-system-FreeBSD-7.0,
+ doc-operating-system-NetBSD-1.6.3, doc-operating-system-NetBSD-4.0
+ doc-operating-system-DragonFly-*): New operating system strings.
+
+ * tmac/groff_mdoc.man, NEWS: Document `Dx'.
+
+2006-03-21 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/pic/pic.y (object_spec THEN): For compatibility with
+ both DWB pic and dpic, make
+
+ right;
+ line then down;
+
+ equal to
+
+ right;
+ line right then down;
+
+ instead of
+
+ right;
+ line 0 then down;
+
+ * doc/pic.ms: Document this.
+
+2006-03-20 Werner LEMBERG <wl@gnu.org>
+
+ * doc/pic.ms: With permission of Eric Raymond, put it under the
+ GPL.
+
+ * NEWS: Updated.
+
+2006-03-19 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/pic/pic.y (expr <INT>): Really return integer part.
+
+ * src/preproc/pic/objects.cpp (object_spec::make_line): Handle `at'
+ attribute in combination with `with'. Bug reported by Jennifer
+ Sayers <jenjen@mail.usyd.edu.au>.
+
+2006-03-19 Miklos Somogyi <msom@netspace.net.au>
+
+ * doc/groff.texinfo (Manipulating Spacing): Improve documentation of
+ `.sp'.
+
+2006-03-18 Werner LEMBERG <wl@gnu.org>
+
+ * LICENSE: Renamed to...
+ * LICENSES: This. Collect all licensing information in this file.
+ * tmac/README, src/libs/snprintf/README: Removed.
+
+ * src/devices/grops/grops.man: Add section how to install fonts.
+
+ * src/utils/xtotroff/xtotroff.c: Add GPL.
+
+2006-03-17 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.comm (.y.cpp): Fix #line arguments in output.
+
+2006-03-13 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/tbl/tbl.man: Mention default length of text blocks.
+
+ * tmac/doc-common (Os): Add more Darwin versions.
+ * tmac/groff_mdoc.man: Document them.
+
+ * doc/groff.texinfo (Operators in Conditionals): Mention that `c'
+ works with \N'...' also.
+ * man/groff_diff.man: Ditto. Remove use of future tense where
+ possible.
+
+2006-03-12 Michail Vidiassov <master@iaas.msu.ru>
+
+ * font/devps/generate/make-zapfdr, font/devps/symbolsl.ps,
+ font/devps/zapfdr.ps: Add `%%EndComments' line.
+
+2006-03-10 Larry Kollar <kollar@alltel.net>
+
+ * doc/groff.texinfo (Headers and footers): Document PT, HD, and BT.
+
+2006-03-10 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grops/ps.cpp (ps_printer::do_exec, ps_printer::do_def,
+ ps_printer::do_mdef): Overlong lines now cause a warning message,
+ not an error.
+
+2006-03-09 Werner LEMBERG <wl@gnu.org>
+
+ * font/devps/generate/make-zapfdr: New script for generating
+ `zapfdr.ps'.
+
+2006-03-08 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.css (pre): Fix `background-color' value.
+
+2006-03-04 Larry Kollar <kollar@alltel.net>
+
+ * tmac/groff_ms.man: Document PT, HD, and BT.
+
+2006-03-04 Werner LEMBERG <wl@gnu.org>
+
+ * src/roff/troff/node.cpp (make_glyph_node): Improve warning message
+ for single-letter glyph names.
+
+2006-03-02 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/sv.tmac: New file; currently holding only the Swedish strings
+ for -mm.
+ * tmac/hyphen.sv: New hyphenation pattern file for Swedish, taken
+ from CTAN.
+ * tmac/README: Updated.
+
+2006-02-27 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/trans.tmac (Liec, Letdate, Letns!14): Add it (for -mm).
+ * tmac/fr.tmac: Add French translations.
+
+ * tmac/composite.tmac: Add entry for `:'.
+
+2006-02-26 Werner LEMBERG <wl@gnu.org>
+
+ * doc/Makefile.sub (HTMLEXAMPLEFILESALL): New variable.
+ (CLEANADD): Use it.
+ (install_html, uninstall_sub): Updated.
+
+2006-02-26 Bruno Haible <bruno@clisp.org>
+
+ Introduce Unicode fonts.
+
+ * font/devhtml/DESC.proto: Mark as unicode.
+ * font/devhtml/R.proto: Remove all charset entries that are already
+ in glyphuni.cpp.
+ * font/devutf8/DESC.proto: Mark as unicode.
+ * font/devutf8/R.proto: Remove all charset entries.
+ * src/include/font.h (font): New static field `is_unicode'.
+ Change order of fields.
+ * src/libs/libgroff/font.cpp: Include unicode.h.
+ (font::font): Update for changed order of fields.
+ (font::contains, font::get_width, font::get_height, font::get_depth,
+ font::get_italic_correction, font::get_left_italic_correction,
+ font::get_subscript_correction, font::get_character_type,
+ font::get_code, font::get_special_device_encoding): Handle both the
+ explicitly enumerated glyphs and use general code for Unicode fonts.
+ (font::load): Make the charset section optional when the font is
+ declared unicode.
+ (font::load_desc): Recognize the `unicode' attribute.
+ * src/libs/libgroff/fontfile.cpp (font::is_unicode): New variable.
+
+2006-02-26 Claudio Fontana <claudio@gnu.org>
+
+ * Makefile.in: Add comment about DESTDIR.
+
+ * Makefile.sub: Add DESTDIR to install and uninstall targets
+ to support staged installations.
+ * Makefile.comm: Likewise.
+ * doc/Makefile.sub: Likewise.
+ * contrib/eqn2graph/Makefile.sub: Likewise.
+ * contrib/grap2graph/Makefile.sub: Likewise.
+ * contrib/pic2graph/Makefile.sub: Likewise.
+ * src/devices/xditview/Makefile.sub: Likewise.
+ * src/preproc/eqn/Makefile.sub: Likewise.
+ * src/roff/grog/Makefile.sub: Likewise.
+ * src/roff/nroff/Makefile.sub: Likewise.
+ * src/utils/afmtodit/Makefile.sub: Likewise.
+ * src/utils/indxbib/Makefile.sub: Likewise.
+ * tmac/Makefile.sub: Likewise.
+
+2006-02-24 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list): Use entry
+ for \-.
+ Remove commented out entries for \' and \` (there are no such glyph
+ names).
+
+ * src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list): Remove
+ commented out entries for \' and \`.
+
+
+ * */*: s/legal/valid/ where appropriate.
+
+2006-06-23 Werner LEMBERG <wl@gnu.org>
+
+ * font/devhtml/R.proto, font/devutf8/R.proto: Remove incorrect \'
+ and \` entries.
+
+2006-02-22 Werner LEMBERG <wl@gnu.org>
+
+ Remove all remaining traces from the `shc' glyph.
+
+ * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list),
+ src/libs/libgroff/uniglyph.cpp (unicode_to_glyph_list): Remove
+ entry for `shc'.
+
+ * font/devlatin1/R.proto, font/devcp1046/R.proto: Replace `shc'
+ entry with unnamed glyph.
+
+ * tmac/html/tmac: Remove `shc' entry from call to `.cflags'.
+
+ * src/preproc/preconv/preconv.cpp (unicode_entity): Handle U+00AD
+ specially.
+
+2006-02-22 Bruno Haible <bruno@clisp.org>
+
+ Concretize the `glyph' datatype.
+
+ * src/include/font.h (glyph): Remove class.
+ (glyph): Renamed from struct `glyphinfo'.
+ (glyph_to_index): New inline function.
+ (glyph_to_name): Make extern, not inline.
+ (glyph_to_number): Update.
+ (font): Use `glyph *' instead of `glyph'.
+
+ * src/libs/libgroff/nametoindex.cpp (charinfo): Inherit from class
+ `glyph'. Make `name' field public.
+ (character_indexer, number_to_glyph, name_to_glyph): Use `glyph *'
+ instead of `glyph'.
+ (glyph_to_name): Renamed from `glyph::glyph_name'.
+
+ * src/roff/troff/charinfo.h (charinfo): Inherit from class `glyph'.
+ Use `glyph *' instead of `glyph'.
+
+ * src/roff/troff/input.cpp (name_to_glyph, number_to_glyph): Use
+ `glyph *' instead of `glyph'.
+ (glyph_to_name): Renamed from `glyph::glyph_name'.
+
+ * src/libs/libgroff/font.cpp: Use `glyph *' instead of `glyph',
+ and `glyph_to_index' instead of `glyph::glyph_index'.
+
+ * src/include/printer.h (printer): Use `glyph *' instead of `glyph'.
+ * src/libs/libdriver/printer.cpp: Likewise.
+ * src/devices/grodvi/dvi.cpp: Likewise.
+ * src/devices/grohtml/post-html.cpp: Likewise.
+ * src/devices/grolbp/lbp.cpp: Likewise.
+ * src/devices/grolj4/lj4.cpp: Likewise.
+ * src/devices/grops/ps.cpp: Likewise.
+ * src/devices/grotty/tty.cpp: Likewise.
+
+2006-02-22 Werner LEMBERG <wl@gnu.org>
+
+ * font/devdvi/generate/tc.map: Add `sr' glyph.
+ * font/devdvi/*TC: Regenerated.
+
+ * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list): Use entry
+ for `sqrt'.
+
+2006-02-21 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_char.man: Explain `***' marker.
+
+2006-02-17 Bruno Haible <bruno@clisp.org>
+
+ * src/libs/libgroff/nametoindex.cpp (character_indexer): Rename
+ methods and fields from *_index to *_glyph.
+ (character_indexer::named_char_glyph): Test for `charNNN' name
+ here...
+ (name_to_glyph): ... not here.
+
+2006-02-17 Bruno Haible <bruno@clisp.org>
+
+ * src/include/font.h (name_to_glyph): Renamed from
+ font::name_to_index.
+ (number_to_glyph): Renamed from font::number_to_index.
+ (glyph_to_name): Renamed from font::index_to_name.
+ (glyph_to_number): Renamed from font::index_to_number.
+ * src/libs/libgroff/nametoindex.cpp: Likewise.
+ * src/roff/troff/charinfo.h (charinfo::as_glyph): Renamed from
+ charinfo::get_index.
+
+ * src/roff/troff/input.cpp: All callers changed.
+ * src/roff/troff/node.cpp: Likewise.
+ * src/libs/libgroff/font.cpp: Likewise.
+ * src/devices/grops/ps.cpp: Likewise.
+ * src/devices/grohtml/post-html.cpp: Likewise.
+ * src/libs/libdriver/printer.cpp: Likewise.
+
+2006-02-17 Werner LEMBERG <wl@gnu.org>
+
+ * src/include/ptable.h, src/include/itable.h
+ (NEXT_PTABLE_SIZE_DEFINED): Use it to avoid multiple declaration
+ of external symbol `next_ptable_size' (used by both header files).
+
+2006-02-15 Bruno Haible <bruno@clisp.org>
+
+ * src/include/font.h (glyphinfo): New class.
+ (glyph): Change internal representation.
+ Change constructor signature.
+ New method glyph::glyph_number().
+ (glyph::glyph, glyph glyph::undefined_glyph, glyph::glyph_index,
+ glyph::operator==, glyph::operator!=): Update.
+ (font::index_to_name, font::index_to_number): New functions.
+
+ * src/include/itable.h: New file, based on src/include/ptable.h.
+
+ * src/libs/libgroff/nametoindex.cpp: Include itable.h.
+ (class charinfo): New class.
+ (class character_indexer): Change table result type from `int' to
+ `class charinfo'.
+ Add table with integer key.
+ (character_indexer::character_indexer): Update.
+ (character_indexer::ascii_char_index): Update.
+ (character_indexer::numbered_char_index): Use NULL as name, not a
+ string starting with a space.
+ (character_indexer::named_char_index): Update.
+ (font::number_to_index, font::name_to_index): Remove no-op cast.
+ (glyph::glyph_name): New method.
+ * src/roff/troff/charinfo.h (class charinfo): Inherit from class
+ glyphinfo.
+ (NUMBERED): Remove flag bit.
+ (charinfo::numbered, charinfo::get_index): Update.
+
+ * src/roff/troff/input.cpp (charinfo::charinfo): Update.
+ (charinfo::set_number, charinfo::get_number): Update.
+ (glyph::glyph_name): New method.
+
+2006-02-15 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/glyphuni.cpp (glyph_to_unicode_list): Fix
+ entries for `>>', `<<', `*f', and `+f'. Reported by Bruno.
+
+2006-02-13 Werner LEMBERG <wl@gnu.org>
+
+ * font/devps/prologue.ps (RE): Check `UniqueID' also, similar to
+ dvips.
+
+2006-02-11 Werner LEMBERG <wl@gnu.org>
+
+ * src/include/font.h: s/glyph_t/glyph/.
+ Update all callers.
+
+ * src/devices/grotty/tty.cpp: s/glyph/tty_glyph/.
+ s/output_character_t/output_character/.
+
+2006-02-11 Bruno Haible <bruno@clisp.org>
+
+ New accessor method glyph_t::glyph_name().
+
+ * src/include/ptable.h (declare_ptable): Add a return value to the
+ `define' method, and declare a `lookupassoc' method.
+ (implement_ptable): Return the stored key in `define'. Implement
+ lookupassoc.
+ * src/include/font.h (glyph_t): Add `name' field. Add an argument
+ to the constructor.
+ (glyph_t::glyph_name): New method.
+
+ * src/libs/libgroff/nametoindex.cpp (character_indexer): Change
+ return type of methods and field member type to glyph_t.
+ (character_indexer::character_indexer): Update.
+ (character_indexer::ascii_char_index): Allocate a name for the
+ glyph.
+ Return a glyph_t with name.
+ (character_indexer::numbered_char_index): Return a glyph_t without a
+ name.
+ (character_indexer::named_char_index): Return a glyph_t with a name.
+ (font::number_to_index, font::name_to_index): Update.
+
+ * src/roff/troff/input.cpp (charinfo::charinfo): Use the symbol as
+ the glyph's name.
+
+2006-02-11 Bruno Haible <bruno@clisp.org>
+
+ * src/devices/grotty/tty.cpp (output_character_t): New type.
+ (tty_printer::make_bold, tty_printer::add_char,
+ tty_printer::put_char): Change argument type to output_character_t.
+ (crossings): Change element type to output_character_t.
+
+2006-02-11 Bruno Haible <bruno@clisp.org>
+
+ Make the glyph data type abstract.
+
+ * src/include/font.h (glyph_t): New class.
+ (name_to_index, number_to_index): Change return type to glyph_t.
+ (font::contains, font::get_width, font::get_height, font::get_depth,
+ font::get_character_type, font::get_kern, font::get_skew,
+ font::get_italic_correction, font::get_left_italic_correction,
+ font::get_subscript_correction, font::get_code,
+ font::get_special_device_encoding, font::add_entry,
+ font::copy_entry, font::add_kern, font::hash_kern): Change argument
+ type to glyph_t.
+
+ * src/libs/libgroff/font.cpp (font_kern_list): Change members
+ type and constructor argument types to glyph_t.
+ (font::contains, font::get_width, font::get_height, font::get_depth,
+ font::get_character_type, font::get_kern, font::get_skew,
+ font::get_italic_correction, font::get_left_italic_correction,
+ font::get_subscript_correction, font::get_code,
+ font::get_special_device_encoding, font::add_entry,
+ font::copy_entry, font::add_kern, font::hash_kern): Change argument
+ type to glyph_t.
+ (font::load): Use glyph_t variables.
+
+ * src/libs/libgroff/nametoindex.cpp (name_to_index,
+ number_to_index): Change return type to glyph_t.
+
+ * src/roff/troff/charinfo.h (charinfo::index): Change type to
+ glyph_t.
+ (charinfo::get_index): Change return type to glyph_t.
+
+ * src/roff/troff/env.cpp: Include font.h.
+
+ * src/roff/troff/node.cpp: Include font.h before charinfo.h.
+
+ * src/roff/troff/input.cpp: Include font.h before charinfo.h.
+ (charinfo::charinfo): Update.
+ (name_to_index, number_to_index): Change return type to glyph_t.
+
+ * src/include/printer.h (printer::set_char_and_width): Change return
+ type to glyph_t.
+
+ * src/libs/libdriver/printer.cpp (printer::set_char_and_width):
+ Change return type to glyph_t.
+
+ * src/devices/grodvi/dvi.cpp (dvi_printer::set_char): Change
+ argument type to glyph_t.
+
+ * src/devices/grohtml/post-html.cpp (page::add_and_encode): Update.
+ (html_printer::space_glyph): Renamed from space_char_index.
+ (html_printer::add_to_sbuf, html_printer::sbuf_continuation,
+ html_printer::overstrike, html_printer::set_char): Change argument
+ type to glyph_t.
+ (html_printer::set_char_and_width): Change return type to glyph_t.
+
+ * src/devices/grolbp/lbp.cpp (lbp_printer::set_char): Change
+ argument type to glyph_t.
+
+ * src/devices/grolj4/lj4.cpp (lj4_printer::set_char): Change
+ argument type to glyph_t.
+
+ * src/devices/grops/ps.cpp (ps_printer::space_glyph): Renamed from
+ space_char_index.
+ (ps_printer::set_subencoding, ps_printer::set_char): Change argument
+ type to glyph_t.
+
+ * src/devices/grotty/tty.cpp (tty_printer::set_char): Change
+ argument type to glyph_t.
+
+2006-02-11 Bruno Haible <bruno@clisp.org>
+
+ * src/roff/troff/input.cpp (font::name_to_index): Never return a
+ negative value.
+
+ * src/libs/libgroff/font.cpp (font::load): Remove failure tests for
+ font::name_to_index.
+
+2006-02-10 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo (Assigning Formats): Number registers are always
+ interpolated.
+ Apply some rephrasing, contributed by Michael Burt.
+
+2006-02-07 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/fr.tmac <ms>: Set `HY' register.
+
+2006-02-07 Werner LEMBERG <wl@gnu.org>
+
+ Add framework for simple adaptation of the main macro packages (mm,
+ me, ms, mom) to different locales. In particular, add support for
+ French. For activation, simply use `-mfr' as the last macro
+ package. This feature has been contributed by Fabrice Mnard
+ <menard.fabrice@wanadoo.fr>.
+
+ * tmac/fr.tmac, tmac/trans.tmac, tmac/hyphen.fr, tmac/LOCALIZATION:
+ New files.
+ * tmac/README: Mention hyphen.fr.
+ * man/groff_tmac.man: Mention fr.tmac.
+ * NEWS: Updated.
+
+2006-01-27 Werner LEMBERG <wl@gnu.org>
+
+ * man/groff_font.man: Updated documentation of `entity_name' field.
+ Avoid future tense.
+
+2006-01-27 Bruno Haible <bruno@clisp.org>
+
+ * font/devhtml/R.proto: Remove the entity names from the font's
+ special_encoding_encoding column.
+ * src/devices/grohtml/post-html.cpp (get_html_entity): New function,
+ handling the entity names here.
+ (get_html_translation): Use it. Change return type to `const
+ char *'.
+ (page::add_and_encode): Update, removing a useless cast.
+
+2006-01-26 Werner LEMBERG <wl@gnu.org>
+
+ This change is based on a patch by Bruno Haible <bruno@clisp.org>.
+
+ * src/include/device.h: Add comments.
+ * src/include/font.h: Add comments.
+ * src/include/unicode.h: Likewise.
+ * src/include/ptable.h, src/libs/libgroff/ptable.cpp: Likewise.
+
+2006-01-26 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ Suppress `.st' request emission by `grn'.
+
+ * src/preproc/grn/main.cpp (USE_ST_REQUEST): New macro.
+ (conv): Use it.
+
+2006-01-22 Werner LEMBERG <wl@gnu.org>
+
+ * install-sh: New version; taken from texinfo CVS.
+
+2006-01-21 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/preconv/preconv.cpp (main): Set program_name. Bug
+ reported by Alexander E. Patrakov <patrakov@ums.usu.ru>.
+
+2006-01-19 Bruno Haible <bruno@clisp.org>
+
+ Let `make -k install' install more files.
+
+ * Makefile.in (MAKE_K_FLAG): New variable. Use it everywhere where
+ $(MAKE) and $(MDEFINES) are used.
+ (CPROGDIRS): Remove $(XPROGDIRS). Treat $(XPROGDIRS) like
+ $(CPROGDIRS) everywhere.
+ ($(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) $(TTYDEVDIRS)): Don't depend
+ on $(XPROGDIRS).
+ ($(OTHERDIRS)): Likewise.
+
+
+ * src/devices/grohtml/post-html.cpp (get_html_translation): Remove
+ failure test for font::name_to_index -- it can never fail.
+
+2006-01-19 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grops/grops.man: Fix section on creating EPS files.
+ Don't use future time in manual.
+ Other minor fixes.
+
+2006-01-15 Gaius Mulley <gaius@glam.ac.uk>
+
+ * tmac/www.tmac: New macro LINKSTYLE which allows users to set
+ various typographical URL attributes for non-HTML devices.
+
+ * tmac/groff_www.man: Document LINKSTYLE.
+
+2006-01-11 Werner LEMBERG <wl@gnu.org>
+
+ * configure.ac: Test for getc_unlocked (needed for localcharset).
+ * configure, src/include/config.hin: Regenerated.
+
+ * src/libs/libgroff/Makefile.sub (EXTRA_CFLAGS): Define
+ ENABLE_RELOCATABLE.
+
+ * src/libs/libgroff/relocatable.h: New dummy header file for
+ localcharset.c.
+
+ * src/libs/libgroff/localcharset.c: Updated to (unchanged) CVS
+ gnulib version.
+
+2006-01-10 Bruno Haible <bruno@clisp.org>
+
+ Work around unportability of nl_langinfo(CODESET).
+
+ * m4/glibc21.m4: New file, from gnulib.
+ * Makefile.sub (M4MACROS): Add m4/glibc21.m4.
+ * configure.ac: Also test for stddef.h, and invoke jm_GLIBC21.
+ * Makefile.in (HOST, GLIBC21): New variables.
+ (MDEFINES): Pass them to subdirectories.
+ * src/include/relocate.h (relocatep): Define with C linkage.
+ * src/include/localcharset.h: New file, from gnulib.
+ * src/libs/libgroff/localcharset.c: New file, from gnulib with a
+ modification for relocate().
+ * src/libs/libgroff/config.charset: New file, from gnulib.
+ * src/libs/libgroff/ref-add.sin: New file, from gnulib.
+ * src/libs/libgroff/ref-del.sin: New file, from gnulib.
+ * src/libs/libgroff/Makefile.sub (EXTRA_CFLAGS): Also define LIBDIR.
+ (OBJS): Add localcharset.o.
+ (CSRCS): Add localcharset.c.
+ (all): Add dependencies to charset.alias, ref-add.sed, ref-del.sed.
+ (charset.alias): New rule.
+ (PACKAGE): New variable.
+ (ref-add.sed, ref-del.sed): New rules.
+ (MKINSTALLDIRS): New variable.
+ (install_data): Depend on install_charset_data.
+ (install_charset_data): New rule for creating or updating
+ charset.alias.
+ (uninstall_sub): Depend on uninstall_charset_data.
+ (uninstall_charset_data): New rule for uninstalling or updating
+ charset.alias.
+ * src/preproc/preconv/preconv.cpp: Include localcharset.h instead
+ of <langinfo.h>.
+ (main): Initialize default_encoding from locale_charset() instead of
+ nl_langinfo(CODESET).
+
+ * aclocal.m4, configure, src/include/config.hin: Regenerated.
+
+2006-01-10 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/preconv/preconv.cpp (conversion_iconv): Use
+ ICONV_CONST in call to iconv. Reported by Robert Goulding.
+
+2006-01-07 Werner LEMBERG <wl@gnu.org>
+
+ * font/devps/generate/freeeuro.sfd: Run auto-hinter with recent
+ fontforge version.
+ Bump font version to 001.001.
+
+ * font/devps/generate/Makefile (freeeuro.afm, freeeuro.pfa):
+ Call fontforge, not pfaedit.
+
+ * font/devps/freeeuro.afm, font/devps/freeeuro.pfa: Regenerated.
+
+2006-01-05 Ruslan Ermilov <ru@FreeBSD.org>
+
+ * tmac/doc-common: Add new FreeBSD and NetBSD versions.
+ * tmac/groff_mdoc.man: Updated.
+
+2006-01-05 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/preconv/preconv.cpp: s/debug/debug_flag/.
+ (raw_flag): New global variable.
+ (do_file): Use .lf to set file name (if `raw_flag' isn't set).
+ Don't pass BOM to `conversion_utf8'.
+ (usage): Updated.
+ (main): Handle `-r' command line switch to set `raw_flag'.
+ (get_BOM): Fix encodings in `BOM_table'.
+
+ * src/preproc/preconv/preconv.man: New file. Not complete yet.
+ * src/preproc/proconv/Makefile.sub (MAN1): New variable.
+
+2006-01-04 Werner LEMBERG <wl@gnu.org>
+
+ * src/preproc/preconv/preconv.cpp (emacs_to_mime): As suggested by
+ Bruno, comment out most encodings to support only a small set of
+ coding tags, thus reducing potential problems with legacy encodings
+ and character sets in the future.
+ Add many XEmacs coding tags (now commented out).
+ Add `cp1047'.
+ (check_encoding_tag): Renamed to...
+ (check_coding_tag): This.
+ (get_BOM): Return encoding as specified by BOM.
+ Test for UTF32-LE too.
+ (do_file): Don't check for coding tag if a BOM has been found.
+
+2006-01-03 Bruno Haible <bruno@clisp.org>
+
+ * m4/groff.m4: Renamed from aclocal.m4.
+ * m4/codeset.m4: New file, from gnulib.
+ * m4/iconv.m4: New file, from gnulib.
+ * m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4: New files, from
+ gnulib.
+ * config.rpath: New file, from gnulib.
+ * config.guess, config.sub: New files, from gnulib.
+ * Makefile.sub (M4MACROS): New variable.
+ (configure): Fix typo.
+ (aclocal.m4): New rule.
+ (stamp-h.in): Depend on aclocal.m4.
+ * configure.ac: Invoke AM_ICONV and AM_LANGINFO_CODESET.
+ * Makefile.in (LIBICONV): New variable.
+ (MDEFINES): Pass it to recursive makes.
+ * src/preproc/preconv/preconv.cpp: Use HAVE_LANGINFO_CODESET and
+ HAVE_ICONV instead of I18N macro.
+ * src/preproc/preconv/Makefile.sub (EXTRA_LDFLAGS): New variable.
+
+ * aclocal.m4, configure, src/include/config.hin: (Re)generated.
+
+2006-01-03 Werner LEMBERG <wl@gnu.org>
+
+ * doc/Makefile.in (webpage.html): Simplify.
+ * doc/Makefile.sub (webpage.html): Synchronize with doc/Makefile.in.
+ * doc/webpage.ms, tmac/groff_www.man, tmac/www.tmac: Minor updates.
+
+2006-01-01 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc-common (Os): Add some Darwin versions.
+ * tmac/groff_mdoc.man: Document them.
+
+2006-01-01 Bruno Haible <bruno@clisp.org>
+
+ * src/preproc/preconv/preconv.cpp (emacs_to_mime): Various
+ corrections:
+ . Don't map ascii to latin-1.
+ . Don't use IBMxxx encodings but cpxxx for portability.
+ . Map cp932, cp936, cp949, cp950 to itself.
+ (emacs2mime): Protect calls to strcasecmp.
+ (conversion_iconv): Add missing call to iconv_close.
+ (do_file): Emit error message in case of unsupported encoding.
+
+2005-12-31 Werner LEMBERG <wl@gnu.org>
+
+ Integrate preconv into the groff binary. Changes based on a patch
+ from Michail Vidiassov.
+
+ * src/roff/groff/pipeline.h (MAX_COMMANDS): Increase by 1.
+
+ * src/roff/groff/groff.cpp (PRECONV_INDEX): New macro.
+ (SOELIM_INDEX): Updated.
+ (help, synopsis): Updated.
+ (main): Add command line options `-k' and `-K enc' to select
+ encoding.
+ Add support for GROFF_ENCODING environment variable.
+
+ * src/roff/groff/groff.man: Updated and revised.
+
+
+ Start with autoconf support for preconv.
+
+ * configure.ac: Call AC_C_BIGENDIAN.
+ * configure, src/include/config.hin: Regenerated.
+
+2005-12-30 Werner LEMBERG <wl@gnu.org>
+
+ New preprocessor `preconv' to convert input encodings to something
+ groff can understand. Not yet integrated within groff. Proper
+ autoconf stuff is missing too.
+
+ Tomohiro Kubota has written a first draft of this program, and some
+ ideas have been reused (while almost no code has been taken
+ actually).
+
+ * src/preproc/preconv/preconv.cpp. src/preproc/preconv/Makefile.sub:
+ New files.
+
+ * MANIFEST, Makefile.in (CCPROGDIRS), test-groff.in
+ (GROFF_BIN_PATH): Add preconv.
+
+2005-12-12 Werner LEMBERG <wl@gnu.org>
+
+ * aclocal.m4 (GROFF_MAKEINFO): Fix regexps to be POSIX conformant.
+ In particular, don't use `\+' since it is a GNU sed extension.
+
+ * configure: Regenerated.
+
+2005-12-09 Werner LEMBERG <wl@gnu.org>
+
+ * src/libs/libgroff/make-uniuni: New script to generate uniuni.cpp.
+
+ * src/libs/libgroff/uniuni.cpp: Regenerated, using data from Unicode
+ 4.1.0.
+
+
+ * src/utils/afmtodit/make-afmtodit-tables: New script to generate
+ afmtodit.tables.
+
+ * src/utils/afmtodit/afmtodit.tables: New file, representing Unicode
+ 4.1.0 data.
+
+ * src/utils/afmtodit/afmtodit.pl (%unicode_decomposed,
+ %AGL_to_unicode): Removed. Replace it with a tag.
+
+ * src/utils/afmtodit/Makefile.sub (afmtodit): Adjust sed expression
+ to replace tag with actual file contents.
+
+2005-12-08 Werner LEMBERG <wl@gnu.org>
+
+ The change 2005-06-20 can indeed cause problems, so we follow the
+ advice by using marks.
+
+ * font/devps/prologue.ps (PBEGIN): Use `mark'.
+ (PEND): Use `cleartomark'.
+
+2005-12-07 Michail Vidiassov <master@iaas.msu.ru>
+
+ * src/utils/afmtodit.pl: Fix kerning output to avoid warnings for
+ glyphs which have kern values but aren't handled (glyph variants,
+ for example).
+
+2005-12-02 Werner LEMBERG <wl@gnu.org>
+
+ * src/devices/grops/ps.cpp (ps_printer::get_subfont): Use correct
+ subfont index. Reported by Michail Vidiassov <master@iaas.msu.ru>.
+
+2005-11-28 Gaius Mulley <gaius@glam.ac.uk>
+
+ * doc/Makefile.in: Separate rule for webpage.html so that extra
+ command line options can be passed to grohtml.
+ * doc/groff.css: Change all margins to 0%.
+ * doc/webpage.ms: Now use new macros ALN, LNS, and LNE so that left
+ navigation is exploited. Also update webpage to contain new
+ sections on licenses, mailing lists, cvs/ftp access, groff
+ dependencies, and bug reports.
+ * tmac/groff_www.man: Document the new macros ALN, LNS, and LNE.
+ * tmac/www.tmac: Implement the new macros ALN, LNS, and LNE.
+
+2005-11-25 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/devices/grohtml/post-html.cpp
+ (html_printer::do_file_components): Add fputs calls to emit the
+ head contents and shut down the head tag whenever a new file
+ component is generated.
+
+2005-11-22 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/devices/grohtml/post-html.cpp (html_printer::flush_page): Add
+ call to flush_text to flush any outstanding html tags on the
+ paragraph stack.
+
+2005-11-18 Werner LEMBERG <wl@gnu.org>
+
+ * aclocal.m4 (GROFF_MAKEINFO): Use `groff.info' in tests.
+ Announce makeinfo version.
+ * configure: Regenerated.
+
+2005-11-18 Mike Frysinger <vapier@gentoo.org>
+
+ * Makefile.in: Declare proper dependencies between make targets.
+
+ * doc/Makefile.in: Rename groff info page to `groff.info'.
+ * doc/Makefile.sub: Likewise.
+ * doc/groff.texinfo: Likewise.
+
+2005-11-17 Peter O'Gorman <mlists@thewrittenword.com>
+
+ * src/utils/pfbtops/pfbtops.c, src/utils/xtotroff/xtotroff.c: Move
+ definition of __GETOPT_PREFIX to the beginning of file to ensure
+ that it is defined even on platforms where getopt.h is already
+ included by other header files.
+
+2005-11-10 Gaius Mulley <gaius@glam.ac.uk>
+
+ * src/devices/grohtml/post-html.cpp (html_printer::do_heading):
+ Reset font to NULL to ensure that a font block is recreated during
+ the next paragraph.
+
+2005-11-04 Werner LEMBERG <wl@gnu.org>
+
+ * aclocal.m4 (GROFF_MAKEINFO): Fix sed expression.
+ * configure: Regenerated.
+
+2005-10-27 Werner LEMBERG <wl@gnu.org>
+
+ * aclocal.m4 (GROFF_MAKEINFO): New function for checking whether
+ makeinfo 4.8 or newer is available.
+ * configure.ac: Call GROFF_MAKEINFO.
+ * configure: Regenerated.
+
+ * Makefile.in (MAKEINFO): Use autoconf variable.
+ (MDEFINES): Add MAKEINFO.
+
+ * doc/Makefile.in (MAKEINFO): Use autoconf variable.
+ * doc/Makefile.sub (MAKEINFO): Remove.
+
+2005-10-26 Werner LEMBERG <wl@gnu.org>
+
+ * REVISION: Set to 3.
+
+2005-10-17 Werner LEMBERG <wl@gnu.org>
+
+ Mention $MANPAGER variable used with some `man' systems.
+
+ * doc/webpage.ms, src/devices/grotty/grotty.man, NEWS: Updated.
+
+2005-09-13 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/hyphenex.us: New version (`ushyphex.tex' from ftp.dante.de).
+
+Copyright 2005-2009
+ Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+version-control: never
+coding: latin-1
+End:
diff --git a/ChangeLog.121 b/ChangeLog.121
new file mode 100644
index 0000000..d17436f
--- /dev/null
+++ b/ChangeLog.121
@@ -0,0 +1,786 @@
+
+Version 1.21 released
+=====================
+
+ * NEWS, REVISION, VERSION, doc/groff.texinfo, doc/webpage.ms:
+ Updated.
+ * aclocal.m4, configure: Regenerated.
+
+2010-12-31 Werner LEMBERG <wl@gnu.org>
+
+ * doc/webpage.ms: Updated.
+
+2010-12-31 Werner LEMBERG <wl@gnu.org>
+
+ * configure: Regenerate with autoconf 2.67.
+
+2010-12-31 Werner LEMBERG <wl@gnu.org>
+
+ Update various scripts.
+
+ * config.guess, config.sub: Update from `config' repository.
+ * install-sh, mkinstalldirs: Update from `gnulib' repository.
+
+2010-12-31 Werner LEMBERG <wl@gnu.org>
+
+ Update texinfo.tex.
+
+ * doc/texinfo.tex: Update from `texinfo' repository.
+
+2010-12-30 Werner LEMBERG <wl@gnu.org>
+
+ Call texi2dvi with correct makeinfo binary.
+
+ * doc/Makefile.in (.texinfo.dvi, .texinfo.pdf): Use $(MAKEINFO).
+
+2010-12-30 Werner LEMBERG <wl@gnu.org>
+
+ Documentation updates.
+
+ * NEWS, PROBLEMS, MANIFEST: Update.
+
+2010-12-26 Werner LEMBERG <wl@gnu.org>
+
+ Speed up troff.
+
+ * src/include/ptable.h (PTABLE): Make hash tables much more sparse
+ by changing the ratio `FULL_NUM/FULL_DEN' from 2/3 to 1/4. This
+ increases the allocated memory by about 200kByte (which is nothing
+ today) but assures that there aren't extremely long searches for a
+ free hash slot in case that the hash function doesn't return a free
+ one. Due to the nature of the entries in uniuni.cpp, the used hash
+ function in ptable.cpp is not optimal, but using a sparse array
+ compensates this.
+
+2010-12-20 Werner LEMBERG <wl@gnu.org>
+
+ Replace patch from 2010-12-18 with a much faster implementation.
+
+ * src/roff/troff/node.h (node): Add virtual function
+ `get_break_code'.
+
+ * src/roff/troff/node.cpp (inter_char_space_node): Remove class
+ completely.
+ (glyph_node::merge_glyph_node): Restore previous version.
+
+ (break_char_node): Add `prev_break_code' field and update
+ constructors.
+ (node::get_break_code, break_char_node::get_break_code): Implement.
+
+ (node::add_char): Pass remaining cflags values.
+
+ (break_char_node::add_self): Use the logic of the now deleted
+ `inter_char_space_node::add_self' function to insert a space node if
+ necessary.
+
+2010-12-20 Daiki Ueno <ueno@unixuser.org>
+
+ A new try to not changing srcdir if building in separate builddir.
+
+ Makefile.in ($GNULIBDIRS): Disable calls to autoconf and friends.
+
+2010-12-20 Werner LEMBERG <wl@gnu.org>
+
+ Speed up access to cflags values.
+
+ We now recompute the cflags values for all charinfo objects if
+ `.class' has been called.
+
+ * src/roff/troff/charinfo.h: Add external references to `class_flag'
+ and `get_flags'.
+ (charinfo): `get_flags' no longer has a return value.
+ (charinfo::overlaps_horizontally, charinfo::overlaps_vertically,
+ charinfo::can_break_before, charinfo::can_break_after,
+ charinfo::can_break_after, charinfo::ends_sentence,
+ charinfo::transparent,, charinfo:ignore_hcodes,
+ charinfo::prohibit_break_before, charinfo::prohibit_break_after,
+ charinfo::inter_char_space): Call global `get_flags' only if
+ necessary.
+ (charinfo::add_to_class): Set `class_flag'.
+
+ * src/roff/troff/input.cpp (class_flag): New global flag.
+ (charinfo::charinfo): Call `get_flags' member function.
+ (get_flags): New global function which iterates over all entries in
+ the charinfo dictionary.
+ (charinfo::get_flags): Set `flags' directly.
+
+2010-12-19 Werner LEMBERG <wl@gnu.org>
+
+ Protect `.class' against cyclic nesting.
+
+ * src/roff/troff/charinfo.h (charinfo::contains): Add optional
+ boolean argument.
+ * src/roff/troff/input.cpp (define_class, charinfo::contains): Check
+ for cyclic nesting.
+
+2010-12-18 Werner LEMBERG <wl@gnu.org>
+
+ Improve CJK support with new values for `.cflags'.
+
+ This patch introduces three new values to `.cflags':
+
+ don't break before character: 128
+ don't break after character: 256
+ allow inter-character break: 512
+
+ They are handled differently if compared to other cflags values:
+
+ (1) hcode values are completely ignored
+ (2) similar to kern values, and contrary to the other cflags
+ values, troff looks at pairs of characters to decide whether a
+ break gets inserted
+
+ A yet-to-be-written patch should add inter-character spacing if
+ those flags are active; currently, only zero-width breakpoints are
+ inserted.
+
+ * src/roff/troff/charinfo.h (charinfo): Change type of `flags' to
+ `int'. Update callers accordingly.
+ New enum values `DONT_BREAK_BEFORE', `DONT_BREAK_AFTER', and
+ `INTER_CHAR_SPACE'.
+ New member functions `prohibit_break_before',
+ `prohibit_break_after', and `inter_char_space'.
+ * src/roff/troff/input.cpp: Updated.
+
+ * src/roff/troff/node.cpp (inter_char_space_node): New class similar
+ to kern_pair_node, collecting charinfo entities with the
+ abovementioned cflags values.
+ (break_char_type): Add new enum values.
+ (glyph_node::merge_glyph_node): Handle abovementioned cflags values
+ and emit an `inter_char_space_node' if necessary.
+
+ * tmac/ja.tmac: Use new cflags values.
+
+ * doc/groff.texinfo, NEWS, man/groff_diff.man: Document new values.
+
+2010-12-18 Werner LEMBERG <wl@gnu.org>
+
+ Remove compiler warning.
+
+ * src/libs/libgroff/relocate.cpp (msw2posixpath): Remove redundant
+ dereferencing.
+
+2010-12-16 Daiki Ueno <ueno@unixuser.org>
+
+ Don't change srcdir if building in a separate builddir.
+
+ * Makefile.in ($GNULIBDIRS): Copy configuring stuff of gnulib if
+ necessary.
+
+2010-12-15 Werner LEMBERG <wl@gnu.org>
+
+ Fix compilation problem.
+
+ This issue happens with gcc 4.2.4.
+
+ * src/roff/troff/node.cpp (node::~node): Move to...
+ * src/roff/troff/node.h: Here. This ensures that the inline
+ member function is publicly visible.
+
+2010-12-15 Werner LEMBERG <wl@gnu.org>
+
+ Remove unused code.
+
+ * src/roff/troff/node.cpp, src/roff/troff/node.h
+ (space_node::space_node): Remove unused constructor.
+
+2010-12-15 Werner LEMBERG <wl@gnu.org>
+
+ Use enum to increase readability.
+
+ * src/roff/troff/node.cpp (break_char_type): New enum.
+ (break_char_node::add_self, node::add_char): Use it.
+
+2010-12-13 Daiki Ueno <ueno@unixuser.org>
+ Werner LEMBERG <wl@gnu.org>
+
+ Add wide character support to grotty.
+
+ This is a huge patch, mainly by adding the gnulib infrastructure in
+ a separate directory tree (in `src/libs/gnulib/lib') for its
+ `wcwidth' module. However, the actual changes to native groff
+ source files are just a few lines.
+
+ * Makefile.comm (INCLUDES): Updated.
+ (LIBGNU): Define.
+
+ * Makefile.in (NOMAKEDIRS): Updated.
+ (GNULLIBDIRS): Define.
+ (DISTDIRS): Add GNULLIBDIRS.
+ ($LIBDIRS): Depend on GNULLIBDIRS.
+ ($GNULLIBDIRS): New target.
+
+ * src/libs/libgroff/font.cpp (font::get_width, font::load)
+ [is_unicode]: Use `wcwidth'.
+
+ * src/roff/troff/Makefile.sub (XLIBS): Add LIBGNU.
+ * src/roff/troff/input.cpp (main): Set LC_CTYPE.
+
+ * src/devices/grotty/Makefile.sub (XLIBS): Add LIBGNU.
+ * src/devices/grotty/tty.cpp (main): Set LC_CTYPE.
+
+ * src/libs/gnulib/*: New files. The import was done as follows:
+
+ . Call
+
+ gnulib-tool --create-testdir \
+ --dir=src/libs/gnulib \
+ wcwidth
+
+ to get a testbed.
+
+ . Manually move directories src/libs/gl{lib,m4} to
+ src/libs/{lib,m4}, and do s/gllib/lib/ and s/glm4/m4/ everywhere
+ to `convert' the gnulib testbed to a standard gnulib
+ configuration as maintained by gnulib-tool.
+
+ . Call
+
+ gnulib-tool --add-import \
+ --dir=src/libs/gnulib \
+ wcwidth
+
+ to update everything.
+
+2010-12-13 Werner LEMBERG <wl@gnu.org>
+
+ `.class' must not emit empty lines.
+
+ * src/roff/troff/input.cpp (define_class): Add missing `skip_line'
+ calls.
+
+2010-12-06 UKAI Fumitoshi <ukai@debian.or.jp>
+ Colin Watson <cjwatson@debian.org>
+
+ Add Japanese localization.
+
+ * tmac/ja.tmac: New file.
+ * tmac/Makefile.sub (NORMALFILES): Updated.
+
+2010-12-06 Colin Watson <cjwatson@debian.org>
+ Daiki Ueno <ueno@unixuser.org>
+
+ Implement support for character classes.
+
+ This patch uses standard C++ headers, contrary to the rest of groff.
+ Ideally, everything in groff should be updated to do the same.
+
+ * src/include/font.h (glyph_to_unicode): New function.
+
+ * src/libs/libgroff/font.cpp (glyph_to_unicode): Implement it.
+ (font::contains, font::get_code): Use it.
+
+ * src/roff/troff/charinfo.h: Include <vector> and <utility>.
+ (charinfo): New members `ranges' and `nested_classes'.
+ New member functions `get_unicode_code' and `get_flags'.
+ New member functions `add_to_class', `is_class', and `contains'.
+ (charinfo::overlaps_horizontally, charinfo::overlaps_vertically,
+ charinfo::can_break_before, charinfo::can_break_after,
+ charinfo::can_break_after, charinfo::ends_sentence,
+ charinfo::transparent,, charinfo:ignore_hcodes): Use `get_flags',
+ which handles character classes also.
+
+ * src/roff/troff/input.cpp (char_class_dictionary): New global
+ variable.
+ (define_class): New function.
+ (init_input_requests): Register `class'.
+
+ (charinfo::get_unicode_code, charinfo::get_flags,
+ charinfo::contains): Implement it.
+
+ * NEWS, doc/groff.texinfo (Character Classes), man/groff_diff.man,
+ man/groff.man: Document it.
+
+2010-11-11 Anton Shepelev <anton.txt@gmail.com>
+
+ [grohtml]: Improve texinfo documentation.
+
+ * doc/groff.texinfo (grohtml): Insert man page description, slightly
+ extended.
+
+2010-11-11 Werner LEMBERG <wl@gnu.org>
+
+ Fix crash in tbl with option `nospaces'.
+ Reported by Louis Guillaume <louis@zabrico.com>.
+
+ * src/libs/libgroff/string.cpp (string::remove_spaces): If input
+ data consists of spaces only and thus reduces to nothing, set `sz'
+ to 0.
+
+2010-11-02 Ulrich Spörlein <uqs@spoerlein.net>
+
+ [mdoc]: Complete previous patch and document OpenBSD releases.
+
+ * tmac/doc-common (doc-operating-system-NetBSD): Add versions 5.0,
+ 5.0.1, and 5.0.2.
+ (doc-operating-system-OpenBSD-*): New strings.
+ (doc-operating-system-FreeBSD-*): Add version 8.1.
+ (doc-operating-system-DragonFly-*): Add versions 2.2, 2.4, 2.6, and
+ 2.8.
+ (Os): Handle DragonFly and OpenBSD.
+
+ * tmac/groff_mdoc.man: Document OpenBSD releases.
+ Add DragonFly release 2.8.
+
+2010-11-02 Ulrich Spörlein <uqs@spoerlein.net>
+
+ [mdoc]: Improve man page.
+
+ * tmac/groff_tmac.man: Fix prologue macro order.
+ Update NetBSD, FreeBSD, and DragonflyBSD version numbers.
+ Other minor layout improvements.
+
+2010-11-02 Anton Shepelev <anton.txt@gmail.com>
+
+ [grohtml] Improve man page.
+
+ * src/devices/grohtml/grohtml.man: Document two-pass handling of
+ input data.
+
+2010-09-19 Werner LEMBERG <wl@gnu.org>
+
+ [groff] Don't use prefix for preconv.
+ Reported by Dorai Sitaram <ds26gte@yahoo.com>
+
+ * src/roff/groff/groff.cpp (main): Fix it.
+
+2010-07-28 Larry Kollar <kollar@windstream.net>
+
+ * doc/groff.texinfo, man/groff.man: Document `!' operator better.
+
+2010-06-28 Jan Vcelak <jvcelak@redhat.com>
+
+ * src/roff/troff/node.cpp (make_node): Adding missing `%'.
+ Reported in
+ http://lists.gnu.org/archive/html/bug-groff/2010-06/msg00022.html
+
+2010-06-05 Larry Jones <lawrence.jones@siemens.com>
+
+ * man/groff_diff.man: Document \n[.P].
+
+2010-06-04 Werner LEMBERG <wl@gnu.org>
+
+ * NEWS: Updated.
+
+2010-06-04 Denis M. Wilson <dmw@oxytropis.plus.com>
+
+ afmtodit: Add option `-o' to specify an output file.
+
+ * src/utils/afmtodit.pl: Implement it.
+ * src/utils/afmtodit.man: Document it.
+
+2010-06-04 Larry Jones <lawrence.jones@siemens.com>
+
+ * man/groff_diff.man: Document \n[.O].
+
+2010-05-30 Werner LEMBERG <wl@gnu.org>
+
+ Fix metric files for devps families A, BM, and font ZCMI.
+ Problem reported by Denis M. Wilson <dmw@oxytropis.plus.com>.
+
+ * font/devps/{AB, ABI, AI, AR, BMB, BMBI, BMI, BMR, ZCMI}:
+ Regenerated, using correct AFM files (from the Adobe Core 35 fonts
+ with 229 glyphs).
+
+2010-05-28 Werner LEMBERG <wl@gnu.org>
+
+ Don't use obsolete intermediate output command `F'.
+ Reported by Krzysztof Zelechowski <giecrilj@stegny.2a.pl>
+
+ * src/roff/troff/nodes.cpp (troff_output_file::really_put_filename):
+ Replace `F' command with `x F'.
+
+2010-05-24 Werner LEMBERG <wl@gnu.org>
+
+ * PROBLEMS: Document that mdoc doesn't work with test-groff.
+ Reported by Krzysztof Zelechowski <giecrilj@stegny.2a.pl>
+
+2010-05-22 Werner LEMBERG <wl@gnu.org>
+
+ Document preconv in texinfo.
+
+ * doc/groff.texinfo: Mention preconv and its related command line
+ options for groff.
+ Add stubs for direct preconv documentation.
+ Sort groff options and environment variables.
+
+2010-05-22 Werner LEMBERG <wl@gnu.org>
+
+ Use DESC's `unicode' keyword for grotty.
+
+ Consequently, no longer check directly for the `utf8' device name
+ which prevented the creation of arbitrarily called output device
+ directories like `devunicode'.
+
+ Problem reported by Christopher Yeleighton <giecrilj@stegny.2a.pl>
+ in Savannah bug #29895.
+
+ * src/devices/grotty/tty.cpp (tty_printer): Remove `is_utf8' member.
+ Replace all ocurrences with `font::is_unicode'.
+ (tty_printer::tty_printer): Remove argument.
+
+ * src/devices/grotty/grotty.man: Document `unicode' keyword.
+
+2010-05-19 Werner LEMBERG <wl@gnu.org>
+
+ Update symbol tables for devps font generation.
+
+ * font/devps/generate/textmap: Sort alphabetically.
+ Replace tabs with spaces.
+
+ * font/devps/generate/symbolchars: Update list to remove duplicates
+ which have already been added to `textmap' on 2007-04-09.
+
+ * font/devps/symbolmap: Regenerated.
+
+ * font/devps/*: Regenerate font definition files.
+
+2010-05-09 Colin Watson <cjwatson@debian.org>
+
+ Handle ditroff command `Dt' without argument gracefully.
+
+ Without this patch, grotty goes into an infinite loop if it tries to
+ process
+
+ x T utf8
+ x res 240 24 40
+ x init
+ p1
+ Dt
+
+ * src/libs/libdriver/input.cpp (get_integer_arg): Emit a fatal error
+ on a non-integer argument, bringing the code into line with the
+ behaviour documented in the header comment.
+ (get_possibly_integer_args): Terminate the loop on a non-integer
+ argument.
+ (next_arg_begin): Return newline or EOF after emitting the
+ corresponding error, rather than continuing on to the next line.
+
+2010-05-01 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Improve documentation of \R escape.
+
+2010-03-10 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Document \n[DD] register.
+ Updated version stuff.
+
+2010-03-10 Larry Kollar <kollar@windstream.net>
+
+ * tmac/groff_ms.man: Document \n[DD] register.
+ Problem reported by Ted.
+
+2010-02-25 Colin Watson <cjwatson@debian.org>
+
+ Use named signals for `trap' in shell scripts.
+
+ * contrib/eqn2graph/eqn2graph.sh, contrib/grap2graph/grap2/graph.sh,
+ contrib/pic2graph/pic2graph.sh: Do it.
+
+2010-02-25 Werner LEMBERG <wl@gnu.org>
+
+ Fix angle brackets in grohtml.
+ Reported by Colin Watson <cjwatson@debian.org>.
+
+ * src/devices/grohtml/post-html.cpp (get_html_entity): Add U+27E8
+ and U+27E9.
+
+2010-02-24 Colin Watson <cjwatson@debian.org>
+
+ Add new FreeBSD and Posix versions.
+
+ * tmac/doc-common: Add FreeBSD versions 7.2, 7.3, and 8.0
+ * tmac/doc-syms: Add Posix 2008.
+ * tmac/groff_mdoc.man: Document it.
+
+2010-02-16 Larry Kollar <kollar@windstream.net>
+
+ tbl: Add `nowarn' option.
+
+ * src/preproc/tbl/table.h (table): Add `NOWARN' enumeration value.
+
+ * src/preproc/tbl/main.cpp (process_options),
+ src/preprox/tbl/table.cpp (table::compute_expand_width,
+ table::compute_separation_factor): Handle `NOWARN'.
+
+ * src/preproc/tbl/tbl.man, NEWS: Document it.
+
+2010-02-08 Larry Kollar <kollar@windstream.net>
+
+ * tmac/www.tmac (www-li-ol): Fix indentation if more than 10 items.
+
+2010-02-04 Larry Kollar <kollar@windstream.net>
+
+ Improve `tbl' warnings.
+
+ * src/preproc/tbl/table.cpp (table::compute_expand_width,
+ table::compute_separation_factor): Add file name strings to
+ warnings.
+
+2010-01-23 Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+ Fix `MC' macro of the ms package.
+
+ * tmac/s.tmac (@MC): Define `pg*col-top' after the paragraph has
+ been initialized. Otherwise, using this example,
+
+ .nh
+ .nf
+ .kern 0
+ .pl 6c
+ .ll 70n
+ .MC 30n
+ Text for multiple columns.
+ Text for multiple columns.
+ Text for multiple columns.
+ Text for multiple columns.
+ Text for multiple columns.
+
+ the columns start at different vertical positions.
+
+2010-01-23 Larry Kollar <kollar@alltel.net>
+
+ * tmac/www.tmac (www-li-{ul,ol,dl}): Handle `PORPHANS' register.
+
+2010-01-23 Larry Kollar <kollar@alltel.net>
+
+ PROBLEMS: Document some Mac OS issues.
+
+2010-01-02 Deri James <deri@chuzzlewit.demon.co.uk>
+
+ Don't hardcode `ps' device.
+ This is needed for cooperation with gropdf.
+
+ * src/preproc/pic/troff.cpp (troff_output::text): Use GROPS_REG.
+
+2009-12-31 Werner LEMBERG <wl@gnu.org>
+
+ Make patterns with uppercase letters work.
+ Problem reported by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>.
+
+ * src/roff/troff/input.cpp (init_hpf_code_table): Use `cmlower'.
+ * doc/groff.texinfo, man/groff_diff.man: Update documentation of
+ `hpfcode' request.
+
+2009-11-24 Maurice van der Pot <griffon26@kfk4ever.com>
+
+ Fix double frees and memory leaks.
+
+ * src/roff/troff/env.cpp (environment::make_tag): Use local object.
+ * src/roff/troff/input.cpp (input_stack::check_end_diversion): Free
+ `diversion_state' here.
+ (interpolate_arg): Fix memory leaks.
+ * src/roff/troff/mtsm.cpp (mtsm::pop_state): Don't free `sp->state'.
+
+2009-11-20 Paulo Ricardo Zanoni <pzanoni@mandriva.com>
+
+ * */*.cpp: Replace `printf(string);' with `printf("%s", string);'.
+
+2009-10-28 Werner LEMBERG <wl@gnu.org>
+
+ Document limitations with `#' characters, tbl, and eqn.
+ Problem reported by Michael Kain <mcain6925@comcast.net>.
+
+ * src/preproc/eqn/eqn.man, src/preproc/tbl/tbl.man: Do it.
+
+2009-10-26 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc-common (Dx): Define register.
+
+2009-10-26 Jörg Sonnenberger <joerg@britannica.bec.de>
+
+ Implement `%U' in mdoc for URL references.
+
+ * tmac/doc-common (%U): New register.
+ (Rd): Handle `doc-url-count' and `doc-url-name'.
+
+ * tmac/doc.tmac (doc-url-count, doc-url-name): New registers.
+ (doc-save-global-vars, doc-restore-global-vars, doc-reset-reference,
+ doc-print-reference): Handle `doc-url-count' and `doc-url-name'.
+ (%U): New macro.
+
+ * NEWS, tmac/groff_mdoc.man: Document `%U' macro.
+
+2009-09-09 Jari Aalto <jari.aalto@cante.net>
+
+ * src/roff/groff/groff.man: Point to troff(1) for `-w' and `-W'.
+
+2009-09-08 Werner LEMBERG <wl@gnu.org>
+
+ [troff]: Fix hyphenation problem with kerned letters.
+ Problem reported by Steve Izma <sizma@golden.net>.
+
+ * src/roff/troff/node.cpp
+ (kern_pair_node::add_discretionary_hyphen): Compute `tf' using the
+ first node, `n1'. `n2' might be another kerning node, and the
+ `get_tfont' member function isn't defined then.
+
+2009-09-01 Michael Cain <mcain6925@comcast.net>
+
+ [pic] Fix a border case for arc computation.
+
+ * src/preproc/pic/object.cpp (object_spec::make_arc): It can happen
+ that test `radius < d' in the loop is satisfied, but the difference
+ in the two values is on the order of 1e-10. If `radius' is small,
+ doubling the value can lead to a fairly gross error.
+
+ The original code appears to have been intended to deal with the
+ situation when radius is orders of magnitude less than `d'. The
+ replacement code simply assigns `radius' the smallest value that
+ avoids problems with the floating point code further on in the
+ routine.
+
+2009-08-14 Roger Leigh <rleigh@debian.org>
+
+ * man/groff_char.man: Fix white heart and diamond unicode values.
+
+2009-07-29 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/hyphen.fr: Fix typo which prevents hyphenation.
+ Reported by Seb <sbb@tuxfamily.org>.
+
+2009-06-25 Werner LEMBERG <wl@gnu.org>
+
+ Make groff compile on Interix.
+ Reported by Jay Krell <jay.krell@cornell.edu>.
+
+ * configure.ac: Call AC_USE_SYTEM_EXTENSIONS.
+
+ * src/include/lib.h [__INTERIX]: Define _ALL_SOURCE.
+
+ * configure: Regenerated.
+
+2009-05-29 Werner LEMBERG <wl@gnu.org>
+
+ pic: Fix handling of nested positions.
+ Reported by Doug McIlroy <doug@cs.dartmouth.edu>.
+
+ * src/preproc/pic/pic.y: Split `expr' into `expr_lower_than' and
+ `expr_not_lower_than' so that we can handle
+
+ (1/3)<(1/2)<foo,bar>,baz>
+
+ correctly. Without the patch, `(1/3)<(1/2)' is handled prematurely
+ as a comparison.
+
+2009-05-07 Werner LEMBERG <wl@gnu.org>
+
+ Accept \0 and friends within \o.
+ Reported by Doug McIlroy <doug@cs.dartmouth.edu>.
+
+ * src/roff/troff/token.h (token): Add TOKEN_HORIZONTAL_SPACE
+ enumeration value together with `horizontal_space' member function.
+ Add `do_overstrike' as a friend.
+
+ * src/roff/troff/input.cpp: Use TOKEN_HORIZONTAL_SPACE for \0, \|,
+ \^, and \h.
+ Update all affected places.
+ (do_overstrike): Remove `static' attribute.
+ Accept all escapes which produce a fixed horizontal space.
+
+2009-04-24 Werner LEMBERG <wl@gnu.org>
+
+ Use straight quotes where appropriate.
+ Reported by Reuben Thomas <rrt@sc3d.org>.
+
+ * man/groff.man: Do it.
+
+2009-04-14 Werner LEMBERG <wl@gnu.org>
+
+ Fix documentation of `em' request.
+ Reported by Joachim Walsdorff
+ <Joachim.Walsdorff@urz.uni-heidelberg.de>.
+
+ * doc/groff.texinfo (End-of-input Traps): Rewrite.
+
+2009-04-10 Werner LEMBERG <wl@gnu.org>
+
+ Fix a memory leak in troff for -Thtml.
+ Reported by Urs Eggli <Urs.Eggli@zuerich.ch>.
+
+ * src/roff/troff/node.h (node::~node): Move to...
+ * src/roff/troff/node.cpp: Here. Free `state' and `push_state'.
+
+2009-04-01 Werner LEMBERG <wl@gnu.org>
+
+ * tmac/doc.tmac: Call `ec' before mapping characters.
+
+2009-03-07 Werner LEMBERG <wl@gnu.org>
+ Gunnar Florus <http://florus.no>
+
+ Improve configuration.
+
+ * configure.ac: Read `VERSION' and `REVISION' files to provide
+ proper values for AC_INIT.
+ * Makefile.in: Use `@datarootdir@' and `@docdir@' so that
+ configure's `--datarootdir' and `--docdir' options are honoured.
+ Documentation is now by default installed into something like
+ `/usr/local/share/doc/groff-1.20.1'.
+
+ * configure: Regenerated.
+
+2009-02-21 Colin Watson <cjwatson@debian.org>
+ Werner LEMBERG <wl@gnu.org>
+
+ Add a new `file' warning category.
+
+ * src/roff/troff/troff.h (warning_type): Add WARN_FILE.
+ * src/roff/troff/input.cpp (DEFAULT_WARNING_MASK): Include
+ WARN_FILE.
+ (warning_table): Add `file' category.
+ (macro_source): Convert error on missing macro file to a
+ warning.
+ * NEWS, doc/groff.texinfo (I/O, Warnings), man/groff_diff.man,
+ src/roff/troff/troff.man: Document new warning category.
+
+2009-02-18 Werner LEMBERG <wl@gnu.org>
+
+ * doc/groff.texinfo: Improve documentation of `lsm' request.
+
+2009-02-14 Werner LEMBERG <wl@gnu.org>
+
+ Implement a leading spaces macro request, `lsm', in analogy to
+ `blm'.
+ Implement two new number registers, \n[lsn] and \n[lss], which hold
+ the number of spaces and the horizontal space, respectively, which
+ would be inserted if the macro registered by `lsm' wasn't called.
+
+ * src/roff/troff/input.cpp (leading_spaces_macro_name,
+ leading_spaces_number, leading_spaces_space): New global
+ variables.
+ (leading_spaces_macro): New function.
+ (process_input_stack) <token::TOKEN_SPACE>: Handle `lsm'.
+ (init_input_requests): Register `lsm', \n[lsn], and \n[lss].
+
+ * NEWS, man/groff_diff.man, man/groff.man, doc/groff.texinfo
+ (Leading Spaces Traps): Document new requests and registers.
+
+2009-02-10 Denis M. Wilson <dmw@oxytropis.plus.com>
+
+ * man/groff.man: Document missing number registers (`$$', `.b',
+ `.F', `.j', `.k', `.L', `.O', `.P', `.R', `opmaxx', `opmaxy',
+ `opminx', `opminy').
+
+ * doc/groff.texinfo: Document missing `.R' register.
+ Add `.U' to register index.
+
+2009-01-19 Werner LEMBERG <wl@gnu.org>
+
+ Fix incorrect grops color state before \X'...'.
+ Problem reported by Miklos Somogyi <msom@netspace.net.au>.
+
+ * src/devices/grops/ps.cpp (ps_printer::special): Check color state
+ before doing a PS special and flush buffer.
+ Update called functions.
+
+Copyright 2009-2010
+ Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+version-control: never
+coding: utf-8
+End:
diff --git a/INSTALL.gen b/INSTALL.gen
index 5458714..6e90e07 100644
--- a/INSTALL.gen
+++ b/INSTALL.gen
@@ -1,19 +1,25 @@
Installation Instructions
*************************
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006 Free Software Foundation, Inc.
+Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation,
+Inc.
-This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
+ Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
Basic Installation
==================
-Briefly, the shell commands `./configure; make; make install' should
+ Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.
+instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below. The lack of an optional feature in a given package is not
+necessarily a bug. More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
@@ -42,7 +48,7 @@ may remove or edit it.
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
-The simplest way to compile this package is:
+ The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
@@ -53,12 +59,22 @@ The simplest way to compile this package is:
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
- the package.
+ the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+ regular user, particularly if the prior `make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
@@ -67,12 +83,22 @@ The simplest way to compile this package is:
all sorts of other programs in order to regenerate files that came
with the distribution.
+ 7. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 8. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
+
Compilers and Options
=====================
-Some systems require unusual options for compilation or linking that the
-`configure' script does not know about. Run `./configure --help' for
-details on some of the pertinent environment variables.
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
@@ -85,25 +111,41 @@ is an example:
Compiling For Multiple Architectures
====================================
-You can compile the package for more than one kind of computer at the
+ You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
+source code in the directory that `configure' is in and in `..'. This
+is known as a "VPATH" build.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
Installation Names
==================
-By default, `make install' installs the package's commands under
+ By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX'.
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
@@ -114,16 +156,47 @@ Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
+you can set and what kinds of files go in them. In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-Optional Features
-=================
-
-Some packages pay attention to `--enable-FEATURE' options to
+ Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
@@ -135,14 +208,58 @@ find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
+ Some packages offer the ability to configure how verbose the
+execution of `make' will be. For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved. Use GNU `make'
+instead.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+ On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
Specifying the System Type
==========================
-There may be some features `configure' cannot figure out automatically,
-but needs to determine by the type of machine the package will run on.
-Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
-message saying it cannot guess the machine type, give it the
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
@@ -150,7 +267,8 @@ type, such as `sun4', or a canonical name which has the form:
where SYSTEM can have one of these forms:
- OS KERNEL-OS
+ OS
+ KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
@@ -168,9 +286,9 @@ eventually be run) with `--host=TYPE'.
Sharing Defaults
================
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
@@ -179,7 +297,7 @@ A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
-Variables not defined in a site shell script can be set in the
+ Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
@@ -191,18 +309,27 @@ causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf bug. Until the bug is fixed you can use this workaround:
+an Autoconf limitation. Until the limitation is lifted, you can use
+this workaround:
- CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+ CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
-`configure' recognizes the following options to control how it operates.
+ `configure' recognizes the following options to control how it
+operates.
`--help'
`-h'
- Print a summary of the options to `configure', and exit.
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
`--version'
`-V'
@@ -229,6 +356,15 @@ an Autoconf bug. Until the bug is fixed you can use this workaround:
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
+`--prefix=DIR'
+ Use DIR as the installation prefix. *note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.
-
diff --git a/MANIFEST b/MANIFEST
index ef0cc99..fea4cf6 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
- Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010
+ Copyright 2001-2006, 2009-2013
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
@@ -69,6 +69,7 @@ the groff source distribution.
devlbp Device for Canon CAPSL laser printers.
devlj4 Device for HP Laserjet 4, PCL 5, and compatible printers.
devps PostScript device.
+ devpdf PDF device.
devutf8 Text device for Unicode output.
util Utility programs.
@@ -84,6 +85,7 @@ the groff source distribution.
grolbp Canon printers.
grolj4 HP Laserjet 4, PCL 5, and compatible printers.
grops PostScript output.
+ gropdf PDF output.
grotty Text output.
xditview A groff (pre)viewer for the X Window system.
@@ -143,6 +145,19 @@ The groff documentation is scattered upon several places.
- Documentation in other formats are located in the `doc' directory,
including the groff info file, tutorials, and manuals.
+Man-pages have source files ending in `.man'. Running `make' processes
+the files and uses `.n' as the new file extension. In both cases it is
+difficult to quickly decide into which section the man-page shall go.
+Here is a shell command (to be called from the top directory of the
+groff source tree) that finds all man-pages and writes the section
+number after each file name:
+
+ find -type f \
+ | grep '[.]man$' \
+ | sort \
+ | xargs grep -e '^[.]TH ' \
+ | sed -e 's/^\(.\+\): *\.TH.*@MAN\(.*\)EXT@.*$/\1 \2/'
+
4) The roff parser
diff --git a/Makefile.comm b/Makefile.comm
index f3bbc84..67b164a 100644
--- a/Makefile.comm
+++ b/Makefile.comm
@@ -1,4 +1,4 @@
-# Copyright (C) 1989-2000, 2002, 2003, 2004, 2006, 2007, 2009, 2010
+# Copyright (C) 1989-2000, 2002-2004, 2006-2011
# Free Software Foundation, Inc.
# Written by James Clark (jjc@jclark.com)
#
@@ -21,7 +21,7 @@
#
INCLUDES=-I. -I$(srcdir) \
-I$(top_builddir)/src/include -I$(top_srcdir)/src/include \
- -I$(tob_builddir)/src/libs/gnulib/lib
+ -I$(top_builddir)/src/libs/gnulib/lib
ALL_CCFLAGS=$(INCLUDES) $(CCDEFINES) $(CCFLAGS) $(CPPFLAGS)
COMPILE.cpp=$(CCC) $(ALL_CCFLAGS) -c
ALL_CFLAGS=$(INCLUDES) $(CDEFINES) $(CFLAGS) $(CPPFLAGS)
@@ -246,6 +246,18 @@ install_dev:
test -d $(DESTDIR)$(fontsubdir)/generate \
|| $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/generate; \
fi
+ -if test -d $(srcdir)/enc; then \
+ test -d $(DESTDIR)$(fontsubdir)/enc \
+ || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/enc; \
+ fi
+ -if test -d $(srcdir)/map; then \
+ test -d $(DESTDIR)$(fontsubdir)/map \
+ || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/map; \
+ fi
+ -if test -d $(srcdir)/util; then \
+ test -d $(DESTDIR)$(fontsubdir)/util \
+ || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/util; \
+ fi
-if test -d $(srcdir)/old; then \
test -d $(DESTDIR)$(oldfontdir) \
|| $(mkinstalldirs) $(DESTDIR)$(oldfontdir); \
@@ -288,6 +300,12 @@ uninstall_dev:
done
-test -d $(DESTDIR)$(fontsubdir)/generate \
&& rmdir $(DESTDIR)$(fontsubdir)/generate
+ -test -d $(DESTDIR)$(fontsubdir)/enc \
+ && rmdir $(DESTDIR)$(fontsubdir)/enc
+ -test -d $(DESTDIR)$(fontsubdir)/map \
+ && rmdir $(DESTDIR)$(fontsubdir)/map
+ -test -d $(DESTDIR)$(fontsubdir)/util \
+ && rmdir $(DESTDIR)$(fontsubdir)/util
-rmdir $(DESTDIR)$(fontsubdir)
-rmdir $(DESTDIR)$(oldfontsubdir)
diff --git a/Makefile.in b/Makefile.in
index d068a30..ec90669 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010
+# Copyright (C) 1989-2006, 2009-2013
# Free Software Foundation, Inc.
# Written by James Clark (jjc@jclark.com)
#
@@ -188,6 +188,8 @@ localtmacdir=$(dataprogramdir)/site-tmac
# gxditview.
appresdir=@appresdir@
+groffer_dir=@groffer_dir@
+
# `tmacpath' says where to look for macro files.
# The current directory will be prepended in unsafe mode only; the home
# directory will be always added.
@@ -288,6 +290,7 @@ make_install_pdfdoc=@make_install_pdfdoc@
# -DHAVE_STRING_H if you have <string.h>
# -DHAVE_STRINGS_H if you have <strings.h>
# -DHAVE_SYS_DIR_H if you have <sys/dir.h>
+# -DHAVE_SYS_PARAM_H if you have <sys/param.h>
# -DHAVE_SYS_STAT_H if you have <sys/stat.h>
# -DHAVE_SYS_TIME_H if you have <sys/time.h>
# -DHAVE_SYS_TYPES_H if you have <sys/types.h>
@@ -311,6 +314,7 @@ make_install_pdfdoc=@make_install_pdfdoc@
# -DHAVE_STRERROR if you have strerror()
# -DHAVE_STRSEP if you have strsep()
# -DHAVE_STRTOL if you have strtol()
+# -DHAVE_SYMLINK if you have symlink()
# -DHAVE_VSNPRINTF if you have vsnprintf()
#
# -DNEED_DECLARATION_GETTIMEOFTODAY
@@ -352,6 +356,9 @@ make_install_pdfdoc=@make_install_pdfdoc@
# produced for a process that was terminated
# by a signal
#
+# -DHAVE_WORKING_O_NOATIME define if <fcntl.h>'s O_NOATIME flag works
+# -DHAVE_WORKING_O_NOFOLLOW define if <fcntl.h>'s O_NOFOLLOW flag works
+#
# -Duintmax_t=<value> define to `unsigned long' or `unsigned long
# long' if <inttypes.h> does not exist
#
@@ -435,7 +442,7 @@ PURIFYCCFLAGS=
# Passing down MAKEOVERRIDES prevents $(MAKE) from containing a second
# copy of $(MDEFINES) when making individual directories; this could
# cause the argument list to become too long on some systems.
-MDEFINES= \
+MDEFINES=\
"ALT_AWK_PROGS=$(ALT_AWK_PROGS)" \
"ALT_GHOSTSCRIPT_PROGS=$(ALT_GHOSTSCRIPT_PROGS)" \
"AR=$(AR)" \
@@ -493,6 +500,7 @@ MDEFINES= \
"YACC=$(YACC)" \
"YACCFLAGS=$(YACCFLAGS)" \
"appresdir=$(appresdir)" \
+ "groffer_dir=$(groffer_dir)" \
"bindir=$(bindir)" \
"common_words_file=$(common_words_file)" \
"datadir=$(datadir)" \
@@ -543,7 +551,13 @@ MDEFINES= \
"top_srcdir=$(top_srcdir)" \
"version=$(version)"
-MAKE_K_FLAG=`case "$(MAKEFLAGS)" in *k*) echo ' -k ';; esac`
+MAKE_K_FLAG=`for f in x $(MAKEFLAGS); do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) echo ' -k ';; \
+ esac; \
+ done`
+
INCDIRS=\
src/include
@@ -593,7 +607,8 @@ ALLTTYDEVDIRS=\
font/devlatin1 \
font/devutf8 \
font/devcp1047
-# `doc' must be processed before `contrib/pdfmark'.
+# `doc' must be processed before `contrib/pdfmark',
+# pdf stuff must be processed before `contrib/mom
OTHERDIRS=\
man \
tmac \
@@ -607,10 +622,15 @@ OTHERDIRS=\
contrib/eqn2graph \
contrib/grap2graph \
contrib/groffer \
- contrib/mom \
contrib/hdtbl \
contrib/pdfmark \
+ src/devices/gropdf \
+ font/devpdf \
+ contrib/mom \
contrib/gdiffmk
+
+# OTHERDIRS is handled specially in the `$(TARGETS)' rule to avoid
+# dependency problems with parallel builds.
ALLDIRS=\
$(INCDIRS) \
$(LIBDIRS) \
@@ -618,8 +638,8 @@ ALLDIRS=\
$(DEVDIRS) \
$(XDEVDIRS) \
$(OTHERDEVDIRS) \
- $(TTYDEVDIRS) \
- $(OTHERDIRS)
+ $(TTYDEVDIRS)
+# $(OTHERDIRS)
EXTRADIRS=\
font/devps/generate \
font/devdvi/generate \
@@ -643,8 +663,10 @@ NOMAKEDIRS=\
src/libs/gnulib/lib/uniwidth \
src/libs/gnulib/m4 \
src/libs/gnulib/build-aux \
+ src/libs/gnulib/build-aux/snippet \
src/libs/gnulib \
font/devps/old \
+ font/devpdf/util \
font/util
GNULIBDIRS=\
src/libs/gnulib
@@ -680,13 +702,14 @@ ENVSETUP=\
fi
do=all
-dodirs=$(ALLDIRS) dot
+dodirs=$(ALLDIRS) $(OTHERDIRS) dot
# Default target for subdir_Makefile
subdir=src/roff/troff
$(TARGETS):
- @$(ENVSETUP); $(MAKE) $(MAKE_K_FLAG) $(MDEFINES) do=$@ $(dodirs)
+ @$(ENVSETUP); $(MAKE) $(MAKE_K_FLAG) do=$@ $(ALLDIRS)
+ @$(ENVSETUP); $(MAKE) $(MAKE_K_FLAG) do=$@ $(OTHERDIRS) dot
dot: FORCE
@$(ENVSETUP); \
@@ -699,7 +722,7 @@ $(LIBDIRS): FORCE $(INCDIRS) $(PROGDEPDIRS) $(GNULIBDIRS)
if test $(srcdir) = .; then \
srcdir=.; \
else \
- srcdir=`cd $(srcdir); pwd`/$@; \
+ srcdir=$(top_srcdir)/$@; \
fi; \
test -d $@ || $(mkinstalldirs) $@; \
cd $@; \
@@ -715,7 +738,7 @@ $(CPROGDIRS) $(XPROGDIRS): FORCE $(LIBDIRS)
if test $(srcdir) = .; then \
srcdir=.; \
else \
- srcdir=`cd $(srcdir); pwd`/$@; \
+ srcdir=$(top_srcdir)/$@; \
fi; \
test -d $@ || $(mkinstalldirs) $@; \
cd $@; \
@@ -731,7 +754,7 @@ $(CCPROGDIRS): FORCE $(LIBDIRS)
if test $(srcdir) = .; then \
srcdir=.; \
else \
- srcdir=`cd $(srcdir); pwd`/$@; \
+ srcdir=$(top_srcdir)/$@; \
fi; \
test -d $@ || $(mkinstalldirs) $@; \
cd $@; \
@@ -747,7 +770,7 @@ $(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) $(TTYDEVDIRS): FORCE $(PROGDEPDIRS) $(CCP
if test $(srcdir) = .; then \
srcdir=.; \
else \
- srcdir=`cd $(srcdir); pwd`/$@; \
+ srcdir=$(top_srcdir)/$@; \
fi; \
test -d $@ || $(mkinstalldirs) $@; \
cd $@; \
@@ -761,14 +784,16 @@ $(GNULIBDIRS): FORCE
if test $(srcdir) = .; then \
srcdir=.; \
else \
- srcdir=`cd $(srcdir); pwd`/$@; \
+ srcdir=$(top_srcdir)/$@; \
fi; \
test -d $@ || $(mkinstalldirs) $@; \
case $(do) in \
all) \
- cd $@; \
- test -f Makefile || $(SHELL) $$srcdir/configure ; \
- $(MAKE) ACLOCAL=: AUTOCONF=: AUTOHEADER=: AUTOMAKE=: $(do) ;; \
+ cd $@; \
+ args=`$(top_builddir)/config.status --config`; \
+ test -f Makefile \
+ || eval $$srcdir/configure "$$args" --srcdir=$$srcdir; \
+ $(MAKE) ACLOCAL=: AUTOCONF=: AUTOHEADER=: AUTOMAKE=: $(do) ;; \
esac
$(OTHERDIRS): $(PROGDEPDIRS) $(CCPROGDIRS) $(CPROGDIRS)
@@ -778,7 +803,7 @@ $(INCDIRS) $(PROGDEPDIRS) $(OTHERDIRS): FORCE
if test $(srcdir) = .; then \
srcdir=.; \
else \
- srcdir=`cd $(srcdir); pwd`/$@; \
+ srcdir=$(top_srcdir)/$@; \
fi; \
test -d $@ || $(mkinstalldirs) $@; \
cd $@; \
@@ -795,14 +820,13 @@ dist:
for d in $(DISTDIRS); do \
$(mkinstalldirs) tmp/$$d; \
done
- srcdir=`cd $(srcdir); pwd`; \
cd tmp; \
cp ../Makefile .; \
- cp $$srcdir/* . 2>/dev/null || true; \
+ cp $(top_srcdir)/* . 2>/dev/null || true; \
rm -rf CVS; \
for d in $(DISTDIRS); do \
(cd $$d; \
- cp $$srcdir/$$d/* . 2>/dev/null; \
+ cp $(top_srcdir)/$$d/* . 2>/dev/null; \
rm -rf CVS || true); \
done; \
$(MAKE) srcdir=. VPATH=. distfiles; \
@@ -816,7 +840,7 @@ dist:
fi); \
done; \
rm -f Makefile; \
- cp $$srcdir/Makefile.init Makefile
+ cp $(top_srcdir)/Makefile.init Makefile
mv tmp groff-$(version)$(revision)
tar cfh - groff-$(version)$(revision) | \
gzip -c >groff-$(version)$(revision).tar.gz
diff --git a/Makefile.sub b/Makefile.sub
index c34292d..2e032a5 100644
--- a/Makefile.sub
+++ b/Makefile.sub
@@ -1,4 +1,4 @@
-# Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2006, 2009
+# Copyright (C) 1989-2000, 2001-2004, 2006, 2009, 2013
# Free Software Foundation, Inc.
# Written by James Clark (jjc@jclark.com)
#
@@ -20,24 +20,32 @@
# Makefile.sub
#
DISTCLEANFILES=\
- config.status \
- config.log \
- config.cache \
- stamp-h \
Makefile \
- test-groff \
+ config.cache \
+ config.log \
+ config.status \
+ groff.log \
+ groff.sum \
src/include/config.h \
- site.exp \
site.bak \
- groff.sum \
- groff.log
-MOSTLYCLEANADD=Makefile.cfg conftest*
+ site.exp \
+ stamp-h \
+ test-groff
+
+MOSTLYCLEANADD=\
+ Makefile.cfg \
+ conftest*
-M4MACROS = \
+M4MACROS=\
+ $(srcdir)/m4/codeset.m4 \
+ $(srcdir)/m4/fcntl-o.m4 \
+ $(srcdir)/m4/glibc21.m4 \
$(srcdir)/m4/groff.m4 \
- $(srcdir)/m4/codeset.m4 $(srcdir)/m4/glibc21.m4 \
$(srcdir)/m4/iconv.m4 \
- $(srcdir)/m4/lib-link.m4 $(srcdir)/m4/lib-ld.m4 $(srcdir)/m4/lib-prefix.m4
+ $(srcdir)/m4/lib-ld.m4 \
+ $(srcdir)/m4/lib-link.m4 \
+ $(srcdir)/m4/lib-prefix.m4 \
+ $(srcdir)/m4/localcharset.m4
distfiles: configure
diff --git a/NEWS b/NEWS
index 4cfe454..96f1b3c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,4 @@
- Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010
+ Copyright (C) 1989-2013
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
@@ -9,6 +8,78 @@
This file describes recent user-visible changes in groff. Bug fixes are not
described. There are more details in the man and info pages.
+
+VERSION 1.22.2
+==============
+
+Tbl
+---
+
+o The character `#' can now be used as an eqn delimiter within tables.
+
+
+Eqn
+---
+
+o A GNU extension
+
+ delim on
+
+ has been added to reactivate delimiters which have been disabled with
+ `delim off'.
+
+
+VERSION 1.22.1
+==============
+
+(There was no release 1.22.)
+
+Groff
+-----
+
+o A new option `-j' has been added to call the `chem' preprocessor.
+
+Tbl
+---
+
+o Improved line numbering support.
+
+Macro Packages
+--------------
+
+o Support for the `refer' preprocessor has been added to the -mm macro
+ package.
+
+o In -me, the `TH' macro was changed for compatibility with line number
+ support in tables.
+
+ `bl' now works inside of blocks.
+
+ The behaviour of centered blocks has been improved.
+
+ Line numbering support has been improved.
+
+o The -mom macro package has reached version 2.0, focusing on PDF output
+ with gropdf (using the new `pdfmom' wrapper script). See the file
+ `version-2.html' of the -mom documentation for a list of the many changes.
+
+o Some generic Unicode fallback characters (mainly Roman numerals) have been
+ added.
+
+Gropdf
+------
+
+o A new driver for generating PDF output directly, contributed by Deri James
+ <deri@chuzzlewit.myzen.co.uk>. Note that this driver is written in Perl,
+ thus you need a working Perl installation to run this output device.
+
+Pdfmom
+------
+
+o A new wrapper around groff that facilitates the production of PDF
+ documents from files formatted with the -mom macros.
+
+
VERSION 1.21
============
diff --git a/README b/README
index a2bae61..dbee197 100644
--- a/README
+++ b/README
@@ -1,5 +1,4 @@
- Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008,
- 2009
+ Copyright (C) 1989-2006, 2008, 2009, 2012-2013
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
@@ -11,12 +10,12 @@ number is given in the file VERSION.
Included in this release are implementations of `troff', `pic', `eqn',
`tbl', `grn', `refer', `-man', `-mdoc', `-mom', and `-ms' macros, and
-drivers for `PostScript', `TeX dvi' format, `HP LaserJet 4' printers,
-`Canon CAPSL' printers, `HTML' and `XHTML' formats (beta status), and
-typewriter-like devices. Also included is a modified version of the
-Berkeley `-me' macros, the enhanced version `gxditview' of the X11
-`xditview' previewer, and an implementation of the `-mm' macros
-contributed by Joergen Haegg (jh@axis.se).
+drivers for `PostScript', `PDF', `TeX DVI' format, `HP LaserJet 4'
+printers, `Canon CAPSL' printers, `HTML' and `XHTML' formats (beta
+status), and typewriter-like devices. Also included is a modified
+version of the Berkeley `-me' macros, the enhanced version `gxditview'
+of the X11 `xditview' previewer, and an implementation of the `-mm'
+macros contributed by Joergen Haegg (jh@axis.se).
See the file `INSTALL' for installation instructions. You require
a C++ compiler.
@@ -43,9 +42,9 @@ then executing the commands
cd ~/cvswork
cvs -d:pserver:anonymous@cvs.savannah.gnu.org/sources/groff -z5 co groff
-This creates a subdirectory, `~/cvswork/groff', with a `checked
-out' copy of the `CVS' repository. An update of this working copy may
-be achieved, at any later time by invoking the commands
+This creates a subdirectory, `~/cvswork/groff', with a `checked out'
+copy of the `CVS' repository. An update of this working copy may be
+achieved, at any later time by invoking the commands
cd ~/cvswork/groff
cvs -z5 update -dP
@@ -57,13 +56,13 @@ pointing it to
http://savannah.gnu.org/cvs/?group=groff
-Alternatively, you can download snapshots (which are updated twice a day).
-The complete `groff' source as a single file is available at
+Alternatively, you can download snapshots (which are updated twice a
+day). The complete `groff' source as a single file is available at
http://groff.ffii.org/groff/devel/groff-current.tar.gz
A diff file relative to `groff-<version>', the latest official `groff'
-release is available at
+release, is available at
http://groff.ffii.org/groff/devel/groff-<version>-current.diff.gz
@@ -90,17 +89,22 @@ daily snapshot). They are not required for building from a stable
release tarball. Also note that the version numbers stated are the
minimum supported. No version of `texinfo' < 4.8 works, and the
original release of `bison' 1.875 is known not to work; you *may* find
-that `bison' releases < 1.875 work, but in case of difficulty,
-please update to a later version *before* posting a bug report.
+that `bison' releases < 1.875 work, but in case of difficulty, please
+update to a later version *before* posting a bug report.
For *all* sources, you need ghostscript for creation of either `PDF' or
-`HTML' output; the `netpbm' and `psutils' packages are required only for
-`HTML' output. If you don't intend to produce output in either of these
-formats, then these packages are unnecessary.
+`HTML' output; the `netpbm' and `psutils' packages are required only
+for `HTML' output (and for compilation from the CVS). If you don't
+intend to produce output in either of these formats, then these
+packages are unnecessary.
+
+Additionally, producing `PDF' output directly with the `gropdf' device
+needs a working installation of Perl. The same is true for the `chem'
+preprocessor.
In Linux Debian, the installation of `texinfo' is dangerous. For it
-creates a file `install-info' that blocks the system installation.
-So the created `/usr/local/bin/install-info' must be renamed.
+creates a file `install-info' that blocks the system installation. So
+the created `/usr/local/bin/install-info' must be renamed.
The `groff' configure script searches for the X11 headers and
libraries `Xaw' and `Xmu'. So the corresponding developer packages of
@@ -108,12 +112,13 @@ your system must be installed, otherwise `groff' does not install
`gxditview' and the `-TX*' devices. In Debian, the developer packages
are `libxaw7-dev' and `libxmu-dev'.
-Please report bugs using the form in the file `BUG-REPORT'; the idea of
-this is to make sure that FSF has all the information it needs to fix
-the bug. At the very least, read the `BUG-REPORT' form and make sure
-that you supply all the information that it asks for. Even if you are
-not sure that something is a bug, report it using `BUG-REPORT': this
-enables us to determine whether it really is a bug or not.
+Please report bugs using the form in the file `BUG-REPORT'; the idea
+of this is to make sure that FSF has all the information it needs to
+fix the bug. At the very least, read the `BUG-REPORT' form and make
+sure that you supply all the information that it asks for. Even if
+you are not sure that something is a bug, report it using
+`BUG-REPORT': this enables us to determine whether it really is a bug
+or not.
Three mailing lists are available:
diff --git a/REVISION b/REVISION
index 573541a..0cfbf08 100644
--- a/REVISION
+++ b/REVISION
@@ -1 +1 @@
-0
+2
diff --git a/VERSION b/VERSION
index d2ab029..71f7f51 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.21
+1.22
diff --git a/aclocal.m4 b/aclocal.m4
index 3fbadfe..022a45b 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.12.5 -*- Autoconf -*-
+
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -12,9 +12,11 @@
# PARTICULAR PURPOSE.
m4_include([m4/codeset.m4])
+m4_include([m4/fcntl-o.m4])
m4_include([m4/glibc21.m4])
m4_include([m4/groff.m4])
m4_include([m4/iconv.m4])
m4_include([m4/lib-ld.m4])
m4_include([m4/lib-link.m4])
m4_include([m4/lib-prefix.m4])
+m4_include([m4/localcharset.m4])
diff --git a/config.guess b/config.guess
index 4c8f032..b94cde8 100755
--- a/config.guess
+++ b/config.guess
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012, 2013 Free Software Foundation, Inc.
-timestamp='2010-09-24'
+timestamp='2012-12-23'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -17,9 +17,7 @@ timestamp='2010-09-24'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -57,8 +55,8 @@ GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+2012, 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -92,7 +90,7 @@ if test $# != 0; then
exit 1
fi
-trap 'exit 1' HUP INT TERM
+trap 'exit 1' 1 2 15
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
@@ -106,7 +104,7 @@ trap 'exit 1' HUP INT TERM
set_cc_for_build='
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
: ${TMPDIR=/tmp} ;
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
@@ -145,7 +143,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
@@ -181,7 +179,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
fi
;;
*)
- os=netbsd
+ os=netbsd
;;
esac
# The OS release
@@ -202,6 +200,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
@@ -224,7 +226,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
@@ -270,7 +272,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
@@ -296,12 +301,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo s390-ibm-zvmoe
exit ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
+ echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -395,23 +400,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
exit ;;
@@ -481,8 +486,8 @@ EOF
echo m88k-motorola-sysv3
exit ;;
AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@@ -495,7 +500,7 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit ;;
@@ -595,52 +600,52 @@ EOF
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
+ esac ;;
+ esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ sed 's/^ //' << EOF >$dummy.c
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -731,22 +736,22 @@ EOF
exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
@@ -770,14 +775,14 @@ EOF
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -789,30 +794,35 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
- case ${UNAME_MACHINE} in
- pc98)
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac
exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
+ i*:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
*:Interix*:*)
- case ${UNAME_MACHINE} in
+ case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
@@ -858,6 +868,13 @@ EOF
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
@@ -867,7 +884,7 @@ EOF
EV6) UNAME_MACHINE=alphaev6 ;;
EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
+ esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
@@ -879,20 +896,29 @@ EOF
then
echo ${UNAME_MACHINE}-unknown-linux-gnu
else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ fi
fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
cris:Linux:*:*)
- echo cris-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
frv:Linux:*:*)
- echo frv-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:Linux:*:*)
LIBC=gnu
@@ -934,7 +960,7 @@ EOF
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
- echo or32-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
@@ -960,7 +986,7 @@ EOF
echo ${UNAME_MACHINE}-ibm-linux
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -969,16 +995,16 @@ EOF
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-tilera-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -987,11 +1013,11 @@ EOF
echo i386-sequent-sysv4
exit ;;
i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
+ # Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit ;;
i*86:OS/2:*:*)
@@ -1023,7 +1049,7 @@ EOF
fi
exit ;;
i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
@@ -1051,13 +1077,13 @@ EOF
exit ;;
pc:*:*:*)
# Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i586.
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configury will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
- exit ;;
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit ;;
@@ -1092,8 +1118,8 @@ EOF
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
@@ -1136,10 +1162,10 @@ EOF
echo ns32k-sni-sysv
fi
exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
@@ -1165,11 +1191,11 @@ EOF
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv${UNAME_RELEASE}
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit ;;
@@ -1182,6 +1208,9 @@ EOF
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@@ -1237,7 +1266,7 @@ EOF
NEO-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
+ NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
@@ -1282,13 +1311,13 @@ EOF
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
+ echo mips-sei-seiux${UNAME_RELEASE}
exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;;
*:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
case "${UNAME_MACHINE}" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
@@ -1306,11 +1335,11 @@ EOF
i*86:AROS:*:*)
echo ${UNAME_MACHINE}-pc-aros
exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
esac
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
@@ -1328,11 +1357,11 @@ main ()
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
- "4"
+ "4"
#else
- ""
+ ""
#endif
- ); exit (0);
+ ); exit (0);
#endif
#endif
diff --git a/config.rpath b/config.rpath
index 85c2f20..1a07018 100755
--- a/config.rpath
+++ b/config.rpath
@@ -2,7 +2,7 @@
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
-# Copyright 1996-2008 Free Software Foundation, Inc.
+# Copyright 1996-2012 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
@@ -25,7 +25,7 @@
# known workaround is to choose shorter directory names for the build
# directory and/or the installation directory.
-# All known linkers require a `.a' archive for static linking (except MSVC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
shrext=.so
@@ -57,13 +57,6 @@ else
aix*)
wl='-Wl,'
;;
- darwin*)
- case $cc_basename in
- xlc*)
- wl='-Wl,'
- ;;
- esac
- ;;
mingw* | cygwin* | pw32* | os2* | cegcc*)
;;
hpux9* | hpux10* | hpux11*)
@@ -72,9 +65,7 @@ else
irix5* | irix6* | nonstopux*)
wl='-Wl,'
;;
- newsos6)
- ;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
ecc*)
wl='-Wl,'
@@ -85,17 +76,26 @@ else
lf95*)
wl='-Wl,'
;;
- pgcc | pgf77 | pgf90)
+ nagfor*)
+ wl='-Wl,-Wl,,'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
wl='-Wl,'
;;
ccc*)
wl='-Wl,'
;;
+ xl* | bgxl* | bgf* | mpixl*)
+ wl='-Wl,'
+ ;;
como)
wl='-lopt='
;;
*)
case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ F* | *Sun*Fortran*)
+ wl=
+ ;;
*Sun\ C*)
wl='-Wl,'
;;
@@ -103,13 +103,24 @@ else
;;
esac
;;
+ newsos6)
+ ;;
+ *nto* | *qnx*)
+ ;;
osf3* | osf4* | osf5*)
wl='-Wl,'
;;
rdos*)
;;
solaris*)
- wl='-Wl,'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ wl='-Qoption ld '
+ ;;
+ *)
+ wl='-Wl,'
+ ;;
+ esac
;;
sunos4*)
wl='-Qoption ld '
@@ -171,15 +182,14 @@ if test "$with_gnu_ld" = yes; then
fi
;;
amigaos*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
- # that the semantics of dynamic libraries on AmigaOS, at least up
- # to version 4, is to share data among multiple programs linked
- # with the same dynamic library. Since this doesn't match the
- # behavior of shared libraries on other platforms, we cannot use
- # them.
- ld_shlibs=no
+ case "$host_cpu" in
+ powerpc)
+ ;;
+ m68k)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
;;
beos*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
@@ -198,11 +208,13 @@ if test "$with_gnu_ld" = yes; then
ld_shlibs=no
fi
;;
+ haiku*)
+ ;;
interix[3-9]*)
hardcode_direct=no
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
;;
- gnu* | linux* | k*bsd*-gnu)
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
@@ -325,10 +337,14 @@ else
fi
;;
amigaos*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # see comment about different semantics on the GNU ld section
- ld_shlibs=no
+ case "$host_cpu" in
+ powerpc)
+ ;;
+ m68k)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
;;
bsdi[45]*)
;;
@@ -342,24 +358,15 @@ else
;;
darwin* | rhapsody*)
hardcode_direct=no
- if test "$GCC" = yes ; then
+ if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then
:
else
- case $cc_basename in
- xlc*)
- ;;
- *)
- ld_shlibs=no
- ;;
- esac
+ ld_shlibs=no
fi
;;
dgux*)
hardcode_libdir_flag_spec='-L$libdir'
;;
- freebsd1*)
- ld_shlibs=no
- ;;
freebsd2.2*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
@@ -420,6 +427,8 @@ else
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
+ *nto* | *qnx*)
+ ;;
openbsd*)
if test -f /usr/libexec/ld.so; then
hardcode_direct=yes
@@ -515,7 +524,12 @@ case "$host_os" in
library_names_spec='$libname$shrext'
;;
amigaos*)
- library_names_spec='$libname.a'
+ case "$host_cpu" in
+ powerpc*)
+ library_names_spec='$libname$shrext' ;;
+ m68k)
+ library_names_spec='$libname.a' ;;
+ esac
;;
beos*)
library_names_spec='$libname$shrext'
@@ -534,8 +548,6 @@ case "$host_os" in
dgux*)
library_names_spec='$libname$shrext'
;;
- freebsd1*)
- ;;
freebsd* | dragonfly*)
case "$host_os" in
freebsd[123]*)
@@ -547,6 +559,9 @@ case "$host_os" in
gnu*)
library_names_spec='$libname$shrext'
;;
+ haiku*)
+ library_names_spec='$libname$shrext'
+ ;;
hpux9* | hpux10* | hpux11*)
case $host_cpu in
ia64*)
@@ -582,7 +597,7 @@ case "$host_os" in
;;
linux*oldld* | linux*aout* | linux*coff*)
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
library_names_spec='$libname$shrext'
;;
knetbsd*-gnu)
@@ -594,7 +609,7 @@ case "$host_os" in
newsos6)
library_names_spec='$libname$shrext'
;;
- nto-qnx*)
+ *nto* | *qnx*)
library_names_spec='$libname$shrext'
;;
openbsd*)
@@ -625,6 +640,9 @@ case "$host_os" in
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
library_names_spec='$libname$shrext'
;;
+ tpf*)
+ library_names_spec='$libname$shrext'
+ ;;
uts4*)
library_names_spec='$libname$shrext'
;;
diff --git a/config.sub b/config.sub
index 3ec94f1..eee8dcc 100755
--- a/config.sub
+++ b/config.sub
@@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012, 2013 Free Software Foundation, Inc.
-timestamp='2010-12-11'
+timestamp='2012-12-23'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -21,9 +21,7 @@ timestamp='2010-12-11'
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -76,8 +74,8 @@ version="\
GNU config.sub ($timestamp)
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+2012, 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -125,13 +123,17 @@ esac
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
@@ -154,12 +156,12 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze)
+ -apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
- -bluegene*)
- os=-cnk
+ -bluegene*)
+ os=-cnk
;;
-sim | -cisco | -oki | -wec | -winbond)
os=
@@ -175,10 +177,10 @@ case $os in
os=-chorusos
basic_machine=$1
;;
- -chorusrdb)
- os=-chorusrdb
+ -chorusrdb)
+ os=-chorusrdb
basic_machine=$1
- ;;
+ ;;
-hiux*)
os=-hiuxwe2
;;
@@ -223,6 +225,12 @@ case $os in
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
-lynx*)
os=-lynxos
;;
@@ -247,20 +255,27 @@ case $basic_machine in
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
+ | aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | arc \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
+ | epiphany \
| fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep | metag \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -286,22 +301,23 @@ case $basic_machine in
| nds32 | nds32le | nds32be \
| nios | nios2 \
| ns16k | ns32k \
+ | open8 \
| or32 \
| pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
- | rx \
+ | rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu | strongarm \
- | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
- | v850 | v850e \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \
- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
@@ -314,8 +330,7 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12 | picochip)
- # Motorola 68HC11/12.
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -325,6 +340,21 @@ case $basic_machine in
basic_machine=mt-unknown
;;
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
+ ;;
+
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
@@ -339,11 +369,13 @@ case $basic_machine in
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
+ | aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
+ | be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
@@ -352,12 +384,15 @@ case $basic_machine in
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -382,24 +417,26 @@ case $basic_machine in
| nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
- | romp-* | rs6000-* | rx-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tile-* | tilegx-* \
+ | tile*-* \
| tron-* \
| ubicom32-* \
- | v850-* | v850e-* | vax-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-* | z80-*)
@@ -424,7 +461,7 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
- abacus)
+ abacus)
basic_machine=abacus-unknown
;;
adobe68k)
@@ -507,7 +544,7 @@ case $basic_machine in
basic_machine=c90-cray
os=-unicos
;;
- cegcc)
+ cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
@@ -697,7 +734,6 @@ case $basic_machine in
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
@@ -755,9 +791,13 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
- microblaze)
+ microblaze*)
basic_machine=microblaze-xilinx
;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
@@ -794,10 +834,18 @@ case $basic_machine in
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
+ msys)
+ basic_machine=i386-pc
+ os=-msys
+ ;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
@@ -862,10 +910,10 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
- neo-tandem)
+ neo-tandem)
basic_machine=neo-tandem
;;
- nse-tandem)
+ nse-tandem)
basic_machine=nse-tandem
;;
nsr-tandem)
@@ -950,9 +998,10 @@ case $basic_machine in
;;
power) basic_machine=power-ibm
;;
- ppc) basic_machine=powerpc-unknown
+ ppc | ppcbe) basic_machine=powerpc-unknown
;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
@@ -977,7 +1026,11 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
- rdos)
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
+ ;;
+ rdos32)
basic_machine=i386-pc
os=-rdos
;;
@@ -1046,6 +1099,9 @@ case $basic_machine in
basic_machine=i860-stratus
os=-sysv4
;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
sun2)
basic_machine=m68000-sun
;;
@@ -1102,13 +1158,8 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
- # This must be matched before tile*.
- tilegx*)
- basic_machine=tilegx-unknown
- os=-linux-gnu
- ;;
tile*)
- basic_machine=tile-unknown
+ basic_machine=$basic_machine-unknown
os=-linux-gnu
;;
tx39)
@@ -1178,6 +1229,9 @@ case $basic_machine in
xps | xps100)
basic_machine=xps100-honeywell
;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
ymp)
basic_machine=ymp-cray
os=-unicos
@@ -1275,11 +1329,11 @@ esac
if [ x"$os" != x"" ]
then
case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
+ # First match some system type aliases
+ # that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
- -auroraux)
- os=-auroraux
+ -auroraux)
+ os=-auroraux
;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
@@ -1309,15 +1363,15 @@ case $os in
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -openbsd* | -solidbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-uclibc* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1364,7 +1418,7 @@ case $os in
-opened*)
os=-openedition
;;
- -os400*)
+ -os400*)
os=-os400
;;
-wince*)
@@ -1413,7 +1467,7 @@ case $os in
-sinix*)
os=-sysv4
;;
- -tpf*)
+ -tpf*)
os=-tpf
;;
-triton*)
@@ -1458,8 +1512,8 @@ case $os in
-dicos*)
os=-dicos
;;
- -nacl*)
- ;;
+ -nacl*)
+ ;;
-none)
;;
*)
@@ -1482,10 +1536,10 @@ else
# system, and we'll never get to this point.
case $basic_machine in
- score-*)
+ score-*)
os=-elf
;;
- spu-*)
+ spu-*)
os=-elf
;;
*-acorn)
@@ -1497,8 +1551,11 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
- c4x-* | tic4x-*)
- os=-coff
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ hexagon-*)
+ os=-elf
;;
tic54x-*)
os=-coff
@@ -1527,14 +1584,11 @@ case $basic_machine in
;;
m68000-sun)
os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
;;
m68*-cisco)
os=-aout
;;
- mep-*)
+ mep-*)
os=-elf
;;
mips*-cisco)
@@ -1561,7 +1615,7 @@ case $basic_machine in
*-ibm)
os=-aix
;;
- *-knuth)
+ *-knuth)
os=-mmixware
;;
*-wec)
diff --git a/configure b/configure
index 0e806a1..63e9e5d 100755
--- a/configure
+++ b/configure
@@ -1,13 +1,11 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.67 for groff 1.21.
+# Generated by GNU Autoconf 2.69 for groff 1.22.2.
#
# Report bugs to <bug-groff@gnu.org>.
#
#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -91,6 +89,7 @@ fi
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -135,6 +134,31 @@ export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
@@ -168,7 +192,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -213,14 +238,25 @@ IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
if test x$as_have_required = xno; then :
@@ -323,6 +359,14 @@ $as_echo X"$as_dir" |
} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -444,6 +488,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
@@ -478,16 +526,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -499,28 +547,8 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -551,9 +579,9 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='groff'
-PACKAGE_TARNAME='groff-1.21'
-PACKAGE_VERSION='1.21'
-PACKAGE_STRING='groff 1.21'
+PACKAGE_TARNAME='groff-1.22.2'
+PACKAGE_VERSION='1.22.2'
+PACKAGE_STRING='groff 1.22.2'
PACKAGE_BUGREPORT='bug-groff@gnu.org'
PACKAGE_URL=''
@@ -595,6 +623,7 @@ ac_includes_default="\
#endif"
ac_header_list=
+ac_func_list=
ac_subst_vars='LTLIBOBJS
GLIBC21
pnmtops_nosetpage
@@ -623,6 +652,7 @@ LIBOBJS
LIBEXT
LTLIBICONV
LIBICONV
+CXXCPP
host_os
host_vendor
host_cpu
@@ -648,6 +678,7 @@ PSPRINT
LPQ
LP
LPR
+groffer_dir
appresdir
XLIBDIRS
XPROGDIRS
@@ -715,6 +746,7 @@ ac_user_opts='
enable_option_checking
with_x
with_appresdir
+with_grofferdir
with_gnu_ld
enable_rpath
with_libiconv_prefix
@@ -735,7 +767,8 @@ CPP
CXX
CXXFLAGS
CCC
-XMKMF'
+XMKMF
+CXXCPP'
# Initialize some variables set by options.
@@ -1140,7 +1173,7 @@ Try \`$0 --help' for more information"
$as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
$as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
esac
@@ -1191,8 +1224,6 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1278,7 +1309,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures groff 1.21 to adapt to many kinds of systems.
+\`configure' configures groff 1.22.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1326,7 +1357,7 @@ Fine tuning of the installation directories:
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/groff-1.21]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/groff-1.22.2]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
@@ -1347,7 +1378,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of groff 1.21:";;
+ short | recursive ) echo "Configuration of groff 1.22.2:";;
esac
cat <<\_ACEOF
@@ -1362,6 +1393,7 @@ Optional Packages:
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-x use the X Window System
--with-appresdir=DIR X11 application resource files
+ --with-grofferdir=DIR groffer files location
--with-gnu-ld assume the C compiler uses GNU ld default=no
--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
--without-libiconv-prefix don't search for libiconv in includedir and libdir
@@ -1382,6 +1414,7 @@ Some influential environment variables:
CXX C++ compiler command
CXXFLAGS C++ compiler flags
XMKMF Path to xmkmf, Makefile generator for X Window System
+ CXXCPP C++ preprocessor
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -1449,10 +1482,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-groff configure 1.21
-generated by GNU Autoconf 2.67
+groff configure 1.22.2
+generated by GNU Autoconf 2.69
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1496,7 +1529,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_compile
@@ -1533,7 +1566,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_cpp
@@ -1546,10 +1579,10 @@ fi
ac_fn_c_check_header_mongrel ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval "test \"\${$3+set}\"" = set; then :
+ if eval \${$3+:} false; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
fi
eval ac_res=\$$3
@@ -1610,13 +1643,13 @@ $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >
$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
( $as_echo "## -------------------------------- ##
## Report this to bug-groff@gnu.org ##
-## -------------------------------- ##"[]
+## -------------------------------- ##"
) | sed "s/^/$as_me: WARNING: /" >&2
;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
eval "$3=\$ac_header_compiler"
@@ -1625,7 +1658,7 @@ eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_mongrel
@@ -1666,7 +1699,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=$ac_status
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_run
@@ -1680,7 +1713,7 @@ ac_fn_c_check_header_compile ()
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1698,7 +1731,7 @@ fi
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_compile
@@ -1735,7 +1768,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_cxx_try_compile
@@ -1777,7 +1810,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=$ac_status
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_cxx_try_run
@@ -1809,7 +1842,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -1823,7 +1856,7 @@ fi
# interfere with the next link command; also delete a directory that is
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_cxx_try_link
@@ -1855,7 +1888,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -1869,7 +1902,7 @@ fi
# interfere with the next link command; also delete a directory that is
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_link
@@ -1882,7 +1915,7 @@ ac_fn_c_check_func ()
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1937,10 +1970,47 @@ fi
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_cpp
+
# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
# ---------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
@@ -1952,7 +2022,7 @@ ac_fn_c_check_decl ()
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1983,15 +2053,15 @@ fi
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_decl
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by groff $as_me 1.21, which was
-generated by GNU Autoconf 2.67. Invocation command line was
+It was created by groff $as_me 1.22.2, which was
+generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2103,7 +2173,7 @@ trap 'exit_status=$?
$as_echo "## ---------------- ##
## Cache variables. ##
-## ---------------- ##"[]
+## ---------------- ##"
echo
# The following way of writing the cache mishandles newlines in values,
(
@@ -2139,7 +2209,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
$as_echo "## ----------------- ##
## Output variables. ##
-## ----------------- ##"[]
+## ----------------- ##"
echo
for ac_var in $ac_subst_vars
do
@@ -2154,7 +2224,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
if test -n "$ac_subst_files"; then
$as_echo "## ------------------- ##
## File substitutions. ##
-## ------------------- ##"[]
+## ------------------- ##"
echo
for ac_var in $ac_subst_files
do
@@ -2170,7 +2240,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
if test -s confdefs.h; then
$as_echo "## ----------- ##
## confdefs.h. ##
-## ----------- ##"[]
+## ----------- ##"
echo
cat confdefs.h
echo
@@ -2273,6 +2343,7 @@ fi
as_fn_append ac_header_list " stdlib.h"
as_fn_append ac_header_list " unistd.h"
as_fn_append ac_header_list " sys/param.h"
+as_fn_append ac_func_list " symlink"
# Check that the precious variables saved in the cache have kept the same
# value.
ac_cache_corrupted=false
@@ -2357,7 +2428,7 @@ if test -n "$ac_tool_prefix"; then
set dummy ${ac_tool_prefix}gcc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
@@ -2369,7 +2440,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2397,7 +2468,7 @@ if test -z "$ac_cv_prog_CC"; then
set dummy gcc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
@@ -2409,7 +2480,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2450,7 +2521,7 @@ if test -z "$CC"; then
set dummy ${ac_tool_prefix}cc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
@@ -2462,7 +2533,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2490,7 +2561,7 @@ if test -z "$CC"; then
set dummy cc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
@@ -2503,7 +2574,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
@@ -2549,7 +2620,7 @@ if test -z "$CC"; then
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
@@ -2561,7 +2632,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2593,7 +2664,7 @@ do
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
@@ -2605,7 +2676,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2876,7 +2947,7 @@ rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
ac_clean_files=$ac_clean_files_save
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then :
+if ${ac_cv_objext+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2927,7 +2998,7 @@ OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+if ${ac_cv_c_compiler_gnu+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2964,7 +3035,7 @@ ac_test_CFLAGS=${CFLAGS+set}
ac_save_CFLAGS=$CFLAGS
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
+if ${ac_cv_prog_cc_g+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_save_c_werror_flag=$ac_c_werror_flag
@@ -3042,7 +3113,7 @@ else
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then :
+if ${ac_cv_prog_cc_c89+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_prog_cc_c89=no
@@ -3051,8 +3122,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -3150,7 +3220,7 @@ if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then :
+ if ${ac_cv_prog_CPP+:} false; then :
$as_echo_n "(cached) " >&6
else
# Double quotes because CPP needs to be expanded
@@ -3278,7 +3348,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then :
+if ${ac_cv_path_GREP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -z "$GREP"; then
@@ -3292,7 +3362,7 @@ do
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ as_fn_executable_p "$ac_path_GREP" || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
@@ -3341,7 +3411,7 @@ $as_echo "$ac_cv_path_GREP" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
$as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then :
+if ${ac_cv_path_EGREP+:} false; then :
$as_echo_n "(cached) " >&6
else
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
@@ -3358,7 +3428,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -3408,7 +3478,7 @@ $as_echo "$ac_cv_path_EGREP" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then :
+if ${ac_cv_header_stdc+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3537,7 +3607,7 @@ done
ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = x""yes; then :
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
MINIX=yes
else
MINIX=
@@ -3559,14 +3629,14 @@ $as_echo "#define _MINIX 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if test "${ac_cv_safe_to_define___extensions__+set}" = set; then :
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-# define __EXTENSIONS__ 1
- $ac_includes_default
+# define __EXTENSIONS__ 1
+ $ac_includes_default
int
main ()
{
@@ -3608,7 +3678,7 @@ if test -n "$ac_tool_prefix"; then
set dummy ${ac_tool_prefix}gcc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
@@ -3620,7 +3690,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3648,7 +3718,7 @@ if test -z "$ac_cv_prog_CC"; then
set dummy gcc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
@@ -3660,7 +3730,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3701,7 +3771,7 @@ if test -z "$CC"; then
set dummy ${ac_tool_prefix}cc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
@@ -3713,7 +3783,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3741,7 +3811,7 @@ if test -z "$CC"; then
set dummy cc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
@@ -3754,7 +3824,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
@@ -3800,7 +3870,7 @@ if test -z "$CC"; then
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
@@ -3812,7 +3882,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3844,7 +3914,7 @@ do
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
@@ -3856,7 +3926,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3928,7 +3998,7 @@ done
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+if ${ac_cv_c_compiler_gnu+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3965,7 +4035,7 @@ ac_test_CFLAGS=${CFLAGS+set}
ac_save_CFLAGS=$CFLAGS
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
+if ${ac_cv_prog_cc_g+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_save_c_werror_flag=$ac_c_werror_flag
@@ -4043,7 +4113,7 @@ else
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then :
+if ${ac_cv_prog_cc_c89+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_prog_cc_c89=no
@@ -4052,8 +4122,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -4154,7 +4223,7 @@ if test -z "$CXX"; then
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CXX+set}" = set; then :
+if ${ac_cv_prog_CXX+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CXX"; then
@@ -4166,7 +4235,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4198,7 +4267,7 @@ do
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CXX"; then
@@ -4210,7 +4279,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4276,7 +4345,7 @@ done
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then :
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4313,7 +4382,7 @@ ac_test_CXXFLAGS=${CXXFLAGS+set}
ac_save_CXXFLAGS=$CXXFLAGS
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if test "${ac_cv_prog_cxx_g+set}" = set; then :
+if ${ac_cv_prog_cxx_g+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_save_cxx_werror_flag=$ac_cxx_werror_flag
@@ -4593,7 +4662,7 @@ if test "x$with_x" = xno; then
else
case $x_includes,$x_libraries in #(
*\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
- *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then :
+ *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
$as_echo_n "(cached) " >&6
else
# One or both of the vars are not set, and there is no cached value.
@@ -4870,7 +4939,7 @@ if ac_fn_c_try_link "$LINENO"; then :
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
-if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then :
+if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -4904,14 +4973,14 @@ LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
-if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then :
+if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then :
X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
fi
if test $ac_cv_lib_dnet_dnet_ntoa = no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
-if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then :
+if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -4945,7 +5014,7 @@ LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
-if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = x""yes; then :
+if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then :
X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
fi
@@ -4964,14 +5033,14 @@ rm -f core conftest.err conftest.$ac_objext \
# The functions gethostbyname, getservbyname, and inet_addr are
# in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
-if test "x$ac_cv_func_gethostbyname" = x""yes; then :
+if test "x$ac_cv_func_gethostbyname" = xyes; then :
fi
if test $ac_cv_func_gethostbyname = no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
-if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then :
+if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -5005,14 +5074,14 @@ LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
-if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then :
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
fi
if test $ac_cv_lib_nsl_gethostbyname = no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
-if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then :
+if ${ac_cv_lib_bsd_gethostbyname+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -5046,7 +5115,7 @@ LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
-if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then :
+if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then :
X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
fi
@@ -5061,14 +5130,14 @@ fi
# must be given before -lnsl if both are needed. We assume that
# if connect needs -lnsl, so does gethostbyname.
ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect"
-if test "x$ac_cv_func_connect" = x""yes; then :
+if test "x$ac_cv_func_connect" = xyes; then :
fi
if test $ac_cv_func_connect = no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
$as_echo_n "checking for connect in -lsocket... " >&6; }
-if test "${ac_cv_lib_socket_connect+set}" = set; then :
+if ${ac_cv_lib_socket_connect+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -5102,7 +5171,7 @@ LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
$as_echo "$ac_cv_lib_socket_connect" >&6; }
-if test "x$ac_cv_lib_socket_connect" = x""yes; then :
+if test "x$ac_cv_lib_socket_connect" = xyes; then :
X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
fi
@@ -5110,14 +5179,14 @@ fi
# Guillermo Gomez says -lposix is necessary on A/UX.
ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove"
-if test "x$ac_cv_func_remove" = x""yes; then :
+if test "x$ac_cv_func_remove" = xyes; then :
fi
if test $ac_cv_func_remove = no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
$as_echo_n "checking for remove in -lposix... " >&6; }
-if test "${ac_cv_lib_posix_remove+set}" = set; then :
+if ${ac_cv_lib_posix_remove+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -5151,7 +5220,7 @@ LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
$as_echo "$ac_cv_lib_posix_remove" >&6; }
-if test "x$ac_cv_lib_posix_remove" = x""yes; then :
+if test "x$ac_cv_lib_posix_remove" = xyes; then :
X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
fi
@@ -5159,14 +5228,14 @@ fi
# BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat"
-if test "x$ac_cv_func_shmat" = x""yes; then :
+if test "x$ac_cv_func_shmat" = xyes; then :
fi
if test $ac_cv_func_shmat = no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
$as_echo_n "checking for shmat in -lipc... " >&6; }
-if test "${ac_cv_lib_ipc_shmat+set}" = set; then :
+if ${ac_cv_lib_ipc_shmat+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -5200,7 +5269,7 @@ LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
-if test "x$ac_cv_lib_ipc_shmat" = x""yes; then :
+if test "x$ac_cv_lib_ipc_shmat" = xyes; then :
X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
fi
@@ -5218,7 +5287,7 @@ fi
# John Interrante, Karl Berry
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
-if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then :
+if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -5252,7 +5321,7 @@ LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
-if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then :
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then :
X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
fi
@@ -5446,6 +5515,18 @@ EOF
fi
fi
+
+# Check whether --with-grofferdir was given.
+if test "${with_grofferdir+set}" = set; then :
+ withval=$with_grofferdir;
+fi
+
+if test "x$with_grofferdir" = "x"; then
+ groffer_dir=$libdir/groff/groffer
+ else
+ groffer_dir=$with_grofferdir
+ fi
+
if test -z "$PSPRINT"; then
for ac_prog in lpr
do
@@ -5453,7 +5534,7 @@ do
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_LPR+set}" = set; then :
+if ${ac_cv_prog_LPR+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$LPR"; then
@@ -5465,7 +5546,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_LPR="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5495,7 +5576,7 @@ do
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_LP+set}" = set; then :
+if ${ac_cv_prog_LP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$LP"; then
@@ -5507,7 +5588,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_LP="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5541,7 +5622,7 @@ do
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_LPQ+set}" = set; then :
+if ${ac_cv_prog_LPQ+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$LPQ"; then
@@ -5553,7 +5634,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_LPQ="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5606,7 +5687,7 @@ $as_echo_n "checking for command to use for printing dvi files... " >&6; }
$as_echo "$DVIPRINT" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
$as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then :
+if ${ac_cv_path_EGREP+:} false; then :
$as_echo_n "(cached) " >&6
else
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
@@ -5623,7 +5704,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -5675,7 +5756,7 @@ $as_echo "$ac_cv_path_EGREP" >&6; }
set dummy perl; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PERLPATH+set}" = set; then :
+if ${ac_cv_path_PERLPATH+:} false; then :
$as_echo_n "(cached) " >&6
else
case $PERLPATH in
@@ -5689,7 +5770,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PERLPATH="$as_dir/$ac_word$ac_exec_ext"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5718,7 +5799,7 @@ do
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_YACC+set}" = set; then :
+if ${ac_cv_prog_YACC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$YACC"; then
@@ -5730,7 +5811,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_YACC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5760,7 +5841,7 @@ missing=
set dummy makeinfo; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_MAKEINFO+set}" = set; then :
+if ${ac_cv_prog_MAKEINFO+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$MAKEINFO"; then
@@ -5772,7 +5853,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_MAKEINFO="makeinfo"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5835,7 +5916,7 @@ if test -n "$ac_tool_prefix"; then
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then :
+if ${ac_cv_prog_RANLIB+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$RANLIB"; then
@@ -5847,7 +5928,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5875,7 +5956,7 @@ if test -z "$ac_cv_prog_RANLIB"; then
set dummy ranlib; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_RANLIB"; then
@@ -5887,7 +5968,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5960,7 +6041,7 @@ do
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_INSTALL_INFO+set}" = set; then :
+if ${ac_cv_prog_INSTALL_INFO+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$INSTALL_INFO"; then
@@ -5972,7 +6053,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_INSTALL_INFO="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6014,7 +6095,7 @@ test -n "$INSTALL_INFO" || INSTALL_INFO=":"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
$as_echo_n "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then :
+if ${ac_cv_path_install+:} false; then :
$as_echo_n "(cached) " >&6
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -6034,7 +6115,7 @@ case $as_dir/ in #((
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
@@ -6251,7 +6332,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- if test "${groff_cv_decl_needed_gettimeofday+set}" = set; then :
+ if ${groff_cv_decl_needed_gettimeofday+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6324,7 +6405,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- if test "${groff_cv_decl_needed_hypot+set}" = set; then :
+ if ${groff_cv_decl_needed_hypot+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6397,7 +6478,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- if test "${groff_cv_decl_needed_popen+set}" = set; then :
+ if ${groff_cv_decl_needed_popen+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6470,7 +6551,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- if test "${groff_cv_decl_needed_pclose+set}" = set; then :
+ if ${groff_cv_decl_needed_pclose+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6543,7 +6624,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- if test "${groff_cv_decl_needed_putenv+set}" = set; then :
+ if ${groff_cv_decl_needed_putenv+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6616,7 +6697,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- if test "${groff_cv_decl_needed_rand+set}" = set; then :
+ if ${groff_cv_decl_needed_rand+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6689,7 +6770,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- if test "${groff_cv_decl_needed_snprintf+set}" = set; then :
+ if ${groff_cv_decl_needed_snprintf+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6762,7 +6843,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- if test "${groff_cv_decl_needed_srand+set}" = set; then :
+ if ${groff_cv_decl_needed_srand+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6835,7 +6916,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- if test "${groff_cv_decl_needed_strcasecmp+set}" = set; then :
+ if ${groff_cv_decl_needed_strcasecmp+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6908,7 +6989,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- if test "${groff_cv_decl_needed_strncasecmp+set}" = set; then :
+ if ${groff_cv_decl_needed_strncasecmp+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6981,7 +7062,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- if test "${groff_cv_decl_needed_vfprintf+set}" = set; then :
+ if ${groff_cv_decl_needed_vfprintf+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7054,7 +7135,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- if test "${groff_cv_decl_needed_vsnprintf+set}" = set; then :
+ if ${groff_cv_decl_needed_vsnprintf+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7546,7 +7627,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
# check endianness
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if test "${ac_cv_c_bigendian+set}" = set; then :
+if ${ac_cv_c_bigendian+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_c_bigendian=unknown
@@ -7772,7 +7853,7 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
# checks for libraries
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lc" >&5
$as_echo_n "checking for main in -lc... " >&6; }
-if test "${ac_cv_lib_c_main+set}" = set; then :
+if ${ac_cv_lib_c_main+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -7800,14 +7881,14 @@ LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_main" >&5
$as_echo "$ac_cv_lib_c_main" >&6; }
-if test "x$ac_cv_lib_c_main" = x""yes; then :
+if test "x$ac_cv_lib_c_main" = xyes; then :
LIBC=-lc
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5
$as_echo_n "checking for sin in -lm... " >&6; }
-if test "${ac_cv_lib_m_sin+set}" = set; then :
+if ${ac_cv_lib_m_sin+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -7841,18 +7922,25 @@ LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5
$as_echo "$ac_cv_lib_m_sin" >&6; }
-if test "x$ac_cv_lib_m_sin" = x""yes; then :
+if test "x$ac_cv_lib_m_sin" = xyes; then :
LIBM=-lm
fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
$as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then :
+if ${ac_cv_build+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_build_alias=$build_alias
@@ -7886,7 +7974,7 @@ case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
$as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then :
+if ${ac_cv_host+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "x$host_alias" = x; then
@@ -7944,15 +8032,14 @@ fi
# Prepare PATH_SEPARATOR.
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
fi
ac_prog=ld
if test "$GCC" = yes; then
@@ -7973,7 +8060,7 @@ $as_echo_n "checking for ld used by GCC... " >&6; }
# Canonicalize the path of ld
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
done
test -z "$LD" && LD="$ac_prog"
;;
@@ -7993,7 +8080,7 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
$as_echo_n "checking for non-GNU ld... " >&6; }
fi
-if test "${acl_cv_path_LD+set}" = set; then :
+if ${acl_cv_path_LD+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -z "$LD"; then
@@ -8007,9 +8094,9 @@ else
# Break only if it was the GNU/non-GNU ld that we prefer.
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
*GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break ;;
+ test "$with_gnu_ld" != no && break ;;
*)
- test "$with_gnu_ld" != yes && break ;;
+ test "$with_gnu_ld" != yes && break ;;
esac
fi
done
@@ -8030,7 +8117,7 @@ fi
test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if test "${acl_cv_prog_gnu_ld+set}" = set; then :
+if ${acl_cv_prog_gnu_ld+:} false; then :
$as_echo_n "(cached) " >&6
else
# I'd rather use --version here, but apparently some GNU ld's only accept -v.
@@ -8050,7 +8137,7 @@ with_gnu_ld=$acl_cv_prog_gnu_ld
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
$as_echo_n "checking for shared library run path origin... " >&6; }
-if test "${acl_cv_rpath+set}" = set; then :
+if ${acl_cv_rpath+:} false; then :
$as_echo_n "(cached) " >&6
else
@@ -8080,6 +8167,140 @@ else
fi
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+ if ${ac_cv_prog_CXXCPP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
acl_libdirstem=lib
@@ -8088,7 +8309,7 @@ fi
solaris*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
$as_echo_n "checking for 64-bit host... " >&6; }
-if test "${gl_cv_solaris_64bit+set}" = set; then :
+if ${gl_cv_solaris_64bit+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8127,6 +8348,9 @@ $as_echo "$gl_cv_solaris_64bit" >&6; }
if test -d "$searchdir"; then
case "$searchdir" in
*/lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
*) searchdir=`cd "$searchdir" && pwd`
case "$searchdir" in
*/lib64 ) acl_libdirstem=lib64 ;;
@@ -8200,6 +8424,7 @@ fi
LTLIBICONV=
INCICONV=
LIBICONV_PREFIX=
+ HAVE_LIBICONV=
rpathdirs=
ltrpathdirs=
names_already_handled=
@@ -8217,7 +8442,7 @@ fi
done
if test -z "$already_handled"; then
names_already_handled="$names_already_handled $name"
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
eval value=\"\$HAVE_LIB$uppername\"
if test -n "$value"; then
if test "$value" = yes; then
@@ -8637,7 +8862,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
$as_echo_n "checking for iconv... " >&6; }
-if test "${am_cv_func_iconv+set}" = set; then :
+if ${am_cv_func_iconv+:} false; then :
$as_echo_n "(cached) " >&6
else
@@ -8645,19 +8870,21 @@ else
am_cv_lib_iconv=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <stdlib.h>
#include <iconv.h>
+
int
main ()
{
iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
am_cv_func_iconv=yes
fi
rm -f core conftest.err conftest.$ac_objext \
@@ -8667,19 +8894,21 @@ rm -f core conftest.err conftest.$ac_objext \
LIBS="$LIBS $LIBICONV"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <stdlib.h>
#include <iconv.h>
+
int
main ()
{
iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"; then :
am_cv_lib_iconv=yes
am_cv_func_iconv=yes
fi
@@ -8694,19 +8923,21 @@ $as_echo "$am_cv_func_iconv" >&6; }
if test "$am_cv_func_iconv" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
$as_echo_n "checking for working iconv... " >&6; }
-if test "${am_cv_func_iconv_works+set}" = set; then :
+if ${am_cv_func_iconv_works+:} false; then :
$as_echo_n "(cached) " >&6
else
- am_save_LIBS="$LIBS"
+ am_save_LIBS="$LIBS"
if test $am_cv_lib_iconv = yes; then
LIBS="$LIBS $LIBICONV"
fi
if test "$cross_compiling" = yes; then :
- case "$host_os" in
+
+ case "$host_os" in
aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
*) am_cv_func_iconv_works="guessing yes" ;;
esac
+
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8715,6 +8946,7 @@ else
#include <string.h>
int main ()
{
+ int result = 0;
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
returns. */
{
@@ -8731,7 +8963,47 @@ int main ()
(char **) &inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res == 0)
- return 1;
+ result |= 1;
+ iconv_close (cd_utf8_to_88591);
+ }
+ }
+ /* Test against Solaris 10 bug: Failures are not distinguishable from
+ successful returns. */
+ {
+ iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+ if (cd_ascii_to_88591 != (iconv_t)(-1))
+ {
+ static const char input[] = "\263";
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_ascii_to_88591,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ result |= 2;
+ iconv_close (cd_ascii_to_88591);
+ }
+ }
+ /* Test against AIX 6.1..7.1 bug: Buffer overrun. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static const char input[] = "\304";
+ static char buf[2] = { (char)0xDE, (char)0xAD };
+ const char *inptr = input;
+ size_t inbytesleft = 1;
+ char *outptr = buf;
+ size_t outbytesleft = 1;
+ size_t res = iconv (cd_88591_to_utf8,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+ result |= 4;
+ iconv_close (cd_88591_to_utf8);
}
}
#if 0 /* This bug could be worked around by the caller. */
@@ -8750,7 +9022,8 @@ int main ()
(char **) &inptr, &inbytesleft,
&outptr, &outbytesleft);
if ((int)res > 0)
- return 1;
+ result |= 8;
+ iconv_close (cd_88591_to_utf8);
}
}
#endif
@@ -8764,11 +9037,11 @@ int main ()
&& iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
/* Try HP-UX names. */
&& iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
- return 1;
- return 0;
+ result |= 16;
+ return result;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_cxx_try_run "$LINENO"; then :
am_cv_func_iconv_works=yes
else
am_cv_func_iconv_works=no
@@ -8810,7 +9083,7 @@ $as_echo "$LIBICONV" >&6; }
if test "$am_cv_func_iconv" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
$as_echo_n "checking for iconv declaration... " >&6; }
- if test "${am_cv_proto_iconv+set}" = set; then :
+ if ${am_cv_proto_iconv+:} false; then :
$as_echo_n "(cached) " >&6
else
@@ -8823,7 +9096,7 @@ extern
#ifdef __cplusplus
"C"
#endif
-#if defined(__STDC__) || defined(__cplusplus)
+#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
#else
size_t iconv();
@@ -8837,7 +9110,7 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_compile "$LINENO"; then :
am_cv_proto_iconv_arg1=""
else
am_cv_proto_iconv_arg1="const"
@@ -8847,17 +9120,24 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:-
- }$am_cv_proto_iconv" >&5
-$as_echo "${ac_t:-
- }$am_cv_proto_iconv" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result:
+ $am_cv_proto_iconv" >&5
+$as_echo "
+ $am_cv_proto_iconv" >&6; }
cat >>confdefs.h <<_ACEOF
#define ICONV_CONST $am_cv_proto_iconv_arg1
_ACEOF
+
fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
# we need LIBEXT
LIBEXT=$acl_libext
@@ -8891,7 +9171,7 @@ done
for ac_func in getpagesize
do :
ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
-if test "x$ac_cv_func_getpagesize" = x""yes; then :
+if test "x$ac_cv_func_getpagesize" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_GETPAGESIZE 1
_ACEOF
@@ -8901,7 +9181,7 @@ done
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
$as_echo_n "checking for working mmap... " >&6; }
-if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then :
+if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
@@ -9068,7 +9348,7 @@ rm -f conftest.mmap conftest.txt
saved_libs="$LIBS"
LIBS="$LIBS $LIBC $LIBM"
ac_fn_c_check_func "$LINENO" "fmod" "ac_cv_func_fmod"
-if test "x$ac_cv_func_fmod" = x""yes; then :
+if test "x$ac_cv_func_fmod" = xyes; then :
$as_echo "#define HAVE_FMOD 1" >>confdefs.h
else
@@ -9081,7 +9361,7 @@ esac
fi
ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd"
-if test "x$ac_cv_func_getcwd" = x""yes; then :
+if test "x$ac_cv_func_getcwd" = xyes; then :
$as_echo "#define HAVE_GETCWD 1" >>confdefs.h
else
@@ -9094,7 +9374,7 @@ esac
fi
ac_fn_c_check_func "$LINENO" "putenv" "ac_cv_func_putenv"
-if test "x$ac_cv_func_putenv" = x""yes; then :
+if test "x$ac_cv_func_putenv" = xyes; then :
$as_echo "#define HAVE_PUTENV 1" >>confdefs.h
else
@@ -9107,7 +9387,7 @@ esac
fi
ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf"
-if test "x$ac_cv_func_snprintf" = x""yes; then :
+if test "x$ac_cv_func_snprintf" = xyes; then :
$as_echo "#define HAVE_SNPRINTF 1" >>confdefs.h
else
@@ -9120,7 +9400,7 @@ esac
fi
ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
-if test "x$ac_cv_func_strcasecmp" = x""yes; then :
+if test "x$ac_cv_func_strcasecmp" = xyes; then :
$as_echo "#define HAVE_STRCASECMP 1" >>confdefs.h
else
@@ -9133,7 +9413,7 @@ esac
fi
ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror"
-if test "x$ac_cv_func_strerror" = x""yes; then :
+if test "x$ac_cv_func_strerror" = xyes; then :
$as_echo "#define HAVE_STRERROR 1" >>confdefs.h
else
@@ -9146,7 +9426,7 @@ esac
fi
ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp"
-if test "x$ac_cv_func_strncasecmp" = x""yes; then :
+if test "x$ac_cv_func_strncasecmp" = xyes; then :
$as_echo "#define HAVE_STRNCASECMP 1" >>confdefs.h
else
@@ -9159,7 +9439,7 @@ esac
fi
ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol"
-if test "x$ac_cv_func_strtol" = x""yes; then :
+if test "x$ac_cv_func_strtol" = xyes; then :
$as_echo "#define HAVE_STRTOL 1" >>confdefs.h
else
@@ -9176,7 +9456,7 @@ fi
for ac_func in vsnprintf
do :
ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf"
-if test "x$ac_cv_func_vsnprintf" = x""yes; then :
+if test "x$ac_cv_func_vsnprintf" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_VSNPRINTF 1
_ACEOF
@@ -9261,7 +9541,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default"
-if test "x$ac_cv_have_decl_sys_siglist" = x""yes; then :
+if test "x$ac_cv_have_decl_sys_siglist" = xyes; then :
ac_have_decl=1
else
ac_have_decl=0
@@ -9271,7 +9551,7 @@ cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_SYS_SIGLIST $ac_have_decl
_ACEOF
ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
-if test "x$ac_cv_have_decl_getc_unlocked" = x""yes; then :
+if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then :
ac_have_decl=1
else
ac_have_decl=0
@@ -9284,7 +9564,7 @@ _ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
-if test "${am_cv_langinfo_codeset+set}" = set; then :
+if ${am_cv_langinfo_codeset+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9661,7 +9941,7 @@ else
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_GHOSTSCRIPT+set}" = set; then :
+if ${ac_cv_prog_GHOSTSCRIPT+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$GHOSTSCRIPT"; then
@@ -9673,7 +9953,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_GHOSTSCRIPT="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9705,7 +9985,7 @@ do
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_GHOSTSCRIPT+set}" = set; then :
+if ${ac_cv_prog_ac_ct_GHOSTSCRIPT+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_GHOSTSCRIPT"; then
@@ -9717,7 +9997,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_GHOSTSCRIPT="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9766,7 +10046,7 @@ fi
set dummy pnmcut; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_pnmcut+set}" = set; then :
+if ${ac_cv_prog_pnmcut+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$pnmcut"; then
@@ -9778,7 +10058,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_pnmcut="found"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9806,7 +10086,7 @@ fi
set dummy pnmcrop; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_pnmcrop+set}" = set; then :
+if ${ac_cv_prog_pnmcrop+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$pnmcrop"; then
@@ -9818,7 +10098,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_pnmcrop="found"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9846,7 +10126,7 @@ fi
set dummy pnmtopng; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_pnmtopng+set}" = set; then :
+if ${ac_cv_prog_pnmtopng+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$pnmtopng"; then
@@ -9858,7 +10138,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_pnmtopng="found"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9886,7 +10166,7 @@ fi
set dummy psselect; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_psselect+set}" = set; then :
+if ${ac_cv_prog_psselect+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$psselect"; then
@@ -9898,7 +10178,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_psselect="found"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -9926,7 +10206,7 @@ fi
set dummy pnmtops; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_pnmtops+set}" = set; then :
+if ${ac_cv_prog_pnmtops+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$pnmtops"; then
@@ -9938,7 +10218,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_pnmtops="found"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -10028,7 +10308,7 @@ else
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then :
+if ${ac_cv_prog_AWK+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$AWK"; then
@@ -10040,7 +10320,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -10072,7 +10352,7 @@ do
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_AWK+set}" = set; then :
+if ${ac_cv_prog_ac_ct_AWK+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_AWK"; then
@@ -10084,7 +10364,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -10173,9 +10453,9 @@ $as_echo "no" >&6; }
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5
-$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; }
-if test "${ac_cv_gnu_library_2_1+set}" = set; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5
+$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; }
+if ${ac_cv_gnu_library_2_1+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10187,10 +10467,13 @@ else
Lucky GNU user
#endif
#endif
+#ifdef __UCLIBC__
+ Lucky user
+#endif
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Lucky GNU user" >/dev/null 2>&1; then :
+ $EGREP "Lucky" >/dev/null 2>&1; then :
ac_cv_gnu_library_2_1=yes
else
ac_cv_gnu_library_2_1=no
@@ -10207,6 +10490,177 @@ $as_echo "$ac_cv_gnu_library_2_1" >&6; }
+
+
+ for ac_func in $ac_func_list
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5
+$as_echo_n "checking for working fcntl.h... " >&6; }
+if ${gl_cv_header_working_fcntl_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ gl_cv_header_working_fcntl_h=cross-compiling
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+ #if HAVE_UNISTD_H
+ # include <unistd.h>
+ #else /* on Windows with MSVC */
+ # include <io.h>
+ # include <stdlib.h>
+ # defined sleep(n) _sleep ((n) * 1000)
+ #endif
+ #include <fcntl.h>
+ #ifndef O_NOATIME
+ #define O_NOATIME 0
+ #endif
+ #ifndef O_NOFOLLOW
+ #define O_NOFOLLOW 0
+ #endif
+ static int const constants[] =
+ {
+ O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+ O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+ };
+
+int
+main ()
+{
+
+ int result = !constants;
+ #if HAVE_SYMLINK
+ {
+ static char const sym[] = "conftest.sym";
+ if (symlink (".", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_RDONLY | O_NOFOLLOW);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ unlink (sym);
+ }
+ #endif
+ {
+ static char const file[] = "confdefs.h";
+ int fd = open (file, O_RDONLY | O_NOATIME);
+ if (fd < 0)
+ result |= 8;
+ else
+ {
+ struct stat st0;
+ if (fstat (fd, &st0) != 0)
+ result |= 16;
+ else
+ {
+ char c;
+ sleep (1);
+ if (read (fd, &c, 1) != 1)
+ result |= 24;
+ else
+ {
+ if (close (fd) != 0)
+ result |= 32;
+ else
+ {
+ struct stat st1;
+ if (stat (file, &st1) != 0)
+ result |= 40;
+ else
+ if (st0.st_atime != st1.st_atime)
+ result |= 64;
+ }
+ }
+ }
+ }
+ }
+ return result;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_header_working_fcntl_h=yes
+else
+ case $? in #(
+ 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+ 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+ 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+ *) gl_cv_header_working_fcntl_h='no';;
+ esac
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5
+$as_echo "$gl_cv_header_working_fcntl_h" >&6; }
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOATIME $ac_val
+_ACEOF
+
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOFOLLOW $ac_val
+_ACEOF
+
+
+ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
+_ACEOF
+
+
+
+
+
+
+
+
+
+
ac_config_files="$ac_config_files stamp-h"
ac_config_files="$ac_config_files Makefile doc/Makefile src/utils/xtotroff/Makefile"
@@ -10279,10 +10733,21 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
- test "x$cache_file" != "x/dev/null" &&
+ if test "x$cache_file" != "x/dev/null"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
$as_echo "$as_me: updating cache $cache_file" >&6;}
- cat confcache >$cache_file
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
@@ -10315,7 +10780,7 @@ LTLIBOBJS=$ac_ltlibobjs
-: ${CONFIG_STATUS=./config.status}
+: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
@@ -10416,6 +10881,7 @@ fi
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -10611,16 +11077,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -10680,28 +11146,16 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -10722,8 +11176,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by groff $as_me 1.21, which was
-generated by GNU Autoconf 2.67. Invocation command line was
+This file was extended by groff $as_me 1.22.2, which was
+generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -10784,11 +11238,11 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-groff config.status 1.21
-configured by $0, generated by GNU Autoconf 2.67,
+groff config.status 1.22.2
+configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -10877,7 +11331,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
@@ -10936,9 +11390,10 @@ fi
# after its creation but before its name has been assigned to `$tmp'.
$debug ||
{
- tmp=
+ tmp= ac_tmp=
trap 'exit_status=$?
- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
' 0
trap 'as_fn_exit 1' 1 2 13 15
}
@@ -10946,12 +11401,13 @@ $debug ||
{
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
+ test -d "$tmp"
} ||
{
tmp=./conf$$-$RANDOM
(umask 077 && mkdir "$tmp")
} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
@@ -10973,7 +11429,7 @@ else
ac_cs_awk_cr=$ac_cr
fi
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
_ACEOF
@@ -11001,7 +11457,7 @@ done
rm -f conf$$subs.sh
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
_ACEOF
sed -n '
h
@@ -11049,7 +11505,7 @@ t delim
rm -f conf$$subs.awk
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
for (key in S) S_is_set[key] = 1
FS = ""
@@ -11081,7 +11537,7 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
else
cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
|| as_fn_error $? "could not setup config files machinery" "$LINENO" 5
_ACEOF
@@ -11115,7 +11571,7 @@ fi # test -n "$CONFIG_FILES"
# No need to generate them if there are no CONFIG_HEADERS.
# This happens for instance with `./config.status Makefile'.
if test -n "$CONFIG_HEADERS"; then
-cat >"$tmp/defines.awk" <<\_ACAWK ||
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
BEGIN {
_ACEOF
@@ -11127,8 +11583,8 @@ _ACEOF
# handling of long lines.
ac_delim='%!_!# '
for ac_last_try in false false :; do
- ac_t=`sed -n "/$ac_delim/p" confdefs.h`
- if test -z "$ac_t"; then
+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_tt"; then
break
elif $ac_last_try; then
as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
@@ -11248,7 +11704,7 @@ do
for ac_f
do
case $ac_f in
- -) ac_f="$tmp/stdin";;
+ -) ac_f="$ac_tmp/stdin";;
*) # Look for the file first in the build tree, then in the source tree
# (if the path is not absolute). The absolute path cannot be DOS-style,
# because $ac_f cannot contain `:'.
@@ -11283,7 +11739,7 @@ $as_echo "$as_me: creating $ac_file" >&6;}
esac
case $ac_tag in
- *:-:* | *:-) cat >"$tmp/stdin" \
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
esac
;;
@@ -11414,21 +11870,22 @@ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
s&@INSTALL@&$ac_INSTALL&;t t
$ac_datarootdir_hack
"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
- rm -f "$tmp/stdin"
+ rm -f "$ac_tmp/stdin"
case $ac_file in
- -) cat "$tmp/out" && rm -f "$tmp/out";;
- *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
esac \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
;;
@@ -11439,20 +11896,20 @@ which seems to be undefined. Please make sure it is defined" >&2;}
if test x"$ac_file" != x-; then
{
$as_echo "/* $configure_input */" \
- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
- } >"$tmp/config.h" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+ } >"$ac_tmp/config.h" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
- if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
$as_echo "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
- mv "$tmp/config.h" "$ac_file" \
+ mv "$ac_tmp/config.h" "$ac_file" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
$as_echo "/* $configure_input */" \
- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
;;
diff --git a/configure.ac b/configure.ac
index f528e1b..5ce392d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,5 @@
# Autoconf configuration file for groff.
-# Copyright (C) 1989-1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-# 2009
+# Copyright (C) 1989-1995, 2001-2007, 2009, 2011-2012
# Free Software Foundation, Inc.
#
# This file is part of groff.
@@ -59,6 +58,8 @@ GROFF_OS390
GROFF_X11
GROFF_APPRESDIR_OPTION
GROFF_APPRESDIR_DEFAULT
+GROFF_GROFFERDIR_OPTION
+GROFF_GROFFERDIR_DEFAULT
GROFF_PRINT
AC_PROG_EGREP
AC_PATH_PROG([PERLPATH], [perl], [/usr/bin/perl])
@@ -114,7 +115,10 @@ AC_C_BIGENDIAN
# checks for libraries
GROFF_LIBC
GROFF_LIBM
+
+AC_LANG_PUSH([C++])
AM_ICONV
+AC_LANG_POP([C++])
# we need LIBEXT
AC_SUBST([LIBEXT],[$acl_libext])
@@ -150,6 +154,7 @@ GROFF_HTML_PROGRAMS
GROFF_PDFDOC_PROGRAMS
GROFF_PNMTOPS_NOSETPAGE
gl_GLIBC21
+gl_LOCALCHARSET
AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
AC_CONFIG_FILES([Makefile doc/Makefile src/utils/xtotroff/Makefile])
diff --git a/contrib/chem/ChangeLog b/contrib/chem/ChangeLog
index 7c0f3f9..a631d27 100644
--- a/contrib/chem/ChangeLog
+++ b/contrib/chem/ChangeLog
@@ -1,3 +1,7 @@
+2013-01-29 Werner LEMBERG <wl@gnu.org>
+
+ * Makefile.sub (MOSTLYCLEANADD): Fix typo.
+
2010-12-13 Werner LEMBERG <wl@gnu.org>
Really fix handling of examples/122.
@@ -39,7 +43,7 @@
portability. Conversion checked using the protocol described in
tmac/TESTING-HINTS.
-2006-11-10 Bernd Warken
+2006-11-10 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of chem 0.3.1
@@ -57,7 +61,7 @@
* chem.pl: s/tmacdir/MACRODIR/, s/picdir/PICDIR/.
-2006-11-10 Bernd Warken
+2006-11-10 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of chem 0.3.0
@@ -75,7 +79,7 @@
* chem.man: Revised.
-2006-11-08 Bernd Warken
+2006-11-08 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of chem 0.2.0
@@ -91,7 +95,7 @@
* Makefile.sub: Add and fix $(srcdir) where necessary to make it
compile with srcdir != builddir. Other minor fixes improvements.
-2006-11-07 Bernd Warken
+2006-11-07 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of chem 0.1.2
@@ -143,7 +147,7 @@
constructs during `chem'. Use the elements in `%Define' as `chem'
commands.
-2006-10-27 Bernd Warken
+2006-10-27 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of chem 0.1.1
@@ -153,7 +157,7 @@
* ChangeLog: Correct the former entry.
-2006-10-26 Bernd Warken
+2006-10-26 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of chem 0.1.0
@@ -199,7 +203,7 @@
* examples/122/README: Information on the example files in this
directory.
-2006-10-16 Bernd Warken
+2006-10-16 Bernd Warken <groff-bernd.warken-72@web.de>
* awk version of chem
chem is a roff preprocessor that generates chemical structure
@@ -207,13 +211,13 @@
of chem is an awk script written by Brian Kernighan. This project
is a rewrite of chem in Perl.
-2006-10-15 Bernd Warken
+2006-10-15 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
License
- Copyright (C) 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2006-2010, 2013
Free Software Foundation, Inc.
- Written by Bernd Warken
+ Written by Bernd Warken <groff-bernd.warken-72@web.de>.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice and this
diff --git a/contrib/chem/Makefile.sub b/contrib/chem/Makefile.sub
index f1fe2c9..95caed3 100644
--- a/contrib/chem/Makefile.sub
+++ b/contrib/chem/Makefile.sub
@@ -2,10 +2,10 @@
# File position: <groff-source>/contrib/chem/Makefile.sub
-# Copyright (C) 2006, 2009, 2010 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Copyright (C) 2006, 2009, 2010, 2013 Free Software Foundation, Inc.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
-# Last update: 12 Dec 2010
+# Last update: 29 Jan 2013
# This file is part of `chem' which is part of `groff'.
@@ -30,7 +30,7 @@ MOSTLYCLEANADD=\
chem.n \
README \
examples/README \
- example/122/README
+ examples/122/README
# not all make programs have $(RM) predefined.
RM=rm -f
diff --git a/contrib/chem/README.txt b/contrib/chem/README.txt
index 35ff995..2551845 100644
--- a/contrib/chem/README.txt
+++ b/contrib/chem/README.txt
@@ -27,7 +27,7 @@ are written in the `chem' language. The file names end with .chem.
Last update: 5 Jan 2009
Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-Written by Bernd Warken.
+Written by Bernd Warken <groff-bernd.warken-72@web.de>.
This file is part of `chem', which is part of `groff'.
diff --git a/contrib/chem/chem.man b/contrib/chem/chem.man
index 66f6e9c..b2bf754 100644
--- a/contrib/chem/chem.man
+++ b/contrib/chem/chem.man
@@ -9,7 +9,7 @@ Last update: 05 Jan 2009
.
.
.de au
-This file was written by Bernd Warken.
+This file was written by Bernd Warken <groff-bernd.warken-72@web.de>.
It is based on the documentation of
.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:who/\:bwk/\:index.html
Brian Kernighan
diff --git a/contrib/chem/chem.pic b/contrib/chem/chem.pic
index 888517b..d34c732 100644
--- a/contrib/chem/chem.pic
+++ b/contrib/chem/chem.pic
@@ -5,7 +5,7 @@
# Copyright (C) 2006, 2008, 2009 Free Software Foundation, Inc.
# Written by Brian Kernighan <http://cm.bell-labs.com/cm/cs/who/bwk>,
-# modified by Bernd Warken.
+# modified by Bernd Warken <groff-bernd.warken-72@web.de>.
# This file is part of `chem', which is part of `groff'.
diff --git a/contrib/chem/chem.pl b/contrib/chem/chem.pl
index 4ac99ab..dacf8b4 100755
--- a/contrib/chem/chem.pl
+++ b/contrib/chem/chem.pl
@@ -6,7 +6,7 @@
# Installed position: <prefix>/bin/chem
# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# This file is part of `chem', which is part of `groff'.
diff --git a/contrib/chem/examples/122/README.txt b/contrib/chem/examples/122/README.txt
index bd51196..e6ecde8 100644
--- a/contrib/chem/examples/122/README.txt
+++ b/contrib/chem/examples/122/README.txt
@@ -49,7 +49,7 @@ To get a suitable `groff' output run
Last update: 5 Jan 2009
Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-Written by Bernd Warken.
+Written by Bernd Warken <groff-bernd.warken-72@web.de>.
This file is part of `chem', which is part of `groff'.
diff --git a/contrib/chem/examples/122/ch4y_reserpine.chem b/contrib/chem/examples/122/ch4y_reserpine.chem
index d637a56..e822395 100644
--- a/contrib/chem/examples/122/ch4y_reserpine.chem
+++ b/contrib/chem/examples/122/ch4y_reserpine.chem
@@ -48,7 +48,7 @@ R5: ring with .V1 at R4.V3
back bond down from R5.V4 ; O
CH3 right of O
bond 120 from R5.V3 ; O
- bond right lenght .1 from O ; C
+ bond right length .1 from O ; C
double bond down ; O
bond right length .1 from C
B: benzene pointing right
diff --git a/contrib/chem/examples/README.txt b/contrib/chem/examples/README.txt
index 8fff712..da891b8 100644
--- a/contrib/chem/examples/README.txt
+++ b/contrib/chem/examples/README.txt
@@ -40,7 +40,7 @@ chemically.
Last update: 5 Jan 2009
Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-Written by Bernd Warken.
+Written by Bernd Warken <groff-bernd.warken-72@web.de>.
This file is part of `chem', which is part of `groff'.
diff --git a/contrib/chem/examples/atp.chem b/contrib/chem/examples/atp.chem
index ca10559..076f961 100644
--- a/contrib/chem/examples/atp.chem
+++ b/contrib/chem/examples/atp.chem
@@ -12,7 +12,7 @@ atp.chem:
# Installed position: <prefix>/share/doc/groff/example/chem/atp.chem
# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/chem/examples/cholesterin.chem b/contrib/chem/examples/cholesterin.chem
index 0dd1c29..d8684a1 100644
--- a/contrib/chem/examples/cholesterin.chem
+++ b/contrib/chem/examples/cholesterin.chem
@@ -10,7 +10,7 @@ cholesterin.chem:
# Installed position: <prefix>/share/doc/groff/example/chem/cholesterin.p
# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/chem/examples/ethamivan.chem b/contrib/chem/examples/ethamivan.chem
index 9534b30..19c720c 100644
--- a/contrib/chem/examples/ethamivan.chem
+++ b/contrib/chem/examples/ethamivan.chem
@@ -9,7 +9,7 @@ ethamivan.chem:
# Installed position: <prefix>/share/doc/groff/example/chem/ethamivan.chem
# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/chem/examples/lsd.chem b/contrib/chem/examples/lsd.chem
index 77cd397..f0b7407 100644
--- a/contrib/chem/examples/lsd.chem
+++ b/contrib/chem/examples/lsd.chem
@@ -9,7 +9,7 @@ lsd.chem:
# Installed position: <prefix>/share/doc/groff/example/chem/lsd.p
# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/chem/examples/morphine.chem b/contrib/chem/examples/morphine.chem
index 55de84d..eefc68a 100644
--- a/contrib/chem/examples/morphine.chem
+++ b/contrib/chem/examples/morphine.chem
@@ -11,7 +11,7 @@ morphine.chem:
# Installed position: <prefix>/share/doc/groff/example/chem/morphine.chem
# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/chem/examples/penicillin.chem b/contrib/chem/examples/penicillin.chem
index 067ea2a..99ac21d 100644
--- a/contrib/chem/examples/penicillin.chem
+++ b/contrib/chem/examples/penicillin.chem
@@ -12,7 +12,7 @@ penicillin.chem:
# Installed position: <prefix>/share/doc/groff/example/chem/morphine.chem
# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/chem/examples/reserpine.chem b/contrib/chem/examples/reserpine.chem
index 8b23bf3..05cd2c9 100644
--- a/contrib/chem/examples/reserpine.chem
+++ b/contrib/chem/examples/reserpine.chem
@@ -9,7 +9,7 @@ begin chem
# Installed position: <prefix>/share/doc/groff/example/chem/reserpine.chem
# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/groffer/ChangeLog b/contrib/groffer/ChangeLog
index aa561a5..87ec17b 100644
--- a/contrib/groffer/ChangeLog
+++ b/contrib/groffer/ChangeLog
@@ -1,3 +1,54 @@
+2012-08-09 Werner LEMBERG <wl@gnu.org>
+
+ Synchronize man pages.
+
+ * perl/groffer.man, shell/groffer.man: Fix many minor issues.
+
+2012-08-07 Eric S. Raymond <esr@thyrsus.com>
+
+ Yet more elimination of low-level troff hackery in the documentation
+ so it can be lifted to structural markup.
+
+ * perl/groffer.man: Use .IP rather than .TP in
+ .Topic; this make structural parsing work. Also remove a
+ pointless and somewhat out-of-date .ig section.
+
+2011-10-17 Ingo Schwarze <schwarze@openbsd.org>
+
+ Do not use INSTALL_DATA and INSTALL_SCRIPT during build phase.
+
+ * Makefile.sub (groffer): Replace INSTALL_DATA and
+ INSTALL_SCRIPT with `cp'. Otherwise the build phase might
+ fail with `permission denied' if you use the `-o root' flag
+ of the `install' command. The use of INSTALL_* is an abuse
+ anyway because it's not installing anything at that point;
+ it's just copying files around locally, within in the build
+ directories.
+
+2011-03-21 Jan Vcelak <jvcelak@redhat.com>
+ Bernd Warken <groff-bernd.warken-72@web.de>
+
+ Remove hardcoded path to 'libdir/groff/groffer' directory.
+
+ * Makefile.sub: use @groffer_dir@
+
+ * groffer.pl: use @groffer_dir@
+
+2011-01-27 James Budiono <james.budiono@gmail.com>
+ Bernd Warken <groff-bernd.warken-72@web.de>
+
+ Fix display of manpages.
+
+ Reported as
+ http://lists.gnu.org/archive/html/bug-groff/2011-01/msg00015.html.
+
+ * perl/groffer.pl (_get_first_prog): Fix return value.
+ (Viewer_X): Add `okular' viewer.
+ * perl/man.pl (manpath_set_from_path): Handle `@main::Path)'
+ correctly.
+
+ * version.sh: Updated.
+
2009-01-03 Werner LEMBERG <wl@gnu.org>
* version.sh: Prepare for groff release 1.20.
@@ -39,7 +90,7 @@
Don't call `chmod' for $(ROFF2PROGS).
(roff2.man): Typographical fixes.
-2006-11-11 Bernd Warken
+2006-11-11 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 1.1.1
@@ -48,7 +99,7 @@
* perl/groffer.pl: Fix test of temporary directory.
-2006-11-09 Bernd Warken
+2006-11-09 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 1.1.0
@@ -64,7 +115,7 @@
* Makefile.sub: Add roff2* and some minor fixes.
-2006-11-04 Bernd Warken
+2006-11-04 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 1.0.3
@@ -76,7 +127,7 @@
- Add `groff' option with argument `-K'.
- Redesign the changed `grog'.
-2006-10-23 Bernd Warken
+2006-10-23 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 1.0.2
@@ -117,7 +168,7 @@
* Makefile.sub: Rewritten. Change PERL to HAVE_PERL and SHELL to
HAVE_SHELL.
-2006-10-14 Bernd Warken
+2006-10-14 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 1.0.1
@@ -125,7 +176,7 @@
* perl/groffer.pl, perl/func.pl: Remove `\n' in `die' calls.
-2006-10-12 Bernd Warken
+2006-10-12 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 1.0.0
@@ -133,7 +184,7 @@
* shell/groffer.sh: Use version.sh in the upper directory.
-2006-10-02 Bernd Warken
+2006-10-02 Bernd Warken <groff-bernd.warken-72@web.de>
The groffer versions 1.* have two kinds of program, a shell
version and a Perl version.
@@ -222,13 +273,13 @@
The former part of the ChangeLog file is in `shell/ChangeLog.0'.
-2006-10-01 Bernd Warken
+2006-10-01 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
License
- Copyright (C) 2006, 2007, 2008, 2009
+ Copyright (C) 2006-2009, 2011
Free Software Foundation, Inc.
- Written by Bernd Warken
+ Written by Bernd Warken <groff-bernd.warken-72@web.de>.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice and this
diff --git a/contrib/groffer/Makefile.sub b/contrib/groffer/Makefile.sub
index 6d2666b..f0282dd 100644
--- a/contrib/groffer/Makefile.sub
+++ b/contrib/groffer/Makefile.sub
@@ -2,11 +2,12 @@
# File position: <groff-source>/contrib/groffer/Makefile.sub
-# Copyright (C) 2001, 2002, 2005, 2006, 2009
+# Copyright (C) 2001, 2002, 2005, 2006, 2009, 2011
# Free Software Foundation, Inc.
-# Written by Werner Lemberg <wl@gnu.org> and Bernd Warken.
+# Written by Werner Lemberg <wl@gnu.org> and
+# Bernd Warken <groff-bernd.warken-72@web.de>.
-# Last update: 5 Jan 2009
+# Last update: 17 Oct 2011
# This file is part of `groffer' which is part of `groff'.
@@ -63,8 +64,6 @@ GROFFER_REST=$(srcdir)/roff2.man \
GROFFER_PERL_=`echo $(GROFFER_PERL) | sed 's|$(srcdir)/perl/||g'`
GROFFER_SHELL_=`echo $(GROFFER_SHELL) | sed 's|$(srcdir)/shell||g'`
-groffer_dir=$(libdir)/groff/groffer
-
# TODO: Add perl check to configure script.
groffer: $(GROFFER_PERL) $(GROFFER_SHELL) \
$(GROFFER_REST) $(SH_DEPS_SED_SCRIPT)
@@ -75,12 +74,13 @@ groffer: $(GROFFER_PERL) $(GROFFER_SHELL) \
-e "s|@g@|$(g)|g" \
-e "s|@BINDIR@|$(DESTDIR)$(bindir)|g" \
-e "s|@libdir@|$(DESTDIR)$(libdir)|g" \
+ -e "s|@groffer_dir@|$(DESTDIR)$(groffer_dir)|g" \
-e "s|@VERSION@|$(version)$(revision)|g" \
-e "$(SH_SCRIPT_SED_CMD)" \
$(srcdir)/perl/groffer.pl >$@; \
- $(INSTALL_DATA) $(srcdir)/perl/groffer.man groffer.man; \
+ cp $(srcdir)/perl/groffer.man groffer.man; \
for f in $(ROFF2PROGS); do \
- $(INSTALL_SCRIPT) $(srcdir)/perl/roff2.pl $$f; \
+ cp $(srcdir)/perl/roff2.pl $$f; \
done; \
else \
: >HAVE_SHELL; \
@@ -89,12 +89,13 @@ groffer: $(GROFFER_PERL) $(GROFFER_SHELL) \
-e "s|@g@|$(g)|g" \
-e "s|@BINDIR@|$(DESTDIR)$(bindir)|g" \
-e "s|@libdir@|$(DESTDIR)$(libdir)|g" \
+ -e "s|@groffer_dir@|$(DESTDIR)$(groffer_dir)|g" \
-e "s|@VERSION@|$(version)$(revision)|g" \
-e "$(SH_SCRIPT_SED_CMD)" \
$(srcdir)/shell/groffer.sh >$@; \
- $(INSTALL_DATA) $(srcdir)/shell/groffer.man groffer.man; \
+ cp $(srcdir)/shell/groffer.man groffer.man; \
for f in $(ROFF2PROGS); do \
- $(INSTALL_SCRIPT) $(srcdir)/shell/roff2.sh $$f; \
+ cp $(srcdir)/shell/roff2.sh $$f; \
done; \
fi
chmod +x $@
diff --git a/contrib/groffer/README b/contrib/groffer/README
index 98d81f2..a44d2bc 100644
--- a/contrib/groffer/README
+++ b/contrib/groffer/README
@@ -98,7 +98,7 @@ Last update: 5 Jan 2009
Copyright (C) 2003, 2004, 2005, 2006, 2009
Free Software Foundation, Inc.
-Written by Bernd Warken.
+Written by Bernd Warken <groff-bernd.warken-72@web.de>.
This file is part of `groffer', which is part of `groff'.
diff --git a/contrib/groffer/perl/README_PERL b/contrib/groffer/perl/README_PERL
index 7b54d02..0e58f06 100644
--- a/contrib/groffer/perl/README_PERL
+++ b/contrib/groffer/perl/README_PERL
@@ -236,7 +236,7 @@ $return_yes -
Copyright (C) 2003, 2004, 2005, 2006, 2009
Free Software Foundation, Inc.
-Written by Bernd Warken.
+Written by Bernd Warken <groff-bernd.warken-72@web.de>.
This file is part of `groffer', which is part of `groff'.
diff --git a/contrib/groffer/perl/func.pl b/contrib/groffer/perl/func.pl
index 009ad00..d0fc639 100644
--- a/contrib/groffer/perl/func.pl
+++ b/contrib/groffer/perl/func.pl
@@ -6,7 +6,7 @@
# Installed position: <prefix>/lib/groff/groffer/func.pl
# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/groffer/perl/groffer.man b/contrib/groffer/perl/groffer.man
index 0eb36d8..fcef1cd 100644
--- a/contrib/groffer/perl/groffer.man
+++ b/contrib/groffer/perl/groffer.man
@@ -9,19 +9,11 @@ groffer \- display groff files and man\~pages on X and tty
.\" Legalese
.\" --------------------------------------------------------------------
.
-.ig
-groffer.1 - man page for groffer (section 1).
-
-Source file position: <groff_source_top>/contrib/groffer/perl/groffer.man
-Installed position: $prefix/share/man/man1/groffer.1
-
-Last update: 2 Jun 2010
-..
.de author
-This file was written by Bernd Warken.
+This file was written by Bernd Warken <groff-bernd.warken-72@web.de>.
..
.de copyleft
-Copyright (C) 2001, 2002, 2004, 2005, 2006, 2009, 2010
+Copyright (C) 2001, 2002, 2004-2006, 2009-2012
Free Software Foundation, Inc.
.
.P
@@ -63,7 +55,7 @@ You can also visit
.\" Setup
.\" --------------------------------------------------------------------
.
-.ds Ellipsis "\&.\|.\|.\""
+.ds Ellipsis "\&.\|.\|.\&\"
.
.\" --------------------------------------------------------------------
.\" Macro definitions
@@ -158,8 +150,7 @@ You can also visit
. ds @indent 2m\"
. el \
. ds @indent \\$1\"
-. TP \\*[@indent]
-. Text \[bu]
+. IP \[bu] \\*[@indent]
. rm @indent
..
@@ -308,8 +299,8 @@ Long options can be abbreviated in several ways.
.RS
.P
.SY
-.OP "-h~\fR|\fB\~--help"
-.OP "-v~\fR|\fB\~--version"
+.OP -h\~\fR|\fB\~--help
+.OP -v\~\fR|\fB\~--version
.YS
.RE
.
@@ -339,8 +330,8 @@ Long options can be abbreviated in several ways.
.OP --tty\-viewer prog
.OP --www
.OP --www\-viewer prog
-.OP --x --X
-.OP --x\-viewer --X\-viewer prog
+.OP --x\~\fR|\fB\~--X
+.OP --x\-viewer\~\fR|\fB\~--X\-viewer prog
.YS
.RE
.
@@ -349,8 +340,10 @@ Long options can be abbreviated in several ways.
.I options related to \%groff
.RS
.P
-.OP -T~\fR|\fB\~--device device
-.OP -Z~\fR|\fB\~--intermediate\-output~\fR|\fB\~--ditroff
+.SY
+.OP -T\~\fR|\fB\~--device device
+.OP -Z\~\fR|\fB\~--intermediate\-output\~\fR|\fB\~--ditroff
+.YS
.P
All further
.B \%groff
@@ -360,16 +353,19 @@ short options are accepted.
.
.TP
.I options for man\~pages
+.RS
+.P
.SY
.OP --apropos
.OP --apropos\-data
.OP --apropos\-devel
.OP --apropos\-progs
.OP --man
-.OP --no-man
-.OP --no-special
+.OP --no\-man
+.OP --no\-special
.OP --whatis
.YS
+.RE
.
.
.TP
@@ -382,14 +378,14 @@ short options are accepted.
.OP --ditroff
.OP --extension suffix
.OP --locale language
-.OP --local-file
-.OP "--location~\fR|\fB\~--where"
+.OP --local\-file
+.OP --location\~\fR|\fB\~--where
.OP --manpath dir1:dir2:\*[Ellipsis]
-.OP --no-location
+.OP --no\-location
.OP --pager program
.OP --sections sec1:sec2:\*[Ellipsis]
.OP --systems sys1,sys2,\*[Ellipsis]
-.OP --troff-device device
+.OP --troff\-device device
.YS
.P
Further long options of \f[CR]GNU\f[]
@@ -403,17 +399,17 @@ are accepted as well.
.RS
.P
.SY
-.OP --bd~\fR|\fB\~--bordercolor pixels
-.OP --bg~\fR|\fB\~--background color
-.OP --bw~\fR|\fB\~--borderwidth pixels
+.OP --bd\~\fR|\fB\~--bordercolor pixels
+.OP --bg\~\fR|\fB\~--background color
+.OP --bw\~\fR|\fB\~--borderwidth pixels
.OP --display X-display
-.OP --fg~\fR|\fB\~--foreground color
-.OP --fn~\fR|\fB\~--ft~\fR|\fB\~--font font_name
+.OP --fg\~\fR|\fB\~--foreground color
+.OP --fn\~\fR|\fB\~--ft\~\fR|\fB\~--font font_name
.OP --geometry size_pos
.OP --resolution value
.OP --rv
.OP --title string
-.OP --xrm X-resource
+.OP --xrm X\-resource
.YS
.RE
.
@@ -593,13 +589,13 @@ All other arguments are ignored.
.
.
.TP
-.OP -h\fR|\fR--help
-Print a helping information with a short explanation of option sto
+.B -h\~\fR|\fB\~--help
+Print help information with a short explanation of options to
standard output.
.
.
.TP
-.OP -v\fR\fB--version
+.B -v\~\fR|\fB\~--version
Print version information to standard output.
.
.
@@ -685,7 +681,7 @@ and restart option processing using only the rest of the command line.
.
.
.TP
-.B --default\-modes mode1,mode2,\*[Ellipsis]
+.BI --default\-modes \ mode1,mode2,\*[Ellipsis]
Set the sequence of modes for
.I \%auto\~mode
to the comma separated list given in the argument.
@@ -709,7 +705,7 @@ Equivalent to
.
.
.TP
-.B --dvi\-viewer prog
+.BI --dvi\-viewer \ prog
Choose a viewer program for
.IR \%dvi\~mode .
.
@@ -721,7 +717,7 @@ Known \%\f[CR]X\~Window\f[]
viewers include
.BR \%xdvi (1)
and
-.BR \%dvilx (1)
+.BR \%dvilx (1).
.
In each case, arguments can be provided additionally.
.
@@ -750,7 +746,7 @@ In each case, arguments can be provided additionally.
.
.
.TP
-.BI --mode value
+.BI --mode \ value
.
Set the display mode.
.
@@ -780,7 +776,6 @@ viewer program.
By default, the formatted input is displayed with the
.BR \%xdvi (1)
program.
-.BR --dvi .
.
.
.TP
@@ -883,22 +878,22 @@ program being distributed together with
But the standard \%\f[CR]X\~Window\f[] tool
.BR \%xditview (1)
can also be chosen with the option
-.B --x\-viewer .
+.BR --x\-viewer .
The default resolution is
-.BR 75\~dpi ,
+.BR 75dpi ,
but
-.B 100\~dpi
+.B 100dpi
are also possible.
.
The default
.I groff
device
for the resolution of
-.B 75\~dpi
+.B 75dpi
is
.BR X75\-12 ,
for
-.B 100\~dpi
+.B 100dpi
it is
.BR X100 .
.
@@ -907,9 +902,9 @@ The corresponding
for the actual device is generated and the result is displayed.
.
For a resolution of
-.BR 100\~dpi ,
+.BR 100dpi ,
the default width of the geometry of the display program is chosen to
-.BR 850\~dpi .
+.BR 850dpi .
.
.
.TP
@@ -957,7 +952,7 @@ Equivalent to
.
.
.TP
-.B --pdf\-viewer prog
+.BI --pdf\-viewer \ prog
Choose a viewer program for
.IR \%pdf\~mode .
.
@@ -973,14 +968,14 @@ Equivalent to
.
.
.TP
-.B --ps\-viewer prog
+.BI --ps\-viewer \ prog
Choose a viewer program for
.IR \%ps\~mode .
.
This can be a file name or a program to be searched in
.Env_var $PATH .
.
-Common Postscript viewers inlude
+Common Postscript viewers include
.BR \%gv (1),
.BR \%ghostview (1),
and
@@ -991,7 +986,7 @@ In each case, arguments can be provided additionally.
.
.TP
.B --source
-Equivalent
+Equivalent to
.BR --mode=source .
.
.
@@ -1016,15 +1011,15 @@ Equivalent to
.
.
.TP
-.B --tty\-viewer prog
+.BI --tty\-viewer \ prog
Choose a text pager for mode
.IR tty .
The standard pager is
.BR less (1).
-This option is eqivalent to
+This option is equivalent to
.I man
option
-.BR --pager=prog .
+.BR --pager=\fIprog\fP .
The option argument can be a file name or a program to be searched in
.Env_var $PATH ;
arguments can be provided additionally.
@@ -1037,19 +1032,19 @@ Equivalent to
.
.
.TP
-.B --www\-viewer prog
+.BI --www\-viewer \ prog
Equivalent to
-.B --html\-viewer .
+.BR --html\-viewer .
.
.
.TP
-.B --X~\fR|\fB\~--x
+.B --X\~\fR|\fB\~--x
Equivalent to
.BR --mode=x .
.
.
.TP
-.B --X\-viewer -- x\-viewer prog
+.BI --X\-viewer\~\fR|\fB\~--x\-viewer \ prog
Choose a viewer program for
.IR \%x\~mode .
Suitable viewer programs are
@@ -1112,7 +1107,7 @@ option
.B -Z
.B \%groffer
was designed to be switched into
-.I \%groff\~mode ;
+.IR \%groff\~mode ;
the
.I \%groffer
viewing features are disabled there.
@@ -1134,7 +1129,7 @@ sequences in
.
.
.TP
-.BI --m file
+.BI --m \ file
Add
.I \%file
as a
@@ -1145,7 +1140,7 @@ This is useful in case it cannot be recognized automatically.
.
.
.TP
-.BI --P opt_or_arg
+.BI --P \ opt_or_arg
Send the argument
.I \%opt_or_arg
as an option or option argument to the actual
@@ -1154,7 +1149,7 @@ postprocessor.
.
.
.TP
-.B --T \fIdevname\fR ~\fR|\fB\~ --device \fIdevname\fR
+.B --T \fIdevname\fR\~\fR|\fB\~--device \fIdevname\fR
.
This option determines
.BR \%groff 's
@@ -1215,7 +1210,7 @@ device for a better display.
.
.
.TP
-.B -Z~\fR|\fB\~--intermediate-output~\fR|\fB\~--ditroff
+.B -Z\~\fR|\fB\~--intermediate-output\~\fR|\fB\~--ditroff
Switch into
.I \%groff\~mode
and format the input with the
@@ -1410,7 +1405,7 @@ is first tested whether it is an existing file.
.
.
.TP
-.B --no-man~\fR|\fB\~--local-file
+.B --no-man\~\fR|\fB\~--local-file
Do not check for
.IR \%man\~pages .
.
@@ -1423,10 +1418,10 @@ option.
.TP
.B --no-special
Disable former calls of
-.B --all ,
-.B --apropos* ,
+.BR --all ,
+.BR --apropos* ,
and
-.B --whatis .
+.BR --whatis .
.
.
.\" --------------------------------------------------------------------
@@ -1447,10 +1442,10 @@ so most of them are just ignored.
These ignored
.B man
options are
-.B --catman ,
-.B --troff ,
+.BR --catman ,
+.BR --troff ,
and
-.B --update .
+.BR --update .
.
.
.P
@@ -1480,13 +1475,13 @@ retrieve all suitable documents instead of only one.
.
.
.TP
-.B -7\fR\fB--ascii
+.B -7\~\fR|\fB\~--ascii
In
.IR \%text\~modes ,
display ASCII translation of special characters for critical environment.
.
This is equivalent to
-.BR "groff -mtty_char" ;
+.BR "groff \%-mtty_char" ;
see
.BR groff_tmac (@MAN5EXT@).
.
@@ -1497,11 +1492,11 @@ Produce
.IR "groff intermediate output" .
This is equivalent to
.B \%groffer
-.B -Z .
+.BR -Z .
.
.
.TP
-.BI --extension suffix
+.BI --extension \ suffix
Restrict
.I \%man\~page
search to file names that have
@@ -1517,13 +1512,13 @@ extension is
.
.
.TP
-.BI --locale language
+.BI --locale \ language
.
Set the language for
.IR \%man\~pages .
.
This has the same effect, but overwrites
-.Env_var $LANG
+.Env_var $LANG .
.
.
.TP
@@ -1535,14 +1530,14 @@ Print the location of the retrieved files to standard error.
.B --no-location
Do not display the location of retrieved files; this resets a former
call to
-.B --location .
+.BR --location .
.
This was added by
.BR \%groffer .
.
.
.TP
-.BI --manpath "'dir1:dir2:\*[Ellipsis]'"
+.BI --manpath \ 'dir1:dir2:\*[Ellipsis]'
Use the specified search path for retrieving
.I \%man\~pages
instead of the program defaults.
@@ -1559,11 +1554,11 @@ Set the pager program in
default is
.BR \%less .
This is equivalent to
-.B --tty\-viewer .
+.BR --tty\-viewer .
.
.
.TP
-.BI --sections "'sec1:sec2:\*[Ellipsis]'"
+.BI --sections \ sec1:sec2:\*[Ellipsis]
Restrict searching for
.I \%man\~pages
to the given
@@ -1572,7 +1567,7 @@ a colon-separated list.
.
.
.TP
-.BI --systems "'sys1,sys2,\*[Ellipsis]'"
+.BI --systems \ sys1,sys2,\*[Ellipsis]
Search for
.I \%man\~pages
for the given operating systems; the argument
@@ -1582,8 +1577,8 @@ is a comma-separated list.
.
.TP
.B --where
-Eqivalent to
-.B --location .
+Equivalent to
+.BR --location .
.
.
.\" --------------------------------------------------------------------
@@ -1612,7 +1607,7 @@ options, for example,
uses the option
.B --font
for the \%\f[CR]X\~Window\f[] option
-.B -font .
+.BR -font .
.
.
.P
@@ -1623,78 +1618,78 @@ for more details on these options and their arguments.
.
.
.TP
-.BI --background color
+.BI --background \ color
Set the background color of the viewer window.
.
.
.TP
-.BI --bd pixels
+.BI --bd \ pixels
This is equivalent to
-.B --bordercolor .
+.BR --bordercolor .
.
.
.TP
-.BI --bg color
+.BI --bg \ color
This is equivalent to
-.B --background .
+.BR --background .
.
.
.TP
-.B --bw pixels
+.BI --bw \ pixels
This is equivalent to
-.B --borderwidth .
+.BR --borderwidth .
.
.
.TP
-.BI --bordercolor pixels
+.BI --bordercolor \ pixels
Specifies the color of the border surrounding the viewer window.
.
.
.TP
-.BI --borderwidth pixels
+.BI --borderwidth \ pixels
Specifies the width in pixels of the border surrounding the viewer
window.
.
.
.TP
-.BI --display X-display
+.BI --display \ X-display
Set the \%\f[CR]X\~Window\f[] display on which the viewer program
shall be started, see the \%\f[CR]X\~Window\f[] documentation for the
syntax of the argument.
.
.
.TP
-.BI --foreground color
+.BI --foreground \ color
Set the foreground color of the viewer window.
.
.
.TP
-.BI --fg color
+.BI --fg \ color
This is equivalent to
-.B -foreground .
+.BR -foreground .
.
.
.TP
-.B --fn font_name
+.BI --fn \ font_name
This is equivalent to
-.B --font .
+.BR --font .
.
.
.TP
-.BI --font font_name
+.BI --font \ font_name
Set the font used by the viewer window.
.
The argument is an \%\f[CR]X\~Window\f[] font name.
.
.
.TP
-.BI --ft font_name
+.BI --ft \ font_name
This is equivalent to
-.B --font .
+.BR --font .
.
.
.TP
-.BI --geometry size_pos
+.BI --geometry \ size_pos
Set the geometry of the display window, that means its size and its
starting position.
.
@@ -1704,7 +1699,7 @@ for the syntax of the argument.
.
.
.TP
-.BI --resolution value
+.BI --resolution \ value
Set \%\f[CR]X\~Window\f[] resolution in dpi (dots per inch) in some
viewer programs.
.
@@ -1716,7 +1711,7 @@ and
Actually, the default resolution for
.B \%groffer
is set to
-.BR 75\~dpi .
+.BR 75dpi .
The resolution also sets the default device in
.IR "mode x" .
.
@@ -1727,12 +1722,12 @@ Reverse foreground and background color of the viewer window.
.
.
.TP
-.BI --title "'some text'"
+.BI --title "\ 'some text'"
Set the title for the viewer window.
.
.
.TP
-.BI --xrm "'resource'"
+.BI --xrm \ 'resource'
Set \f[CR]\%X\~Window\f[] resource.
.
.
@@ -1743,7 +1738,7 @@ Set \f[CR]\%X\~Window\f[] resource.
.TP
.B --debug
Enable all debugging options
-.B --debug\-\fItype\fP .
+.BR --debug\-\fItype\fP .
.
The temporary files are kept and not deleted, the
.B grog
@@ -1772,7 +1767,7 @@ Enable two debugging informations.
.
Print the name of the temporary directory and keep the temporary
files, do not delete them during the run of
-.BR \% groffer .
+.BR \%groffer .
.
.
.TP
@@ -1790,7 +1785,7 @@ Print the name of the temporary directory.
.TP
.B --do-nothing
This is like
-.B --version ,
+.BR --version ,
but without the output; no viewer is started.
.
This makes only sense in development.
@@ -1872,7 +1867,7 @@ arguments is ignored.
.
The \f[CR]GNU\f[] behavior to recognize options even when mixed with
.I \%filespec
-arguments is used througout.
+arguments is used throughout.
.
But, as usual, the double minus argument
.B --
@@ -1986,7 +1981,7 @@ If you want to look up a
called
.B -
use the argument
-.BR "man:\-" .
+.BR man:\- .
.
.
.Topic
@@ -2156,12 +2151,12 @@ You can change this automatic behavior by the option
.
.P
Known viewers for the graphical display modes and their standard
-\%\f[CR]X\~Window\f[] viewer progams are
+\%\f[CR]X\~Window\f[] viewer programs are
.
.Topic
in a PDF viewer
.nh
-.RI ( \%pdf\~mode ),
+.RI ( \%pdf\~mode )
.hy
.
.Topic
@@ -2169,14 +2164,14 @@ in a web browser
.nh
.RI ( html
or
-.IR \%www\~mode ).
+.IR \%www\~mode )
.hy
.RE
.
.Topic
in a Postscript viewer
.nh
-.RI ( \%ps\~mode ),
+.RI ( \%ps\~mode )
.hy
.
.Topic
@@ -2187,19 +2182,19 @@ viewers such as
or
.BR \%xditview (1)
(in
-.IR \%x\~mode ),
+.IR \%x\~mode )
.
.Topic
in a dvi viewer program
.nh
-.RI ( \%dvi\~mode ),
+.RI ( \%dvi\~mode )
.hy
.
.
.P
The
.I \%pdf\~mode
-has a major advantage \[em] it is the only graphical diplay mode that
+has a major advantage \[em] it is the only graphical display mode that
allows to search for text within the viewer; this can be a really
important feature.
.
@@ -2248,7 +2243,7 @@ is chosen for
This can be changed by specifying option
.B -T
or
-.BR --device .
+.BR \%--device .
.
.
.P
@@ -2337,7 +2332,7 @@ short options are supported by
.
.
.\" --------------------------------------------------------------------
-.SH "MAN\~PAGE\~SEARCHING"
+.SH "MAN PAGE SEARCHING"
.\" --------------------------------------------------------------------
.
The default behavior of
@@ -2375,7 +2370,7 @@ error, but processing is continued.
.
.
.\" --------------------------------------------------------------------
-.SS "Search Algoritm"
+.SS "Search Algorithm"
.\" --------------------------------------------------------------------
.
Let us now assume that a
@@ -2548,7 +2543,7 @@ The wanted
can be chosen by several methods.
.
.Topic
-Enviroment variable
+Environment variable
.Env_var $LANG .
.
.Topic
@@ -2973,7 +2968,7 @@ or
.BR \%bzip2 (1)
it is decompressed on-the-fly.
.
-This includes the \f[CR]GNU\f[]
+This includes the \f[CR]GNU\fP
.BR \%.gz ,
.BR \%.bz2 ,
and the traditional
@@ -2995,7 +2990,7 @@ other programs.
.
All environment variables of
.BR \%groff (@MAN1EXT@)
-and \f[CR]GNU\f[]
+and \f[CR]GNU\fP
.BR \%man (1)
and some standard system variables are honored.
.
@@ -3031,7 +3026,7 @@ The following variables have a special meaning for
.
.TP
.Env_var \%$DISPLAY
-If this variable is set this indicates that the \%\f[CR]X\~Window\f[]
+If this variable is set this indicates that the \%\f[CR]X\~Window\fP
system is running.
.
Testing this variable decides on whether graphical or text output is
@@ -3040,14 +3035,14 @@ generated.
This variable should not be changed by the user carelessly, but it can
be used to start the graphical
.B \%groffer
-on a remote \%\f[CR]X\~Window\f[] terminal.
+on a remote \%\f[CR]X\~Window\fP terminal.
.
For example, depending on your system,
.B \%groffer
can be started on the second monitor by the command
.sp
.EX
-\fIsh#\fR DISPLAY=:0.1\~groffer\~ what.ever &
+\fIsh#\fR DISPLAY=:0.1\~groffer\~what.ever &
.EE
.
.
@@ -3082,7 +3077,7 @@ is a character set or encoding identifier like ISO-8859-1 or UTF-8;
see
.BR \%setlocale (3).
.
-The locale values \f[CR]C\f[] and \%\f[CR]POSIX\f[]
+The locale values \f[CR]C\fP and \%\f[CR]POSIX\fP
stand for the default, i.e. the
.I \%man\~page
directories without a language prefix.
@@ -3100,7 +3095,7 @@ variable to the
program
.sp
.EX
-\fIsh#\fR PAGER=cat\~groffer\~ anything
+\fIsh#\fR PAGER=cat\~groffer\~anything
.EE
.sp
.
@@ -3203,7 +3198,7 @@ If set, this variable contains the directories in which the
trees are stored.
.
This is overridden by option
-.BR --manpath .
+.BR \%--manpath .
.
.
.TP
@@ -3363,9 +3358,9 @@ or
#
# groffer options that are used in each call of groffer
\-\-foreground=DarkBlue
-\-\-resolution 100
+\-\-resolution=100
\-\-x\-viewer=gxditview \-geometry 900x1200
-\-\-pdf\-viewer xpdf \-z 150
+\-\-pdf\-viewer xpdf \-Z 150
.fi
.hy
.ft
@@ -3392,7 +3387,7 @@ in all viewers that support this, such as
.
.Topic
Use a resolution of
-.B 100\~dpi
+.B 100dpi
in all viewers that support this, such as
.BR \%gxditview .
.
@@ -3408,16 +3403,16 @@ Force
as the
.I \%x-mode
viewer using the geometry option for setting the width to
-.B 900\~dpi
+.B 900px
and the height to
-.BR 1200\~dpi .
+.BR 1200px .
This geometry is suitable for a resolution of
-.BR 100\~dpi .
+.BR 100dpi .
.
.
.Topic
Use
-.BR \%xpdf (@MAN1EXT@)
+.BR \%xpdf (1)
as the
.I \%pdf-mode
viewer with the argument
@@ -3440,19 +3435,20 @@ The following examples, however, show that
.B \%groffer
has much more fancy capabilities.
.
-.
+.sp
.EX
\fIsh#\fR\~groffer\~/usr/local/share/doc/groff/meintro.ms.gz
.EE
+.sp
Decompress, format and display the compressed file
.File_name meintro.ms.gz
in the directory
.File_name /usr/local/share/doc/groff ,
using the standard viewer
.B \%gxditview
-as graphical viewer when in \%\f[CR]X\~Window\f[], or the
+as graphical viewer when in \%\f[CR]X\~Window\fP, or the
.BR \%less (1)
-pager program when not in \%\f[CR]X\~Window\f[].
+pager program when not in \%\f[CR]X\~Window\fP.
.
.sp
.EX
@@ -3537,7 +3533,7 @@ The quotes around
.nh
.I \[cq]troff(1)\[cq]
.hy
-are necessary because the paranthesis are special shell characters;
+are necessary because the parentheses are special shell characters;
escaping them with a backslash character
.I \[rs](
and
@@ -3548,7 +3544,7 @@ The formatted files are concatenated and displayed in one piece.
.
.sp
.EX
-\fIsh#\fR\~LANG=de\~groffer\~--man\~--www\~--www-viever=galeon\~ls
+\fIsh#\fR\~LANG=de\~groffer\~--man\~--www\~--www-viewer=galeon\~ls
.EE
.sp
Retrieve the German
@@ -3602,7 +3598,7 @@ This is a set of abbreviated arguments, it is determined as
.
.sp
.EX
-\fIsh#\fR\~cat\~file.gz\~|\~groffer\~-Z\~-mfoo"
+\fIsh#\fR\~cat\~file.gz\~|\~groffer\~-Z\~-mfoo
.EE
.sp
.
@@ -3614,12 +3610,12 @@ transported to the
without post-processing
.RB ( groff
option
-.B -Z ),
+.BR -Z ),
using macro package
.I \%foo
.RB ( groff
option
-.B -m ) .
+.BR -m ).
.
.
.sp
@@ -3629,7 +3625,7 @@ option
.EX
.sp
.
-Display the word \f[CB]WOW!\f[] in a small window in constant-width
+Display the word \f[CB]WOW!\fP in a small window in constant-width
bold font, using color yellow on red background.
.
.
@@ -3645,9 +3641,9 @@ program is written in Perl, the Perl version during writing was v5.8.8.
.P
.B \%groffer
provides its own parser for command line arguments that is compatible
-to both \%\f[CR]POSIX\f[]
+to both \%\f[CR]POSIX\fP
.BR \%getopts (1)
-and \%\f[CR]GNU\f[]
+and \%\f[CR]GNU\fP
.BR \%getopt (1).
It can handle option arguments and file names containing white space
and a large set of special characters.
@@ -3668,7 +3664,7 @@ option or a combination thereof; for example, the
short option combination
.B -Qmfoo
is equivalent to
-.B -Q\~\-m\~foo .
+.BR -Q\~\-m\~foo .
.
.
.Topic
@@ -3716,7 +3712,7 @@ The free mixing of options and
.I \%filespec
parameters follows the GNU principle.
.
-That does not fulfill the strange option behavior of \%\f[CR]POSIX\f[]
+That does not fulfill the strange option behavior of \%\f[CR]POSIX\fP
that ends option processing as soon as the first non-option argument
has been reached.
.
@@ -3791,13 +3787,6 @@ command line options from the input using this program.
.
.
.TP
-.BR \%@g@chem (@MAN1EXT@)
-Preprocessor of
-.I groff
-that is run automatically.
-.
-.
-.TP
.BR groff_out (@MAN5EXT@)
Documentation on the
.I \%groff intermediate output
@@ -3898,7 +3887,7 @@ or
.TP
.BR \%less (1)
Standard pager program for the
-.I \%tty\~mode .
+.IR \%tty\~mode .
.
.
.P
diff --git a/contrib/groffer/perl/groffer.pl b/contrib/groffer/perl/groffer.pl
index 602abb0..7609347 100755
--- a/contrib/groffer/perl/groffer.pl
+++ b/contrib/groffer/perl/groffer.pl
@@ -5,10 +5,10 @@
# Source file position: <groff-source>/contrib/groffer/perl/groffer.pl
# Installed position: <prefix>/bin/groffer
-# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Copyright (C) 2006, 2009, 2011 Free Software Foundation, Inc.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
-# Last update: 5 Jan 2009
+# Last update: 22 Mar 2011
# This file is part of `groffer', which is part of `groff'.
@@ -132,8 +132,7 @@ BEGIN {
$at_at{'BINDIR'} = '@BINDIR@';
$at_at{'G'} = '@g@';
$at_at{'LIBDIR'} = '@libdir@';
- $groffer_libdir =
- File::Spec->catdir($at_at{'LIBDIR'}, 'groff', 'groffer');
+ $groffer_libdir = '@groffer_dir@';
$file_perl_test_pl = File::Spec->catfile($groffer_libdir,
'perl_test.pl');
$File_version_sh = File::Spec->catfile($groffer_libdir, 'version.sh');
@@ -193,9 +192,9 @@ my %Viewer_X =('DVI' => ['kdvi', 'xdvi', 'dvilx'],
'HTML' => ['konqueror', 'epiphany'. 'mozilla-firefox',
'firefox', 'mozilla', 'netscape', 'galeon', 'opera',
'amaya','arena', 'mosaic'],
- 'PDF' => ['kpdf', 'acroread', 'evince', 'xpdf -z 150', 'gpdf',
+ 'PDF' => ['okular', 'kpdf', 'acroread', 'evince', 'xpdf -z 150', 'gpdf',
'kghostview --scale 1.45', 'ggv'],
- 'PS' => ['kpdf', 'kghostview --scale 1.45', 'evince', 'ggv',
+ 'PS' => ['okular', 'kpdf', 'kghostview --scale 1.45', 'evince', 'ggv',
'gv', 'ghostview', 'gs_x11', 'gs'],
'TTY' => ['xless'],
'X' => ['gxditview', 'xditview'],
@@ -1323,8 +1322,8 @@ sub _get_first_prog {
if (%prog) {
$Display{'PROG'} = $prog{'fullname'};
$Display{'ARGS'} = $prog{'args'};
+ return 1;
}
- return 1;
}
return 0;
} # _get_first_prog() of main_set_mode()
diff --git a/contrib/groffer/perl/man.pl b/contrib/groffer/perl/man.pl
index 9785a8b..91c65cd 100644
--- a/contrib/groffer/perl/man.pl
+++ b/contrib/groffer/perl/man.pl
@@ -5,10 +5,10 @@
# Source file position: <groff-source>/contrib/groffer/perl/man.pl
# Installed position: <prefix>/lib/groff/groffer/man.pl
-# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Copyright (C) 2006, 2009, 2011 Free Software Foundation, Inc.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
-# Last update: 5 Jan 2009
+# Last update: 27 Jan 2011
# This file is part of `groffer', which is part of `groff'.
@@ -142,7 +142,7 @@ sub apropos_setup {
# $main::Man{EXT}, $tmpdir
# out: $main::Manspec
#
-# Arguments: 1, a hash refernce with keys 'name', 'sec', 'ext', where
+# Arguments: 1, a hash reference with keys 'name', 'sec', 'ext', where
# 'sec' is a string of one or several section characters
#
sub is_man {
@@ -201,7 +201,7 @@ sub is_man {
# Globals in: $main::Manspec, $main::Man{MANSPEC}, $main::Man{SEC_CHARS},
# $main::Man{EXT}, $main::Man{ALL}
#
-# Arguments: 1, a hash refernce with keys 'name', 'sec', 'ext', where
+# Arguments: 1, a hash reference with keys 'name', 'sec', 'ext', where
# 'sec' is a string of one or several section characters
#
sub man_get {
@@ -522,7 +522,8 @@ sub manpath_set_from_path {
my @path =
qw( /usr/local /usr /usr/X11R6 /usr/openwin /opt /opt/gnome /opt/kde );
# get a basic man path from $ENV{PATH}
- foreach (@main::Path) {
+ my @path2 = @main::Path;
+ foreach (@path2) {
s#bin/*$##;
push @path, $_;
}
diff --git a/contrib/groffer/perl/perl_test.pl b/contrib/groffer/perl/perl_test.pl
index dbe3f1b..e92fc3c 100644
--- a/contrib/groffer/perl/perl_test.pl
+++ b/contrib/groffer/perl/perl_test.pl
@@ -6,7 +6,7 @@
# Installed position: <prefix>/lib/groff/groffer/perl_test.sh
# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/groffer/perl/roff2.pl b/contrib/groffer/perl/roff2.pl
index 0e1f17a..c3e6047 100755
--- a/contrib/groffer/perl/roff2.pl
+++ b/contrib/groffer/perl/roff2.pl
@@ -6,7 +6,7 @@
# Installed position: <prefix>/bin/roff2*
# Copyright (C) 2006, 2008, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/groffer/perl/split_env.sh b/contrib/groffer/perl/split_env.sh
index f7b039d..f939261 100644
--- a/contrib/groffer/perl/split_env.sh
+++ b/contrib/groffer/perl/split_env.sh
@@ -6,7 +6,7 @@
# Installed position: <prefix>/lib/groff/groffer/split_env.sh
# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken.
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/groffer/roff2.man b/contrib/groffer/roff2.man
index 66060f2..68af429 100644
--- a/contrib/groffer/roff2.man
+++ b/contrib/groffer/roff2.man
@@ -10,7 +10,7 @@ Simplified to use .SY/.OP/.YS
.
.
.de au
-This file was written by Bernd Warken.
+This file was written by Bernd Warken <groff-bernd.warken-72@web.de>.
..
.
.
diff --git a/contrib/groffer/shell/ChangeLog.0 b/contrib/groffer/shell/ChangeLog.0
index c112293..7502c64 100644
--- a/contrib/groffer/shell/ChangeLog.0
+++ b/contrib/groffer/shell/ChangeLog.0
@@ -1,11 +1,11 @@
-2006-10-10 Bernd Warken
+2006-10-10 Bernd Warken <groff-bernd.warken-72@web.de>
* ChangeLog.0: This file is the former ChangeLog file of the
`groffer' versions 0.* consisting of a shell version only. Since
then the files have been moved to the subdirectory `shell' of the
`groffer' main directory.
-2006-10-05 Bernd Warken
+2006-10-05 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.31
@@ -28,7 +28,7 @@
Remove the space characters at the end of line in all files.
-2006-10-03 Bernd Warken
+2006-10-03 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.30
@@ -37,7 +37,7 @@
- main_do_fileargs(): Distribute special_filespec() in order to
get a better heading for `whatis'.
-2006-10-03 Bernd Warken
+2006-10-03 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.29
@@ -55,7 +55,7 @@
- Reconfigure the sections on filespec arguments.
- Remove information on wildcards.
-2006-10-01 Bernd Warken
+2006-10-01 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.28
@@ -73,7 +73,7 @@
- main_do_fileargs(): Rewrite the handling of filespec
parameters. Fix filespec man:name.section.
-2006-09-26 Bernd Warken
+2006-09-26 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.27
@@ -105,7 +105,7 @@
- main_display(): Fix description. Remove $md_options. Let
$MANOPT override system variables.
-2006-09-16 Bernd Warken
+2006-09-16 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.26
@@ -168,7 +168,7 @@
handle also files with extension when no files without extension
are found.
-2006-09-11 Bernd Warken
+2006-09-11 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.25
@@ -307,7 +307,7 @@
- Add `--print' in OPTION OVERVIEW.
- Correct many entries with the non-breaking `\%' construct.
-2006-07-28 Bernd Warken
+2006-07-28 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.24
@@ -449,7 +449,7 @@
* Makefile.sub: Add DESTDIR to install and uninstall targets
to support staged installations.
-2005-09-14 Bernd Warken
+2005-09-14 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.23
@@ -502,7 +502,7 @@
systems parameter if any. Then _MAN_PATH is prepended by the
language part.
- _manpath_add_sys(): New subfunction of manpath_add_lang_sys() to
- handle the sytems part.
+ handle the systems part.
- man_search_section: Fix it to handle section names that have
more than one character (an extension).
- $_MAN_PATH: Now stores man path as a list. This is done in
@@ -574,7 +574,7 @@
- Fix section `Error handling'.
- Add section `Speed'.
-2005-08-22 Bernd Warken
+2005-08-22 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.22
@@ -815,7 +815,7 @@
as $(srcdir)/groffer2.sh, so it will install when building in a
different directory from the source.
-2005-08-02 Bernd Warken
+2005-08-02 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.21
@@ -996,7 +996,7 @@
* ChangeLog: Remove final spaces.
-2005-07-30 Bernd Warken
+2005-07-30 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.20
@@ -1026,7 +1026,7 @@
- Documentation of the splitting of the script.
- Document the possible abbreviation of options.
-2005-07-07 Bernd Warken
+2005-07-07 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.19
@@ -1077,7 +1077,7 @@
- Add information on the default devices in `x mode'.
- Minor corrections.
-2005-07-01 Bernd Warken
+2005-07-01 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.18
@@ -1139,7 +1139,7 @@
* Makefile.sub:
Readd `@g@'.
-2005-06-23 Bernd Warken
+2005-06-23 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.17
@@ -1174,7 +1174,7 @@
* README-SH: Information of `Portable shells' in info autoconf.
-2005-06-19 Bernd Warken
+2005-06-19 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.16
@@ -1197,7 +1197,7 @@
* Makefile.sub: $(RM): Define it to `rm -f' because not all `make'
programs have it predefined.
-2005-06-16 Bernd Warken
+2005-06-16 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.15
@@ -1205,13 +1205,13 @@
- Use `$(RM)'.
- Use `sed -f $(SH_DEPS_SED_SCRIPT)'.
-2005-05-20 Bernd Warken
+2005-05-20 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.14
* groffer.man: correction of non-hyphenation
-2005-05-17 Bernd Warken
+2005-05-17 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.13
@@ -1235,7 +1235,7 @@
* groffer.sh:
- first line: Add space to `#! /bin/sh'.
-2004-11-15 Bernd Warken
+2004-11-15 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.12
@@ -1252,7 +1252,7 @@
to groffer options.
- `$_TMP_DIR_SUB': remove this unused variable.
-2004-06-15 Bernd Warken
+2004-06-15 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.11
@@ -1260,7 +1260,7 @@
- To the search of the `--apropos-*' options, add man pages with a
subsection in their apropos output.
-2004-06-02 Bernd Warken
+2004-06-02 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.10
@@ -1288,7 +1288,7 @@
corresponding example.
- Update the information on $POSIXLY_CORRECT.
-2004-05-29 Bernd Warken
+2004-05-29 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.9
@@ -1299,7 +1299,7 @@
* groffer.man:
Remove unnecessary information on groffer version.
-2004-05-12 Bernd Warken
+2004-05-12 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.8
@@ -1313,7 +1313,7 @@
* .cvsignore:
Restore this file.
-2004-04-30 Bernd Warken
+2004-04-30 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.7
@@ -1326,7 +1326,7 @@
* groffer.man, README_SH:
Corrections.
-2004-04-27 Bernd Warken
+2004-04-27 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.6
@@ -1349,7 +1349,7 @@
* ChangeLog: Add a license in the style of Emacs ChangeLog file,
which is weaker than the GPL, but has its flavor.
-2004-04-24 Bernd Warken
+2004-04-24 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.5
@@ -1540,7 +1540,7 @@
occurencies of his email address in every file of the groffer
source.
-2003-01-22 Bernd Warken
+2003-01-22 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.4
@@ -1561,7 +1561,7 @@
* TODO:
Remove mention of `shoop' and `apropos'.
-2002-10-21 Bernd Warken
+2002-10-21 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.3
@@ -1585,7 +1585,7 @@
- writing part of groffer in C/C++.
- handling several files with different macro packages.
-2002-10-17 Bernd Warken
+2002-10-17 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* fixes of groffer 0.9.2
@@ -1602,7 +1602,7 @@
New file for general information on the groffer source; it is
not installed.
-2002-10-14 Bernd Warken
+2002-10-14 Bernd Warken <groff-bernd.warken-72@web.de>
* Makefile.sub:
add replacement "@BINDIR@" to "$(bindir)" for "groffer:"
@@ -1614,7 +1614,7 @@
* groffer.man:
Remove double definition of filespec parameters.
-2002-10-13 Bernd Warken
+2002-10-13 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.2
@@ -1637,7 +1637,7 @@
- "Option Parsing" is moved to section "COMPATIBILITY".
- Fix some "EXAMPLES".
-2002-09-30 Bernd Warken
+2002-09-30 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.1
@@ -1645,7 +1645,7 @@
- Remove request for different shells.
- Remove the 'sed' complaints.
-2002-07-15 Bernd Warken
+2002-07-15 Bernd Warken <groff-bernd.warken-72@web.de>
* groffer.sh: replace `sed' interface by direct `sed'
- This improves the performance of the shell programming parts
@@ -1669,7 +1669,7 @@
groffer was called from the command line, or with the shell
name in the first line of the script, actually `/bin/sh'.
-2002-07-12 Bernd Warken
+2002-07-12 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* fixes for groffer 0.9.0
@@ -1689,7 +1689,7 @@
* TODO:
fix entry `shoop' (not 'shopt').
-2002-06-28 Bernd Warken
+2002-06-28 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.9.0
@@ -1720,7 +1720,7 @@
- Internally, map mode `auto' to '' to facilitate tests.
- Fix auto mode sequence to: `ps,x,tty' as was intended.
-2002-06-25 Bernd Warken
+2002-06-25 Bernd Warken <groff-bernd.warken-72@web.de>
* groffer.sh:
Fix `source' mode.
@@ -1728,7 +1728,7 @@
* groffer.man:
Fix some indentations.
-2002-06-23 Bernd Warken
+2002-06-23 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.8
@@ -1847,7 +1847,7 @@
Increase to 4m (we use `sh#' as the prompt).
-2002-05-31 Bernd Warken
+2002-05-31 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.7
@@ -1883,7 +1883,7 @@
- fix TP_header.
-2002-05-28 Bernd Warken
+2002-05-28 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
* release of groffer 0.6
@@ -1977,7 +1977,7 @@
- The filespec parsers gets a function of its own do_manpage().
-2002-01-08 Bernd Warken
+2002-01-08 Bernd Warken <groff-bernd.warken-72@web.de>
* groffer 0.5 (beta) released
@@ -2004,7 +2004,7 @@
- Implement option `--dpi' for setting the resolution for the X
viewer, which had already been documented in earlier versions.
-2002-01-07 Bernd Warken
+2002-01-07 Bernd Warken <groff-bernd.warken-72@web.de>
* groffer 0.4 (beta) released (as groff `contrib')
@@ -2043,7 +2043,7 @@
* groffer.man (OptDef): Add missing backslashes.
Update copyright.
-2001-12-15 Bernd Warken
+2001-12-15 Bernd Warken <groff-bernd.warken-72@web.de>
* groffer 0.3 (alpha) released (still stand-alone package).
@@ -2062,12 +2062,12 @@
* Recognize the following filespecs as man-page parameters:
man:name(section), man:name, name.section, name.
-2001-12-03 Bernd Warken
+2001-12-03 Bernd Warken <groff-bernd.warken-72@web.de>
* Stand-alone package for groffer 0.2 (alpha) created
Files: groffer, groffer.man, Makefile, TODO, ChangeLog
-2001-12-02 Bernd Warken
+2001-12-02 Bernd Warken <groff-bernd.warken-72@web.de>
* groffer 0.2 (alpha) program released.
@@ -2087,7 +2087,7 @@
* Code restructured and comments added.
-2001-11-28 Bernd Warken
+2001-11-28 Bernd Warken <groff-bernd.warken-72@web.de>
***** groffview 0.1 (experimental) and groffview.man released
(predecessor of groffer, shell script)
@@ -2098,14 +2098,14 @@
* development of `groffview' shell script started
-2001-11-28 Bernd Warken
+2001-11-28 Bernd Warken <groff-bernd.warken-72@web.de>
________________________________________________________________
License
Copyright (C) 2001,2002,2003,2004,2005,2006
Free Software Foundation, Inc.
- Written by Bernd Warken
+ Written by Bernd Warken <groff-bernd.warken-72@web.de>.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice and this
diff --git a/contrib/groffer/shell/README_SH b/contrib/groffer/shell/README_SH
index 2def6f7..8047222 100644
--- a/contrib/groffer/shell/README_SH
+++ b/contrib/groffer/shell/README_SH
@@ -62,8 +62,8 @@ function obj_from_output().
Function Definitions in `groffer2.sh'
-Each funtion in groffer2.sh has a description that starts with the
-function name and symbols for its arguments in paranthesis `()'. Each
+Each function in groffer2.sh has a description that starts with the
+function name and symbols for its arguments in parentheses `()'. Each
`<>' construction gives an argument name that just gives a hint on
what the argument is meant to be; these argument names are otherwise
irrelevant. The `>' sign can be followed by another character that
@@ -147,8 +147,8 @@ The `groffer' shell scripts are compatible to both the GNU and the
POSIX shell and utilities. Care was taken to restrict the programming
technics used here in order to achieve POSIX compatibility as far back
as POSIX P1003.2 Draft 11.2 of September 1991. This draft is
-available at http://www.funet.fi/pub/doc/posix/p1003.2/d11.2 in the
-internet.
+available at http://www.funet.fi/pub/doc/posix/p1003.2/d11.2 on the
+Internet.
The POSIX draft does not include `local' variables for functions. So
this concept was replaced by global variables with a prefix that
@@ -156,7 +156,7 @@ differs for each function. The prefix is chosen from the function
name. These quasi-local variables are unset before each return of the
function.
-For shell compatiblity, see also Autobook, chapter 22.
+For shell compatibility, see also Autobook, chapter 22.
The `groffer' scripts were tested under the shells `ash', `bash',
`bash-minimal', `dash', 'ksh', `mksh', `pdksh', 'posh', and `zsh'
@@ -268,11 +268,11 @@ by all shells. The `trap' commands work for the shells `bash',
####### License
-Last update: 5 Jan 2009
+Last update: 7 Feb 2011
-Copyright (C) 2003, 2004, 2005, 2006, 2009
+Copyright (C) 2003-2006, 2009, 2011
Free Software Foundation, Inc.
-Written by Bernd Warken
+Written by Bernd Warken <groff-bernd.warken-72@web.de>
This file is part of `groffer', which is part of `groff'.
diff --git a/contrib/groffer/shell/groffer.man b/contrib/groffer/shell/groffer.man
index dc6ef30..ec0a782 100644
--- a/contrib/groffer/shell/groffer.man
+++ b/contrib/groffer/shell/groffer.man
@@ -9,19 +9,11 @@ groffer \- display groff files and man\~pages on X and tty
.\" Legalese
.\" --------------------------------------------------------------------
.
-.ig
-groffer.1 - man page for groffer (section 1).
-
-Source file position: <groff_source_top>/contrib/groffer/shell/groffer.man
-Installed position: $prefix/share/man/man1/groffer.1
-
-Last update: 2 Jun 2010
-..
.de author
-This file was written by Bernd Warken.
+This file was written by Bernd Warken <groff-bernd.warken-72@web.de>.
..
.de copyleft
-Copyright (C) 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+Copyright (C) 2001, 2002, 2004-2012
Free Software Foundation, Inc.
.
.P
@@ -63,7 +55,7 @@ You can also visit
.\" Setup
.\" --------------------------------------------------------------------
.
-.ds Ellipsis "\&.\|.\|.\""
+.ds Ellipsis "\&.\|.\|.\&\"
.
.\" --------------------------------------------------------------------
.\" Macro definitions
@@ -158,8 +150,7 @@ You can also visit
. ds @indent 2m\"
. el \
. ds @indent \\$1\"
-. TP \\*[@indent]
-. Text \[bu]
+. IP \[bu] \\*[@indent]
. rm @indent
..
@@ -308,8 +299,8 @@ Long options can be abbreviated in several ways.
.RS
.P
.SY
-.OP "-h~~\fR|\fB\~\~--help"
-.OP "-v~~\fR|\fB\~\~--version"
+.OP -h\~\fR|\fB\~--help
+.OP -v\~\fR|\fB\~--version
.YS
.RE
.
@@ -339,8 +330,8 @@ Long options can be abbreviated in several ways.
.OP --tty\-viewer prog
.OP --www
.OP --www\-viewer prog
-.OP --x --X
-.OP --x\-viewer --X\-viewer prog
+.OP --x\~\fR|\fB\~--X
+.OP --x\-viewer\~\fR|\fB\~--X\-viewer prog
.YS
.RE
.
@@ -349,8 +340,10 @@ Long options can be abbreviated in several ways.
.I options related to \%groff
.RS
.P
-.OP -T~\fR|\fB\~--device device
-.OP -Z~\fR|\fB\~--intermediate\-output~\fR|\fB\~--ditroff
+.SY
+.OP -T\~\fR|\fB\~--device device
+.OP -Z\~\fR|\fB\~--intermediate\-output\~\fR|\fB\~--ditroff
+.YS
.P
All further
.B \%groff
@@ -360,16 +353,19 @@ short options are accepted.
.
.TP
.I options for man\~pages
+.RS
+.P
.SY
.OP --apropos
.OP --apropos\-data
.OP --apropos\-devel
.OP --apropos\-progs
.OP --man
-.OP --no-man
-.OP --no-special
+.OP --no\-man
+.OP --no\-special
.OP --whatis
.YS
+.RE
.
.
.TP
@@ -382,14 +378,14 @@ short options are accepted.
.OP --ditroff
.OP --extension suffix
.OP --locale language
-.OP --local-file
-.OP "--location~\fR|\fB\~--where"
+.OP --local\-file
+.OP --location\~\fR|\fB\~--where
.OP --manpath dir1:dir2:\*[Ellipsis]
-.OP --no-location
+.OP --no\-location
.OP --pager program
.OP --sections sec1:sec2:\*[Ellipsis]
.OP --systems sys1,sys2,\*[Ellipsis]
-.OP --troff-device device
+.OP --troff\-device device
.YS
.P
Further long options of \f[CR]GNU\f[]
@@ -403,17 +399,17 @@ are accepted as well.
.RS
.P
.SY
-.OP --bd~\fR|\fB\~--bordercolor pixels
-.OP --bg~\fR|\fB\~--background color
-.OP --bw~\fR|\fB\~--borderwidth pixels
+.OP --bd\~\fR|\fB\~--bordercolor pixels
+.OP --bg\~\fR|\fB\~--background color
+.OP --bw\~\fR|\fB\~--borderwidth pixels
.OP --display X-display
-.OP --fg~\fR|\fB\~--foreground color
-.OP --fn~\fR|\fB\~--ft~\fR|\fB\~--font font_name
+.OP --fg\~\fR|\fB\~--foreground color
+.OP --fn\~\fR|\fB\~--ft\~\fR|\fB\~--font font_name
.OP --geometry size_pos
.OP --resolution value
.OP --rv
.OP --title string
-.OP --xrm X-resource
+.OP --xrm X\-resource
.YS
.RE
.
@@ -579,6 +575,14 @@ If the abbreviation of the argument leads to several resulting options
an error is raised.
.
.
+.P
+These abbreviations are only allowed in the environment variable
+.Env_var \%$GROFFER_OPT ,
+but not in the configuration files.
+.
+In configuration, all long options must be exact.
+.
+.
.\" --------------------------------------------------------------------
.SS "groffer breaking Options"
.\" --------------------------------------------------------------------
@@ -592,13 +596,13 @@ All other arguments are ignored.
.
.
.TP
-.OP -h\fR|\fR--help
-Print a helping information with a short explanation of option sto
+.B -h\~\fR|\fB\~--help
+Print help information with a short explanation of options to
standard output.
.
.
.TP
-.OP -v~\fR|\fB\~--version
+.B -v\~\fR|\fB\~--version
Print version information to standard output.
.
.
@@ -684,7 +688,7 @@ and restart option processing using only the rest of the command line.
.
.
.TP
-.B --default\-modes mode1,mode2,\*[Ellipsis]
+.BI --default\-modes \ mode1,mode2,\*[Ellipsis]
Set the sequence of modes for
.I \%auto\~mode
to the comma separated list given in the argument.
@@ -708,7 +712,7 @@ Equivalent to
.
.
.TP
-.B --dvi\-viewer prog
+.BI --dvi\-viewer \ prog
Choose a viewer program for
.IR \%dvi\~mode .
.
@@ -720,7 +724,7 @@ Known \%\f[CR]X\~Window\f[]
viewers include
.BR \%xdvi (1)
and
-.BR \%dvilx (1)
+.BR \%dvilx (1).
.
In each case, arguments can be provided additionally.
.
@@ -749,7 +753,7 @@ In each case, arguments can be provided additionally.
.
.
.TP
-.BI --mode value
+.BI --mode \ value
.
Set the display mode.
.
@@ -779,7 +783,6 @@ viewer program.
By default, the formatted input is displayed with the
.BR \%xdvi (1)
program.
-.BR --dvi .
.
.
.TP
@@ -884,20 +887,20 @@ But the standard \%\f[CR]X\~Window\f[] tool
can also be chosen with the option
.BR --x\-viewer .
The default resolution is
-.BR 75\~dpi ,
+.BR 75dpi ,
but
-.B 100\~dpi
+.B 100dpi
are also possible.
.
The default
.I groff
device
for the resolution of
-.B 75\~dpi
+.B 75dpi
is
.BR X75\-12 ,
for
-.B 100\~dpi
+.B 100dpi
it is
.BR X100 .
.
@@ -906,9 +909,9 @@ The corresponding
for the actual device is generated and the result is displayed.
.
For a resolution of
-.BR 100\~dpi ,
+.BR 100dpi ,
the default width of the geometry of the display program is chosen to
-.BR 850\~dpi .
+.BR 850dpi .
.
.
.TP
@@ -956,7 +959,7 @@ Equivalent to
.
.
.TP
-.B --pdf\-viewer prog
+.BI --pdf\-viewer \ prog
Choose a viewer program for
.IR \%pdf\~mode .
.
@@ -972,14 +975,14 @@ Equivalent to
.
.
.TP
-.B --ps\-viewer prog
+.BI --ps\-viewer \ prog
Choose a viewer program for
.IR \%ps\~mode .
.
This can be a file name or a program to be searched in
.Env_var $PATH .
.
-Common Postscript viewers inlude
+Common Postscript viewers include
.BR \%gv (1),
.BR \%ghostview (1),
and
@@ -990,7 +993,7 @@ In each case, arguments can be provided additionally.
.
.TP
.B --source
-Equivalent
+Equivalent to
.BR --mode=source .
.
.
@@ -1015,15 +1018,15 @@ Equivalent to
.
.
.TP
-.B --tty\-viewer prog
+.BI --tty\-viewer \ prog
Choose a text pager for mode
.IR tty .
The standard pager is
.BR less (1).
-This option is eqivalent to
+This option is equivalent to
.I man
option
-.BR --pager=prog .
+.BR --pager=\fIprog\fP .
The option argument can be a file name or a program to be searched in
.Env_var $PATH ;
arguments can be provided additionally.
@@ -1036,19 +1039,19 @@ Equivalent to
.
.
.TP
-.B --www\-viewer prog
+.BI --www\-viewer \ prog
Equivalent to
-.B --html\-viewer .
+.BR --html\-viewer .
.
.
.TP
-.B --X~\fR|\fB\~--x
+.B --X\~\fR|\fB\~--x
Equivalent to
.BR --mode=x .
.
.
.TP
-.B --X\-viewer -- x\-viewer prog
+.BI --X\-viewer\~\fR|\fB\~--x\-viewer \ prog
Choose a viewer program for
.IR \%x\~mode .
Suitable viewer programs are
@@ -1111,7 +1114,7 @@ option
.B -Z
.B \%groffer
was designed to be switched into
-.I \%groff\~mode ;
+.IR \%groff\~mode ;
the
.I \%groffer
viewing features are disabled there.
@@ -1133,7 +1136,7 @@ sequences in
.
.
.TP
-.BI --m file
+.BI --m \ file
Add
.I \%file
as a
@@ -1144,7 +1147,7 @@ This is useful in case it cannot be recognized automatically.
.
.
.TP
-.BI --P opt_or_arg
+.BI --P \ opt_or_arg
Send the argument
.I \%opt_or_arg
as an option or option argument to the actual
@@ -1153,7 +1156,7 @@ postprocessor.
.
.
.TP
-.B --T \fIdevname\fR ~\fR|\fB\~ --device \fIdevname\fR
+.B --T \fIdevname\fR\~\fR|\fB\~--device \fIdevname\fR
.
This option determines
.BR \%groff 's
@@ -1214,7 +1217,7 @@ device for a better display.
.
.
.TP
-.B -Z~\fR|\fB\~--intermediate-output~\fR|\fB\~--ditroff
+.B -Z\~\fR|\fB\~--intermediate-output\~\fR|\fB\~--ditroff
Switch into
.I \%groff\~mode
and format the input with the
@@ -1409,7 +1412,7 @@ is first tested whether it is an existing file.
.
.
.TP
-.B --no-man~\fR|\fB\~--local-file
+.B --no-man\~\fR|\fB\~--local-file
Do not check for
.IR \%man\~pages .
.
@@ -1422,10 +1425,10 @@ option.
.TP
.B --no-special
Disable former calls of
-.B --all ,
-.B --apropos* ,
+.BR --all ,
+.BR --apropos* ,
and
-.B --whatis .
+.BR --whatis .
.
.
.\" --------------------------------------------------------------------
@@ -1446,10 +1449,10 @@ so most of them are just ignored.
These ignored
.B man
options are
-.B --catman ,
-.B --troff ,
+.BR --catman ,
+.BR --troff ,
and
-.B --update .
+.BR --update .
.
.
.P
@@ -1479,13 +1482,13 @@ retrieve all suitable documents instead of only one.
.
.
.TP
-.B -7\fR\fB--ascii
+.B -7\~\fR|\fB\~--ascii
In
.IR \%text\~modes ,
display ASCII translation of special characters for critical environment.
.
This is equivalent to
-.BR "groff -mtty_char" ;
+.BR "groff \%-mtty_char" ;
see
.BR groff_tmac (@MAN5EXT@).
.
@@ -1496,11 +1499,11 @@ Produce
.IR "groff intermediate output" .
This is equivalent to
.B \%groffer
-.B -Z .
+.BR -Z .
.
.
.TP
-.BI --extension suffix
+.BI --extension \ suffix
Restrict
.I \%man\~page
search to file names that have
@@ -1516,13 +1519,13 @@ extension is
.
.
.TP
-.BI --locale language
+.BI --locale \ language
.
Set the language for
.IR \%man\~pages .
.
This has the same effect, but overwrites
-.Env_var $LANG
+.Env_var $LANG .
.
.
.TP
@@ -1534,14 +1537,14 @@ Print the location of the retrieved files to standard error.
.B --no-location
Do not display the location of retrieved files; this resets a former
call to
-.B --location .
+.BR --location .
.
This was added by
.BR \%groffer .
.
.
.TP
-.BI --manpath "'dir1:dir2:\*[Ellipsis]'"
+.BI --manpath \ 'dir1:dir2:\*[Ellipsis]'
Use the specified search path for retrieving
.I \%man\~pages
instead of the program defaults.
@@ -1558,11 +1561,11 @@ Set the pager program in
default is
.BR \%less .
This is equivalent to
-.B --tty\-viewer .
+.BR --tty\-viewer .
.
.
.TP
-.BI --sections "'sec1:sec2:\*[Ellipsis]'"
+.BI --sections \ sec1:sec2:\*[Ellipsis]
Restrict searching for
.I \%man\~pages
to the given
@@ -1571,7 +1574,7 @@ a colon-separated list.
.
.
.TP
-.BI --systems "'sys1,sys2,\*[Ellipsis]'"
+.BI --systems \ sys1,sys2,\*[Ellipsis]
Search for
.I \%man\~pages
for the given operating systems; the argument
@@ -1581,8 +1584,8 @@ is a comma-separated list.
.
.TP
.B --where
-Eqivalent to
-.B --location .
+Equivalent to
+.BR --location .
.
.
.\" --------------------------------------------------------------------
@@ -1611,7 +1614,7 @@ options, for example,
uses the option
.B --font
for the \%\f[CR]X\~Window\f[] option
-.B -font .
+.BR -font .
.
.
.P
@@ -1622,78 +1625,78 @@ for more details on these options and their arguments.
.
.
.TP
-.BI --background color
+.BI --background \ color
Set the background color of the viewer window.
.
.
.TP
-.BI --bd pixels
+.BI --bd \ pixels
This is equivalent to
-.B --bordercolor .
+.BR --bordercolor .
.
.
.TP
-.BI --bg color
+.BI --bg \ color
This is equivalent to
-.B --background .
+.BR --background .
.
.
.TP
-.B --bw pixels
+.BI --bw \ pixels
This is equivalent to
-.B --borderwidth .
+.BR --borderwidth .
.
.
.TP
-.BI --bordercolor pixels
+.BI --bordercolor \ pixels
Specifies the color of the border surrounding the viewer window.
.
.
.TP
-.BI --borderwidth pixels
+.BI --borderwidth \ pixels
Specifies the width in pixels of the border surrounding the viewer
window.
.
.
.TP
-.BI --display X-display
+.BI --display \ X-display
Set the \%\f[CR]X\~Window\f[] display on which the viewer program
shall be started, see the \%\f[CR]X\~Window\f[] documentation for the
syntax of the argument.
.
.
.TP
-.BI --foreground color
+.BI --foreground \ color
Set the foreground color of the viewer window.
.
.
.TP
-.BI --fg color
+.BI --fg \ color
This is equivalent to
-.B -foreground .
+.BR -foreground .
.
.
.TP
-.B --fn font_name
+.BI --fn \ font_name
This is equivalent to
-.B --font .
+.BR --font .
.
.
.TP
-.BI --font font_name
+.BI --font \ font_name
Set the font used by the viewer window.
.
The argument is an \%\f[CR]X\~Window\f[] font name.
.
.
.TP
-.BI --ft font_name
+.BI --ft \ font_name
This is equivalent to
-.B --font .
+.BR --font .
.
.
.TP
-.BI --geometry size_pos
+.BI --geometry \ size_pos
Set the geometry of the display window, that means its size and its
starting position.
.
@@ -1703,7 +1706,7 @@ for the syntax of the argument.
.
.
.TP
-.BI --resolution value
+.BI --resolution \ value
Set \%\f[CR]X\~Window\f[] resolution in dpi (dots per inch) in some
viewer programs.
.
@@ -1715,7 +1718,7 @@ and
Actually, the default resolution for
.B \%groffer
is set to
-.BR 75\~dpi .
+.BR 75dpi .
The resolution also sets the default device in
.IR "mode x" .
.
@@ -1726,12 +1729,12 @@ Reverse foreground and background color of the viewer window.
.
.
.TP
-.BI --title "'some text'"
+.BI --title "\ 'some text'"
Set the title for the viewer window.
.
.
.TP
-.BI --xrm "'resource'"
+.BI --xrm \ 'resource'
Set \f[CR]\%X\~Window\f[] resource.
.
.
@@ -1740,7 +1743,7 @@ Set \f[CR]\%X\~Window\f[] resource.
.\" --------------------------------------------------------------------
.
.TP
-.B -- debug
+.B --debug
Enable eight debugging informations.
.
The temporary files are kept and not deleted, the name of the
@@ -1793,7 +1796,7 @@ by large amounts.
.TP
.B --debug\-grog
Print the output of all
-.B \&grog
+.B grog
commands.
.
.
@@ -1869,7 +1872,7 @@ Some shells run considerably faster than the standard shell.
.
.
.TP
-.B --V
+.B -V
This is an advanced option for debugging only.
.
Instead of displaying the formatted input, a lot of
@@ -1937,7 +1940,7 @@ arguments is ignored.
.
The \f[CR]GNU\f[] behavior to recognize options even when mixed with
.I \%filespec
-arguments is used througout.
+arguments is used throughout.
.
But, as usual, the double minus argument
.B --
@@ -2051,7 +2054,7 @@ If you want to look up a
called
.B -
use the argument
-.BR "man:\-" .
+.BR man:\- .
.
.
.Topic
@@ -2221,12 +2224,12 @@ You can change this automatic behavior by the option
.
.P
Known viewers for the graphical display modes and their standard
-\%\f[CR]X\~Window\f[] viewer progams are
+\%\f[CR]X\~Window\f[] viewer programs are
.
.Topic
in a PDF viewer
.nh
-.RI ( \%pdf\~mode ),
+.RI ( \%pdf\~mode )
.hy
.
.Topic
@@ -2234,14 +2237,14 @@ in a web browser
.nh
.RI ( html
or
-.IR \%www\~mode ).
+.IR \%www\~mode )
.hy
.RE
.
.Topic
in a Postscript viewer
.nh
-.RI ( \%ps\~mode ),
+.RI ( \%ps\~mode )
.hy
.
.Topic
@@ -2252,19 +2255,19 @@ viewers such as
or
.BR \%xditview (1)
(in
-.IR \%x\~mode ),
+.IR \%x\~mode )
.
.Topic
in a dvi viewer program
.nh
-.RI ( \%dvi\~mode ),
+.RI ( \%dvi\~mode )
.hy
.
.
.P
The
.I \%pdf\~mode
-has a major advantage \[em] it is the only graphical diplay mode that
+has a major advantage \[em] it is the only graphical display mode that
allows to search for text within the viewer; this can be a really
important feature.
.
@@ -2313,7 +2316,7 @@ is chosen for
This can be changed by specifying option
.B -T
or
-.BR --device .
+.BR \%--device .
.
.
.P
@@ -2402,7 +2405,7 @@ short options are supported by
.
.
.\" --------------------------------------------------------------------
-.SH "MAN\~PAGE\~SEARCHING"
+.SH "MAN PAGE SEARCHING"
.\" --------------------------------------------------------------------
.
The default behavior of
@@ -2440,7 +2443,7 @@ error, but processing is continued.
.
.
.\" --------------------------------------------------------------------
-.SS "Search Algoritm"
+.SS "Search Algorithm"
.\" --------------------------------------------------------------------
.
Let us now assume that a
@@ -2613,7 +2616,7 @@ The wanted
can be chosen by several methods.
.
.Topic
-Enviroment variable
+Environment variable
.Env_var $LANG .
.
.Topic
@@ -3120,7 +3123,7 @@ For example, depending on your system,
can be started on the second monitor by the command
.sp
.EX
-\fIsh#\fR DISPLAY=:0.1\~groffer\~ what.ever &
+\fIsh#\fR DISPLAY=:0.1\~groffer\~what.ever &
.EE
.
.
@@ -3173,7 +3176,7 @@ variable to the
program
.sp
.EX
-\fIsh#\fR PAGER=cat\~groffer\~ anything
+\fIsh#\fR PAGER=cat\~groffer\~anything
.EE
.sp
.
@@ -3276,7 +3279,7 @@ If set, this variable contains the directories in which the
trees are stored.
.
This is overridden by option
-.BR --manpath .
+.BR \%--manpath .
.
.
.TP
@@ -3427,10 +3430,11 @@ Some shells run much faster than the standard shell.
.
.P
As an example, consider the following configuration file that can be
--used either in
--.File_name \%/etc/groff/groffer.conf
--or
--.File_name \%~/.groff/groffer.conf .
+used either in
+.File_name \%/etc/groff/groffer.conf
+or
+.File_name \%~/.groff/groffer.conf .
+.
.
.P
.ft CR
@@ -3457,7 +3461,7 @@ date >>~/mygroffer.log
.P
The lines starting with
.B #
-are command lines.
+are just ignored, so they act as command lines.
.
This configuration sets four
.B \%groffer
@@ -3485,7 +3489,7 @@ in all viewers that support this, such as
.
.Topic
Use a resolution of
-.B 100\~dpi
+.B 100dpi
in all viewers that support this, such as
.BR \%gxditview .
.
@@ -3501,11 +3505,11 @@ Force
as the
.I \%x-mode
viewer using the geometry option for setting the width to
-.B 900\~dpi
+.B 900px
and the height to
-.BR 1200\~dpi .
+.BR 1200px .
This geometry is suitable for a resolution of
-.BR 100\~dpi .
+.BR 100dpi .
.
.
.Topic
@@ -3543,10 +3547,11 @@ The following examples, however, show that
.B \%groffer
has much more fancy capabilities.
.
-.
+.sp
.EX
\fIsh#\fR\~groffer\~/usr/local/share/doc/groff/meintro.ms.gz
.EE
+.sp
Decompress, format and display the compressed file
.File_name meintro.ms.gz
in the directory
@@ -3640,7 +3645,7 @@ The quotes around
.nh
.I \[cq]troff(1)\[cq]
.hy
-are necessary because the paranthesis are special shell characters;
+are necessary because the parentheses are special shell characters;
escaping them with a backslash character
.I \[rs](
and
@@ -3651,7 +3656,7 @@ The formatted files are concatenated and displayed in one piece.
.
.sp
.EX
-\fIsh#\fR\~LANG=de\~groffer\~--man\~--www\~--www-viever=galeon\~ls
+\fIsh#\fR\~LANG=de\~groffer\~--man\~--www\~--www-viewer=galeon\~ls
.EE
.sp
Retrieve the German
@@ -3705,7 +3710,7 @@ This is a set of abbreviated arguments, it is determined as
.
.sp
.EX
-\fIsh#\fR\~cat\~file.gz\~|\~groffer\~-Z\~-mfoo"
+\fIsh#\fR\~cat\~file.gz\~|\~groffer\~-Z\~-mfoo
.EE
.sp
.
@@ -3717,12 +3722,12 @@ transported to the
without post-processing
.RB ( groff
option
-.B -Z ),
+.BR -Z ),
using macro package
.I \%foo
.RB ( groff
option
-.B -m ) .
+.BR -m ).
.
.
.sp
@@ -3781,7 +3786,7 @@ Both scripts are compatible with both
\%\f[CR]POSIX\fP compatibility refers to
\%\f[CR]IEEE\~P1003.2/D11.2\fP of September 1991, a very early
version of the \%\f[CR]POSIX\fP standard that is still freely
-available in the internet at
+available on the Internet at
.UR http://\:www.funet.fi/\:pub/\:doc/\:posix/\:p1003.2/\:d11.2/\:all
\%POSIX\~P1003.2\~draft\~11.2
.UE .
@@ -3848,7 +3853,7 @@ option or a combination thereof; for example, the
short option combination
.B -Qmfoo
is equivalent to
-.B -Q\~\-m\~foo .
+.BR -Q\~\-m\~foo .
.
.
.Topic
@@ -3971,13 +3976,6 @@ command line options from the input using this program.
.
.
.TP
-.BR \%@g@chem (@MAN1EXT@)
-Preprocessor of
-.I groff
-that is run automatically.
-.
-.
-.TP
.BR groff_out (@MAN5EXT@)
Documentation on the
.I \%groff intermediate output
@@ -4093,7 +4091,7 @@ or
.TP
.BR \%less (1)
Standard pager program for the
-.I \%tty\~mode .
+.IR \%tty\~mode .
.
.
.P
diff --git a/contrib/groffer/shell/groffer.sh b/contrib/groffer/shell/groffer.sh
index 01f1a14..dc82ad8 100755
--- a/contrib/groffer/shell/groffer.sh
+++ b/contrib/groffer/shell/groffer.sh
@@ -7,7 +7,7 @@
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2009
# Free Software Foundation, Inc.
-# Written by Bernd Warken
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/groffer/shell/groffer2.sh b/contrib/groffer/shell/groffer2.sh
index 1c5c7d8..d76c6bd 100644
--- a/contrib/groffer/shell/groffer2.sh
+++ b/contrib/groffer/shell/groffer2.sh
@@ -10,7 +10,7 @@
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2009
# Free Software Foundation, Inc.
-# Written by Bernd Warken
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/groffer/shell/roff2.sh b/contrib/groffer/shell/roff2.sh
index ac226b4..03db489 100755
--- a/contrib/groffer/shell/roff2.sh
+++ b/contrib/groffer/shell/roff2.sh
@@ -6,7 +6,7 @@
# Installed position: <prefix>/bin/roff2*
# Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-# Written by Bernd Warken
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# Last update: 5 Jan 2009
diff --git a/contrib/groffer/version.sh b/contrib/groffer/version.sh
index 393148c..6b6d156 100644
--- a/contrib/groffer/version.sh
+++ b/contrib/groffer/version.sh
@@ -5,9 +5,9 @@
# Source file position: <groff-source>/contrib/groffer/version.sh
# Installed position: <prefix>/lib/groff/groffer/version.sh
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2009
+# Copyright (C) 2001-2006, 2009, 2011
# Free Software Foundation, Inc.
-# Written by Bernd Warken
+# Written by Bernd Warken <groff-bernd.warken-72@web.de>.
# This file is part of `groffer', which is part of `groff'.
@@ -29,10 +29,10 @@
export _PROGRAM_VERSION;
export _LAST_UPDATE;
-_PROGRAM_VERSION='1.1.1';
-_LAST_UPDATE='03 Jan 2009';
+_PROGRAM_VERSION='1.1.2';
+_LAST_UPDATE='26 Jan 2011';
# this setting of the groff version is only used before make is run,
# otherwise @VERSION@ will set it, see groffer.sh.
export _GROFF_VERSION_PRESET;
-_GROFF_VERSION_PRESET='1.20preset';
+_GROFF_VERSION_PRESET='1.21';
diff --git a/contrib/hdtbl/ChangeLog b/contrib/hdtbl/ChangeLog
index e280f7f..4b54910 100644
--- a/contrib/hdtbl/ChangeLog
+++ b/contrib/hdtbl/ChangeLog
@@ -1,3 +1,36 @@
+2013-02-06 Werner LEMBERG <wl@gnu.org>
+
+ * groff_hdtbl.man: Correct details on loading hdtbl.tmac.
+
+2013-02-04 Werner LEMBERG <wl@gnu.org>
+
+ * groff_hdtbl.man: Revised.
+
+2013-02-03 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * groff_hdtbl.man: Correct and extend this man-page.
+
+2012-09-20 Werner LEMBERG <wl@gnu.org>
+
+ Simplify enviroment handling.
+
+ Suggested by Ivan Shmakov <oneingray@gmail.com>.
+
+ * Makefile.sub (GROFF): Don't use export.
+
+2011-01-17 Werner LEMBERG <wl@gnu.org>
+
+ * examples/color_nested_tables.roff: Fix output.
+
+ Problem reported by Ulrich Sprlein <uqs@spoerlein.net>.
+
+2011-01-17 Ulrich Sprlein <uqs@spoerlein.net>
+
+ Don't make examples depend on bash.
+
+ * examples/common.roff, examples/fonts_n.in, examples/fonts_x.in:
+ s/bash/sh/.
+
2010-02-09 Werner LEMBEARG <wl@gnu.org>
Make example compilation work again if srcdir != builddir.
@@ -268,7 +301,7 @@
* Import of hdtbl 0.91 (with some further modifications). Still
many rough edges.
-Copyright 2006, 2008, 2009, 2010
+Copyright 2006, 2008-2013
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
diff --git a/contrib/hdtbl/Makefile.sub b/contrib/hdtbl/Makefile.sub
index a580b14..f894a8e 100644
--- a/contrib/hdtbl/Makefile.sub
+++ b/contrib/hdtbl/Makefile.sub
@@ -1,4 +1,4 @@
-# Copyright (C) 2006, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2009, 2010, 2012 Free Software Foundation, Inc.
# Written by Werner Lemberg (wl@gnu.org)
#
# This file is part of groff.
@@ -32,11 +32,10 @@ FFLAG=-F$(top_builddir)/font -F$(top_srcdir)/font
TFLAG=-M$(top_builddir)/tmac -M$(top_srcdir)/tmac -M$(srcdir)
PFLAG=-t -p -e -U
-GROFF=GROFF_COMMAND_PREFIX=''; \
- export GROFF_COMMAND_PREFIX; \
- GROFF_BIN_PATH=$(GROFF_BIN_PATH); \
- export GROFF_BIN_PATH; \
- $(GROFFBIN) $(FFLAG) $(TFLAG) $(PFLAG)
+GROFF=\
+ GROFF_COMMAND_PREFIX= \
+ GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+ $(GROFFBIN) $(FFLAG) $(TFLAG) $(PFLAG)
MAN7=\
groff_hdtbl.n
diff --git a/contrib/hdtbl/examples/color_nested_tables.roff b/contrib/hdtbl/examples/color_nested_tables.roff
index e16d209..6e6b70d 100644
--- a/contrib/hdtbl/examples/color_nested_tables.roff
+++ b/contrib/hdtbl/examples/color_nested_tables.roff
@@ -5,7 +5,7 @@ color_nested_tables.roff
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+Copyright (C) 2005, 2006, 2009-2011 Free Software Foundation, Inc.
written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>.
groff is free software; you can redistribute it and/or modify it under
@@ -35,23 +35,30 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
.nr # 0 1
*****
.PN 39 .random# ".defcolor c\\n[#] rgb \\\\*[#random] " \
-".TBL csp=0 cpd=0 border=1n bc=c\\n[#]" \
-".if \\\\n+#=1 .CPTN val=b Nested Tables with Randomly Colored Border" \
-.TR .TD
+ ".TBL csp=0 cpd=0 border=1n bc=c\\n[#]" \
+ ".if \\\\n+#=1 .CPTN val=b Nested Tables with Randomly Colored Border" \
+ .TR .TD
.PN 39 .ETB
.PN 15 Text after first table.
+.
.time
+.
+.bp
+.
.time start
+.
.PN 15 Text before second table.
*****
.nr # 0 1
.PN 39 .random# ".defcolor c\\n[#] rgb \\\\*[#random] " \
-".TBL csp=0 cpd=1n border= bgc=c\\n[#]" \
-".if \\\\n+#=1 .CPTN val=b Nested Tables with Randomly Colored Background" \
-.TR .TD
+ ".TBL csp=0 cpd=1n border= bgc=c\\n[#]" \
+ ".if \\\\n+#=1 .CPTN val=b Nested Tables with Randomly Colored Background" \
+ .TR .TD
.PN 39 .ETB
.PN 25 Text after second table.
+.
.time
+.
.\" 466MHz Celeron CPU, 384MB RAM
.\" WindowsXP/cygwin groff18.1: 9/9s
.\" WindowsXP/cygwin groff19.2: 14/14s
diff --git a/contrib/hdtbl/examples/common.roff b/contrib/hdtbl/examples/common.roff
index c4857d3..392e4a2 100644
--- a/contrib/hdtbl/examples/common.roff
+++ b/contrib/hdtbl/examples/common.roff
@@ -65,7 +65,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
.\" ** for example "Sun Dec 5 22:27:57 2004" **
.\" ******************************************************************
.de date
-. pso bash -c "echo -n .ds *date\ ;date"
+. pso sh -c "echo -n .ds *date\ ;date"
. tm \\*[*date] ***
..
.
@@ -83,9 +83,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
. ds * \\$1\"
. substring * 0 0
. ie "\\*[*]"s" \
-. pso bash -c "echo -n .nr *time 0+;date +%s"
+. pso sh -c "echo -n .nr *time 0+;date +%s"
. el \{\
-. pso bash -c "echo -n .nr *time -;date +%s"
+. pso sh -c "echo -n .nr *time -;date +%s"
. nr *time 0-\\n[*time]
. tm elapsed time: \\n[*time] seconds
. \}
diff --git a/contrib/hdtbl/examples/fonts_n.in b/contrib/hdtbl/examples/fonts_n.in
index 709ffb2..c662588 100644
--- a/contrib/hdtbl/examples/fonts_n.in
+++ b/contrib/hdtbl/examples/fonts_n.in
@@ -50,7 +50,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
. el \
. ds *args \\n[.fn]
.
-. pso bash -c \
+. pso sh -c \
"echo -n .ds *f\ ; \
ls \\*[fontpath]/dev\*[.T] \
| tr '[:cntrl:]' ' '"
diff --git a/contrib/hdtbl/examples/fonts_x.in b/contrib/hdtbl/examples/fonts_x.in
index 77b5ac3..639a822 100644
--- a/contrib/hdtbl/examples/fonts_x.in
+++ b/contrib/hdtbl/examples/fonts_x.in
@@ -50,7 +50,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
. el \
. ds *args \\n[.fn]
.
-. pso bash -c \
+. pso sh -c \
"echo -n .ds *f\ ; \
ls \\*[fontpath]/dev\*[.T] \
| tr '[:cntrl:]' ' '"
diff --git a/contrib/hdtbl/groff_hdtbl.man b/contrib/hdtbl/groff_hdtbl.man
index 2d553bc..46776c5 100644
--- a/contrib/hdtbl/groff_hdtbl.man
+++ b/contrib/hdtbl/groff_hdtbl.man
@@ -1,5 +1,5 @@
.ig
-Copyright (C) 2005, 2006, 2008, 2009, 2010
+Copyright (C) 2005, 2006, 2008, 2009, 2010, 2013
Free Software Foundation, Inc.
Written by Joachim Walsdorff <Joachim.Walsdorff@urz.uni-heidelberg.de>
@@ -202,28 +202,108 @@ will be easily converted to HTML; this is not implemented yet.
.
.SH USAGE
.
-The simplest well-formed table consists of just single calls to the four
-base table macros in the right order.
+In this and the next section, we present examples to help users
+understand the basic workflow of
+.BR hdtbl .
+.
+First of all, you must load the
+.I hdtbl.tmac
+file.
+.
+As with nearly all other groff macro packages, there are two possibilities
+to do so:
+.
+Either add the line
+.
+.PP
+.nf
+.nh
+.RS
+.CR .mso hdtbl.tmac
+.fi
+.hy
+.RE
+.
+.PP
+to your
+.I roff
+file before using any macros of the
+.B hdtbl
+package, or add the option
+.
+.PP
+.nf
+.nh
+.RS
+.CR -m hdtbl
+.fi
+.hy
+.RE
+.
+.PP
+to the command line of groff (before the document file which contains
+.B hdtbl
+macros).
+.
+Then you can include on or more tables in your document, where each one
+must be started and ended with the
+.CR .TBL
+and
+.CR .ETB
+macros, respectively.
+.
+.PP
+In this man page, we approximate the result of each example in the
+.I tty
+format to be as generic as possible since
+.B hdtbl
+currently only supports the PS and PDF output devices.
+.
+.PP
+The simplest well-formed table consists of just single calls to the
+four base table macros in the right order.
.
Here we construct a table with only one cell.
.
.PP
.RS
.nf
+.nh
.CR .TBL
.CR .TR
.CR .TD
.CI contents of the table cell
.CR .ETB
.fi
+.hy
.RE
.
.PP
+A
+.I tty
+representation is
+.
+.PP
+.nf
+.nh
+.RS
++------------------------------------------------------+
+| contents-of-the-table-cell |
++------------------------------------------------------+
+.RE
+.hy
+.fi
+.
+.PP
Equivalent to the above is the following notation.
.
.PP
.RS
-.CRI ".TBL .TR .TD " "contents of the table cell" " .ETB"
+.nh
+.nf
+.CRI ".TBL .TR .TD \[dq]" "contents of the table cell" "\[dq] .ETB"
+.fi
+.hy
.RE
.
.PP
@@ -244,12 +324,32 @@ be written as
.PP
.RS
.nf
+.nh
.CR ".TBL cols=2"
.CR ". TR .TD 1*1 .TD 1*2"
.CR ". TR .TD 2*1 .TD 2*2"
.CR ".ETB"
.fi
+.hy
+.RE
+.
+.PP
+A
+.I tty
+representation is
+.
+.PP
+.nf
+.nh
+.RS
++--------------------------+---------------------------+
+| 1*1 | 1*2 |
++--------------------------+---------------------------+
+| 2*1 | 2*2 |
++--------------------------+---------------------------+
.RE
+.hy
+.fi
.
.PP
Here we see a difference to HTML tables: The number of columns must be
@@ -275,6 +375,7 @@ Note, however, that this table
.PP
.RS
.nf
+.nh
.CR ".TBL"
.CR ". TR"
.CR ". TD"
@@ -290,6 +391,7 @@ Note, however, that this table
.CR ". ETB"
.CR ".ETB"
.fi
+.hy
.RE
.
.PP
@@ -298,6 +400,7 @@ and this table
.PP
.RS
.nf
+.nh
.CR ".TBL cols=2"
.CR ". TR"
.CR ". TD colspan=2"
@@ -309,10 +412,47 @@ and this table
.CR ". nop 2*2"
.CR ".ETB"
.fi
+.hy
.RE
.
.PP
-are similar but not identical.
+are similar but not identical (the use of
+.CR .nop
+is purely cosmetic to get proper indentation).
+.
+.PP
+The first table looks like
+.
+.PP
+.nf
+.nh
+.RS
++------------------------------------------------------+
+| 1*1 1*2 |
++------------------------------------------------------+
+| |
+| 2*1 2*2 |
+| |
++------------------------------------------------------+
+.RE
+.hy
+.fi
+.
+.PP
+and the second one like
+.
+.PP
+.nf
+.nh
+.RS
++------------------------------------------------------+
+| 1*1 1*2 |
++---------------------------+--------------------------+
+| 2*1 | 2*2 |
++---------------------------+--------------------------+
+.RE
+.hy
+.fi
.
.PP
Here the latter table in a more compact form.
@@ -320,14 +460,17 @@ Here the latter table in a more compact form.
.PP
.RS
.nf
+.nh
.CR ".TBL cols=2 .TR \[dq].TD colspan=2\[dq] 1*1 1*2"
.CR ". TR .TD 2*1 .TD 2*2 .ETB"
.fi
+.hy
.RE
.
.PP
-If a macro has one or more arguments, and it is not starting a line, it must
-be enclosed in double quotes.
+If a macro has one or more arguments (see below), and it is not starting a
+line, everything belonging to this macro including the macro itself must be
+enclosed in double quotes.
.
.
.SH MACROS AND ARGUMENTS
@@ -625,11 +768,89 @@ and causes incorrect results.
.
.RS
.IP
+.nh
.nf
.CR ".TR .TD 1*1 \[dq].TD 1*2 rowspan=2\[dq] .TD 1*3"
.CR ".TR \[dq].TD 2*1 colspan=2\[dq] .TD 2*3"
.fi
+.hy
+.RE
+.
+.PP
+A working example for headers and cells with
+.B colspan
+is
+.
+.PP
+.RS
+.nf
+.nh
+.CR .TBL cols=3
+.CR ". TR" \[dq].TH colspan=2\[dq] header1+2 .TH header3
+.CR ". TR" .TD 1*1 .TD 1*2 .TD 1*3
+.CR ". TR" .TD 2*1 \[dq].TD colspan=2\[dq] 2*2+3
+.CR .ETB
+.fi
+.hy
+.RE
+.
+.PP
+This looks like
+.
+.PP
+.RS
+.nf
+.nh
++------------------------------+---------------+
+| header1+2 | header3 |
++--------------+---------------+---------------+
+| 1*1 | 1*2 | 1*3 |
++--------------+---------------+---------------+
+| 2*1 | 2*2+3 |
++--------------+-------------------------------+
+.RE
+.hy
+.fi
+.
+.PP
+A working example with
+.B rowspan
+is
+.
+.PP
+.RS
+.nf
+.nh
+.CR .TBL cols=3
+.CR ". TR"
+.CR ". TD" 1*1
+.CR ". TD" rowspan=2 1+2*2
+.CR ". TD" 1*3
+.CR .
+.CR ". TR"
+.CR ". TD" 2*1
+.CR ". TD" 2*3
+.CR .ETB
+.fi
+.hy
+.RE
+.
+.PP
+which looks like
+.
+.PP
+.RS
+.nf
+.nh
++--------------+---------------+---------------+
+| 1*1 | 1+2*2 | 1*3 |
++--------------+ +---------------+
+| 2*1 | | 2*3 |
++--------------+---------------+---------------+
+.hy
+.fi
.RE
+.
.RE
.RE
.
@@ -956,10 +1177,12 @@ For example:
.PP
.RS
.nf
+.nh
.CR ".am pg@end-text"
.CR ". t*EM"
.CR ".."
.fi
+.hy
.RE
.
.PP
diff --git a/contrib/mm/ChangeLog b/contrib/mm/ChangeLog
index b3efc15..51eb8b9 100644
--- a/contrib/mm/ChangeLog
+++ b/contrib/mm/ChangeLog
@@ -1,3 +1,77 @@
+Sat Nov 17 18:36:56 2012 Anton Shepelev <anton.txt@gmail.com>
+
+ Fixed the format of header numbers in references.
+
+ * m.tmac (hd-mark-trimmed): New string to hold `hd-mark' without
+ spaces.
+ (SETR): Use it.
+
+Sun Aug 14 07:36:29 2011 Anton Shepelev <anton.txt@gmail.com>
+
+ Fix indents in nested static displays.
+
+ * m.tmac (DS, ds@end): Save indent with a stack.
+ See http://lists.gnu.org/archive/html/groff/2011-07/msg00068.html
+ for an example.
+
+Sun Mar 27 09:25:01 2011 Anton Shepelev <anton.txt@gmail.com>
+
+ * m.tmac (misc@tag): Fix last patch.
+
+Sat Mar 19 13:46:50 2011 James Avera <jimav>
+
+ * m.tmac (RD): Don't use `.ie' but `.if'.
+
+Fri Mar 18 09:10:19 2011 Anton Shepelev <anton.txt@gmail.com>
+
+ * m.tmac (misc@tag): Retain temporary indentation.
+
+Sat Feb 5 08:06:39 2011 Anton Shepelev <anton.txt@gmail.com>
+
+ Fix vertical space around displays.
+
+ * m.tmac (ds@end): Use `.SP', not `.sp'.
+
+Fri Jan 28 11:15:29 2011 Werner LEMBERG <wl@gnu.org>
+
+ Handle `refer-mm.tmac' file.
+
+ * refer-mm.tmac: New file.
+ * Makefile.sub (install_data, uninstall_sub): Handle it.
+
+Fri Jan 28 10:56:29 2011 Werner LEMBERG <wl@gnu.org>
+
+ Add `refer' support.
+
+ * m.tmac: Include `refer-mm.tmac'.
+
+Fri Jan 28 10:26:29 2011 Werner LEMBERG <wl@gnu.org>
+
+ Prepare `refer' support.
+
+ * m.tmac (\n[Rpe]): New register to control page eject status of the
+ `RP' macro.
+ (RP): Updated.
+ (ref@start-print): Move the trailing full stop in reference number
+ to...
+ (RS): This macro.
+
+ * groff_mm.man: Document `Rpe' register.
+
+Fri Jan 28 10:05:29 2011 Werner LEMBERG <wl@gnu.org>
+
+ * mmroff.man, groff_mm.man: s/reference/cross reference/ where
+ appropriate.
+
+Wed Jan 5 15:05:47 2011 Werner LEMBERG <wl@gnu.org>
+
+ Fix use of .DEVTAG-* macros.
+ Reported by Anton Shepelev <anton.txt@gmail.com>.
+
+ * m.tmac (misc@tag): Wrapper around .DEVTAG-* to compensate unwanted
+ vertical space.
+ (H): Use it.
+
Mon Dec 27 09:39:20 2010 Werner LEMBERG <wl@gnu.org>
* groff_mm.man: Fix indentation.
@@ -853,7 +927,7 @@ Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
* warnings for unimplemented macros
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
diff --git a/contrib/mm/Makefile.sub b/contrib/mm/Makefile.sub
index bde215b..d0eac3c 100644
--- a/contrib/mm/Makefile.sub
+++ b/contrib/mm/Makefile.sub
@@ -1,4 +1,4 @@
-# Copyright 1991, 1992, 1993, 1999, 2000, 2001, 2006, 2007, 2009
+# Copyright 1991-1993, 1999-2001, 2006, 2007, 2009, 2011
#
# This file is part of groff.
#
@@ -44,6 +44,7 @@ install_data: install_m
test -f $(DESTDIR)$(tmacdir)/mm/$$f \
|| touch $(DESTDIR)$(tmacdir)/mm/$$f; \
done
+ $(INSTALL_DATA) $(srcdir)/refer-mm.tmac $(DESTDIR)$(tmacdir)/refer-mm.tmac
install_m:
-test -d $(DESTDIR)$(tmacdir) \
@@ -82,5 +83,6 @@ uninstall_sub:
-rm -f $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mm.tmac
-rm -f $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mse.tmac
-rm -f $(DESTDIR)$(tmacdir)/$(tmac_m_prefix)mmse.tmac
+ -rm -f $(DESTDIR)$(tmacdir)/refer-mm.tmac
-rmdir $(DESTDIR)$(tmacdir)/mm
-rm -f $(DESTDIR)$(bindir)/mmroff
diff --git a/contrib/mm/groff_mm.man b/contrib/mm/groff_mm.man
index 284a31b..71f6fda 100644
--- a/contrib/mm/groff_mm.man
+++ b/contrib/mm/groff_mm.man
@@ -1,6 +1,6 @@
'\" t
.ig
-Copyright (C) 1989, 2000, 2001, 2002, 2003, 2006, 2007, 2009, 2010
+Copyright (C) 1989, 2000-2003, 2006, 2007, 2009-2011
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -1010,7 +1010,7 @@ and
with the text `chapter' and `,\~page'.
The string
.B Qrf
-contains the text for the reference:
+contains the text for the cross reference:
.
.RS
.IP
@@ -1158,7 +1158,7 @@ and also less than or equal to
.B Hb
or
.B Hs
-are centerered.
+are centered.
.RE
.
.IP
@@ -1229,7 +1229,7 @@ Fourteen number registers named
up to
.B H14
contain the counter for each heading level.
-The values are printed using arabic numerals;
+The values are printed using Arabic numerals;
this can be changed with the macro
.B HM
(see below).
@@ -1474,9 +1474,9 @@ T}
.
.TP
.BI INITR\ filename
-Initialize the refence macros.
-References are written to stderr and are supposed to
-be written to `\fIfilename\fR.qrf'.
+Initialize the cross reference macros.
+Cross references are written to stderr and are supposed to
+be redirected into file `\fIfilename\fR.qrf'.
Requires two passes with groff;
this is handled by a separate program called
.BR mmroff (@MAN1EXT@).
@@ -1484,7 +1484,7 @@ This program exists because
.BR groff (@MAN1EXT@)
by default deactivates the unsafe operations that are required by
.BR INITR .
-The first pass looks for references,
+The first pass looks for cross references,
and the second one includes them.
.B INITR
can be used several times,
@@ -1590,7 +1590,7 @@ is still controlled by
.IR text-indent .
.
.IP
-The mark is left-justified whitin the mark area if
+The mark is left-justified within the mark area if
.I pad
is\~0.
If
@@ -1664,7 +1664,7 @@ Default is\~0.
List-status clear.
Terminates all current active lists down to
.IR list-level ,
-or\~0 if no argmuent is given.
+or\~0 if no argument is given.
This is used by\~\c
.B H
to clear any active list.
@@ -2243,10 +2243,7 @@ whether to eject a page or not.
.TS
tab(@);
l lx.
-0@T{
-The reference page is printed on a separate page.
-This is the default.
-T}
+0@The reference page is printed on a separate page.
1@Do not eject page after the list.
2@Do not eject page before the list.
3@Do not eject page before and after the list.
@@ -2263,6 +2260,11 @@ to\~0 suppresses the line.
The string
.B Rp
contains the reference page title and is set to `REFERENCES' by default.
+The number register
+.B Rpe
+holds the default value for the second argument of
+.BR RP ;
+it is initially set to\~0.
.
.TP
.BI RS\ \fR[\fPstring-name\fR]\fP
@@ -3356,6 +3358,12 @@ T}
Default is\~0.
.
.TP
+.B Rpe
+Set default value for second argument of
+.BR .RP .
+Default is\~0.
+.
+.TP
.B Sectf
A flag controlling `section-figures' numbering style.
A non-zero value enables this.
diff --git a/contrib/mm/m.tmac b/contrib/mm/m.tmac
index 73271c1..df45918 100644
--- a/contrib/mm/m.tmac
+++ b/contrib/mm/m.tmac
@@ -3,12 +3,11 @@
.ds RE \\$2
..
.\"
-.\" $Id: m.tmac,v 2.43 2010/06/24 10:45:57 wl Exp $
-.@revision $Revision: 2.43 $
+.\" $Id: m.tmac,v 2.53 2012/11/17 17:36:56 ant_222 Exp $
+.@revision $Revision: 2.53 $
.ig
-Copyright (C) 1991-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
- 2010
+Copyright (C) 1991-2006, 2009-2011
Free Software Foundation, Inc.
mgm is written by Jrgen Hgg <jh@axis.com>
@@ -140,6 +139,8 @@ Index array!index
.nr Pt 0
.\" Reference title
.ds Rp REFERENCES
+.\" Reference page eject status
+.nr Rpe 0
.\" Display indent
.nr Si 5
.\"
@@ -689,7 +690,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.rd \\$1\t
.br
.di
-.ie !''\\$3' \{\
+.if !''\\$3' \{\
. di misc*rd2
. ds \\$3 "\\*[misc*rd]
. br
@@ -738,6 +739,22 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.ev
.nr @verbose-flag 0
..
+.\" Wrapper to cancel the side effect of .tag + .br generating
+.\" unwanted vertical space.
+.de misc@tag
+.\" retain temporary indentation
+.if !(\\n[.in]-\\n[.i]=0) .nr misc*ti \\n[.in]
+.vpt 0
+.DEVTAG-\\$1 \\$2
+.br
+.if r misc*ti \{
+. ti \\n[misc*ti]u
+. rr misc*ti
+. sp -1
+.\}
+.sp -1
+.vpt 1
+..
.\" ######## module pict #################
.nr pict*width 0
.nr pict*height 0
@@ -986,6 +1003,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\" 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]
.\"
+.ds hd-mark-trimmed \\*[hd*mark]\" save hd-mark w/o spaces for references
.as hd*mark \ \ \" add spaces between mark and heading
.if !\\n[hd*arg1] .ds hd*mark\" no mark for unnumbered
.\"
@@ -1043,7 +1061,8 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\"---------- user macro HY -------------
.\" user macro to reset indents
.if d HY .HY \\n[hd*level] \\n[hd*arg1] "\\$2\\$3"
-.DEVTAG-NH \\n[hd*level] \" HTML: mark beginning of heading
+.\" HTML: mark beginning of heading
+.misc@tag NH \\n[hd*level]
.\"--------------------------------------
.nr hd*mark-size \w@\\*[hd*mark]@
.if (\\n[hd*level]<=\\n[Hc])&\\n[hd*htype] .ce\" center if level<=Hc
@@ -1091,7 +1110,8 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.nr hd*last-pos \\n[nl]
.nr hd*last-hsize \\n[.k]
.nr par@ind-flag 0
-.DEVTAG-EO-H \" HTML: end of heading
+.\" HTML: end of heading
+.misc@tag EO-H
..
.\"--------
.de HM
@@ -2053,7 +2073,8 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\"
.nr ds*old-ll \\n[.l]
.nr ds*old-in \\n[.i]
-.misc@push ds-ll \\n[.l]
+.misc@push ds-in \\n[ds*old-in] \" Saving indent and line length of
+.misc@push ds-ll \\n[ds*old-ll] \" the text outside the display.
.misc@push ds-form \\n[ds*format]
.nr ds*i \\n[.i]
.nr ds*ftmp \\n[.f]
@@ -2076,7 +2097,8 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\" **********
.nr ds*width \\n[dl]
.nr ds*height \\n[dn]
-.misc@pop-nr ds-ll ds*old-ll
+.misc@pop-nr ds-ll ds*old-ll \" Restore indent and
+.misc@pop-nr ds-in ds*old-in \" line length
.misc@pop-nr ds-form ds*format
.\"
.\" **********
@@ -2094,7 +2116,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.nr ds*i \\n[Lsp]
.if r Dsp .nr ds*i \\n[Dsp]
.\"
-.if \\n[Ds] .sp \\n[ds*i]u
+.if \\n[Ds] .SP \\n[ds*i]u \" Space before display
.\" check if pending equation label
.eq@check \\n[ds*need]
'in \\n[ds*old-in]u
@@ -2107,7 +2129,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\" **********
.\"
.ds*div!\\n[ds*snr]
-.if \\n[Ds] .sp \\n[ds*i]u
+.if \\n[Ds] .SP \\n[ds*i]u \" Space after display
.\"
.if \\n[ds*format]=2 'ce 0
.if \\n[ds*format]=4 'rj 0
@@ -2783,6 +2805,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.nr box*ll 0
..
.\"########################### module ref ############################
+.mso refer-mm.tmac
.nr ref*nr 0 1
.aln :R ref*nr
.nr ref*nr-width 5n
@@ -2795,7 +2818,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.if !''\\$1' .ds \\$1 \v'-.4m'\s-3[\\n[ref*nr]]\s0\v'.4m'
.nr ref*flag 1
.am ref*mac
-.ref@start-print \\n[ref*nr]
+.ref@start-print \\n[ref*nr].
\\..
.eo
.am ref*mac RF
@@ -2811,8 +2834,8 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.de ref@start-print
.di ref*div
.in \\n[ref*nr-width]u
-.ti -(\w@\\$1.@u+1n)
-\\$1.
+.ti -(\w@\\$1@u+1n)
+\\$1
.sp -1
..
.de ref@stop-print
@@ -2829,7 +2852,8 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.\"-----------
.de RP
.if !d ref*mac .@error "RP: No references!"
-.nr ref*i 0\\$2
+.ie !''\\$2' .nr ref*i 0\\$2
+.el .nr ref*i \\n[Rpe]
.if \\n[ref*i]<2 .SK
.SP 2
.ref@print-refs
@@ -3100,14 +3124,14 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%]
.if !r qrf*pass .tm "SETR: No .INITR in this file"
.if \\n[Ref] \{\
. ds qrf*name qrf*ref-\\$1
-. if \\n[D]>2 .tm SETR: ref \\*[qrf*name]=\\*[hd*mark],\\n[%]
+. if \\n[D]>2 .tm SETR: ref \\*[qrf*name]=\\*[hd-mark-trimmed],\\n[%]
. \" heading-number
-. ds \\*[qrf*name]-hn \\*[hd*mark]
+. ds \\*[qrf*name]-hn \\*[hd-mark-trimmed]
. \" page-number
. ds \\*[qrf*name]-pn \\n[%]
. \"
. if \\n[Ref] \{\
-. tm .ds \\*[qrf*name]-hn \\*[hd*mark]
+. tm .ds \\*[qrf*name]-hn \\*[hd-mark-trimmed]
. tm .ds \\*[qrf*name]-pn \\n[%]
. if !'\\$2'' .tm .ds \\*[qrf*name]-xx \\$2
. \}
diff --git a/contrib/mm/mmroff.man b/contrib/mm/mmroff.man
index 80b8840..843b7c9 100644
--- a/contrib/mm/mmroff.man
+++ b/contrib/mm/mmroff.man
@@ -1,5 +1,5 @@
.ig
-Copyright (C) 1989, 2001, 2009
+Copyright (C) 1989, 2001, 2009, 2011
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -20,7 +20,7 @@ the original English.
.
.TH MMROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
-mmroff \- reference preprocessor
+mmroff \- cross reference preprocessor
.SH SYNOPSIS
.B mmroff
[
@@ -29,16 +29,17 @@ mmroff \- reference preprocessor
.I groff_arguments
.SH DESCRIPTION
\fBmmroff\fP is a simple preprocessor for \fBgroff\fP, it is
-used for expanding references in \fBm@TMAC_M_PREFIX@m\fP, see
+used for expanding cross references in \fBm@TMAC_M_PREFIX@m\fP, see
\fBgroff_mm(@MAN7EXT@)\fP.
\fBgroff\fP is executed twice, first with \fB-z\fP and \fB-rRef=1\fR
-to collect all references and then to do the real processing
-when the reference file is up to date.
+to collect all cross references and then to do the real processing
+when the cross reference file is up to date.
.TP
\fB\-x\fR
-Just create the reference file. This can be used to refresh
-the reference file, it isn't always needed to have accurate
-references and by using this option \fBgroff\fP will only
+Just create the cross reference file.
+This can be used to refresh the cross reference file,
+it isn't always needed to have accurate
+cross references and by using this option \fBgroff\fP will only
be run once.
.\".SH BUGS
.SH AUTHOR
@@ -63,4 +64,5 @@ Jrgen Hgg, Lund, Sweden <jh@axis.se>.
.
.\" Local Variables:
.\" mode: nroff
+.\" coding: latin-1
.\" End:
diff --git a/contrib/mm/refer-mm.tmac b/contrib/mm/refer-mm.tmac
new file mode 100644
index 0000000..55dac43
--- /dev/null
+++ b/contrib/mm/refer-mm.tmac
@@ -0,0 +1,106 @@
+.\" -*- mode: nroff; coding: iso-latin-1; -*-
+.\"
+.\" refer-mm.tmac
+.\"
+.\" Refer support for mm macros.
+.\"
+.\" Copyright (C) 2011 Free Software Foundation, Inc.
+.\" Written by Werner Lemberg (wl@gnu.org)
+.\"
+.\" This file is part of groff.
+.\"
+.\" groff is free software; you can redistribute it and/or modify it under
+.\" the terms of the GNU General Public License as published by the Free
+.\" Software Foundation, either version 3 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" groff is distributed in the hope that it will be useful, but WITHOUT ANY
+.\" WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+.\" for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program. If not, see <http://www.gnu.org/licenses/>.
+.\"
+.\" Please send comments to groff@gnu.org.
+.
+.
+.als ref*error @warning
+.
+.de ref*text-label-start
+. FS "\\$1"
+..
+.de ref*text-label-end
+. FE
+..
+.
+.de ref*biblio-item-start
+. ref@start-print "\\$1"
+..
+.de ref*biblio-item-start-nolabel
+. ref@start-print \&
+..
+.de ref*biblio-item-end
+. ref@stop-print
+..
+.
+.ds ref*refnum-start \" empty
+.ds ref*refnum-end .\"
+.
+.ds [. \v'-.4m'\s-3[\"
+.ds .] ]\s0\v'.4m'\"
+.
+.ds ref*spec!0 Q A T S V N P I C D O
+.ds ref*spec!1 Q A T J S V N P I C D O
+.ds ref*spec!2 Q A T S V P I C D O
+.ds ref*spec!3 Q A T B E S V P I C D O
+.ds ref*spec!4 Q A T R G P I C D O
+.
+.ds ref*spec!A ", " "
+.ds ref*spec!B """ " " "in \fI" "" "\fP"
+.ds ref*spec!D """ " " "(" ")"
+.ds ref*spec!E ", " " "ed. "
+.ds ref*spec!G """ " " "(" ")"
+.ds ref*spec!J ", " " "\fI" "" "\fP"
+.ds ref*spec!N """ "(" "" ")"
+.ds ref*spec!O ". " "
+.ds ref*spec!P ", " " "p.\~"
+.ds ref*spec!PP ", " " "pp.\~"
+.ds ref*spec!T ", " " "\(lq" "" "\(rq"
+.ds ref*spec!T:0 ", " " "\fI" "" "\fP"
+.ds ref*spec!T:2 ", " " "\fI" "" "\fP"
+.ds ref*spec!V """ " " "\fB" "\fR"
+.ds ref*spec!dflt ", " "
+.
+.\" For the bibliography section, we emulate the .RS/.RF mechanism of mm by
+.\" collecting references (enclosed with .]- and .][) in macro `ref*mac'.
+.\" This macro gets expanded while calling the .RP macro.
+.
+.de ref*][-first-pass
+. ec
+. am ref*mac
+. ds [F "\\*([F\"
+. ][ "\\$1" "\\$2"
+\\..
+..
+.
+.de ref*biblio-start-hook
+. als ref*][-second-pass ][
+. als ][ ref*][-first-pass
+. de ref*item-start-hook
+. eo
+. am ref*mac ][
+\\..
+..
+.
+.de ref*biblio-end-hook
+. als ][ ref*][-second-pass
+. rm ref*item-start-hook
+. als ref*print ref*end-print
+. RP
+. als ref*print ref*normal-print
+..
+.
+.mso refer.tmac
+.
+.\" EOF
diff --git a/contrib/mom/BUGS b/contrib/mom/BUGS
index 2c0b728..591a7bc 100644
--- a/contrib/mom/BUGS
+++ b/contrib/mom/BUGS
@@ -1,4 +1,4 @@
- Copyright 2004, 2005, 2006, 2007, 2008, 2009
+ Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
@@ -20,7 +20,58 @@ Also, please--no html email. That, too, gets nuked.
--Peter Schaffter
-========================================================================
+====================================================================
+
+Version 2.0
+===========
+
+tbl macros .TS/.TE not working unless inside a float.
+---Fixed---
+
+Terminal period after page number(s) in refer items not always
+printing.
+---Fixed---
+
+====================================================================
+
+Version 1.6-a
+===========
+
+Footnotes on last page of columnar docs before a TOC getting printed
+at bottom of last column, not current column.
+--Fixed---
+
+HEADER_RULE OFF turning off headers completely.
+---Fixed---
+
+FINIS depositing a blank final page when invoked too close to the
+bottom margin.
+---Fixed---
+
+Version 1-6
+===========
+
+ENDNOTE_STRING_CAPS not disabling caps when arg given.
+---Fixed---
+
+Superfluous blank line before paragraphs with paraheads.
+---Fixed---
+
+Paraheads causing line numbering to overprint two line numbers.
+---Fixed---
+
+Endless loop when DOC_LEAD_ADJUST is disabled.
+---Fixed---
+
+In the case where the list doesn't fit the page, -mom inserts
+an extra page with one word and a warning about "environment stack
+underflow" and then continues on the following page.
+--Fixed--
+
+PRINTSTYLE TYPEWRITE not respecting TYPEWRITER_FAMILY when DOCTYPE
+is LETTER.
+---Fixed---
+
Version 1.5-d
=============
diff --git a/contrib/mom/ChangeLog b/contrib/mom/ChangeLog
index 844fce6..3040207 100644
--- a/contrib/mom/ChangeLog
+++ b/contrib/mom/ChangeLog
@@ -1,3 +1,52 @@
+* Fri Jan 4 2012
+
+o Makefile.sub (install_data): Create directory for PDF documentation.
+ This is necesssary in case GhostScript is not available, and no other
+ PDF files have been created yet.
+
+* Sun Dec 30 2012
+
+o Makefile.sub (install_data): Fix symlink.
+ Patch from Elias Pipping <pipping@lavabit.com>.
+
+* Thu Sep 20 2012
+
+o Simplify enviroment handling.
+
+* Fri Aug 31 2012
+
+o Version 2.0 release. Changes documented in version-2.html in
+ the html documentation.
+
+o Added new documentation, Producing PDFs with groff and mom.
+
+* Sat Feb 18 2012
+
+o Added choice to have DOCTYPE NAMED <name> underscored or not when
+ PRINTSTYLE TYPEWRITE
+
+o Doc fix to DOCTYPE NAMED underlining entry
+
+* Thu Sep 8 2011
+o Added register #SUBHEAD, analagous to #HEAD, to fix excessive
+ spacing between SUBHEADs and SUBSUBHEADs.
+
+* Sun Feb 20 2011
+
+o Added support for sub-subheads from patch supplied by Petr Man.
+
+* Fri Feb 11 2011
+
+o Moved register #UNADJUSTED_DOC_LEAD to top of TRAPS macro.
+
+* Fri Nov 19 2010
+
+o Added utility macro, SINGE_SPACE, for PRINTSTYLE TYPEWRITE
+
+* Sat Jan 22 2011
+
+o groff_mom.man (FILES): Fix directory locations.
+
* Sun Oct 3 2010
o Complete overhaul of refer macros and documentation
@@ -1368,7 +1417,7 @@ o Added "Next," "Prev" and "Top" links to top and bottom of doc files.
o Fixed some typos in the docs.
-Copyright 2004, 2005, 2006, 2007, 2008, 2009
+Copyright 2004-2012
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
diff --git a/contrib/mom/Makefile.sub b/contrib/mom/Makefile.sub
index 07fbf29..e956346 100644
--- a/contrib/mom/Makefile.sub
+++ b/contrib/mom/Makefile.sub
@@ -1,4 +1,4 @@
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2009
+# Copyright (C) 2002-2006, 2009, 2012-2013
# Free Software Foundation, Inc.
# Written by Werner Lemberg (wl@gnu.org)
#
@@ -20,20 +20,27 @@
# These may be overridden if cross-compiling.
GROFFBIN=$(top_builddir)/src/roff/groff/groff
GROFF_BIN_PATH=`echo $(groff_bin_dirs) | sed -e 's| *|$(SH_SEP)|g'`
+PDFMOMBIN=$(top_builddir)/src/devices/gropdf/pdfmom
groff_bin_dirs=\
$(top_builddir)/src/roff/groff \
$(top_builddir)/src/roff/troff \
- $(top_builddir)/src/devices/grops
+ $(top_builddir)/src/devices/grops \
+ $(top_builddir)/src/devices/gropdf
FFLAG=-F$(top_builddir)/font -F$(top_srcdir)/font
TFLAG=-M$(top_builddir)/tmac -M$(top_srcdir)/tmac -M$(srcdir)
-GROFF=GROFF_COMMAND_PREFIX=''; \
- export GROFF_COMMAND_PREFIX; \
- GROFF_BIN_PATH=$(GROFF_BIN_PATH); \
- export GROFF_BIN_PATH; \
- $(GROFFBIN) $(FFLAG) $(TFLAG)
+GROFF=\
+ GROFF_COMMAND_PREFIX= \
+ GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+ $(GROFFBIN) $(FFLAG) $(TFLAG)
+
+PDFMOM=\
+ GROFF_COMMAND_PREFIX= \
+ GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+ PDFMOM_BIN_PATH="$(top_builddir)/src/devices/gropdf" \
+ $(PDFMOMBIN) $(FFLAG) $(TFLAG)
MAN7=\
groff_mom.n
@@ -67,44 +74,56 @@ HTMLDOCFILES=\
momdoc/tables-of-contents.html \
momdoc/toc.html \
momdoc/typesetting.html \
- momdoc/using.html
+ momdoc/using.html \
+ momdoc/version-2.html
EXAMPLEFILES=\
examples/letter.mom \
+ examples/mom-pdf.mom \
examples/sample_docs.mom \
examples/typesetting.mom \
examples/README.txt \
examples/elvis_syntax \
examples/elvis_syntax.new \
- examples/penguin.ps
+ examples/penguin.ps \
+ examples/penguin.pdf \
+ examples/mom.vim
PROCESSEDEXAMPLEFILES=\
- examples/letter.ps \
- examples/sample_docs.ps \
- examples/typesetting.ps
+ examples/letter.pdf \
+ examples/mom-pdf.pdf \
+ examples/sample_docs.pdf \
+ examples/typesetting.pdf
HTMLDOCFILES_=`echo $(HTMLDOCFILES) | sed 's|momdoc/||g'`
EXAMPLEFILES_=`echo $(EXAMPLEFILES) | sed 's|examples/||g'`
PROCESSEDEXAMPLEFILES_=`echo $(PROCESSEDEXAMPLEFILES) | sed 's|examples/||g'`
+PDFDOCFILE=mom-pdf.pdf
MOSTLYCLEANADD=\
stamp-strip \
penguin.ps \
+ penguin.pdf \
$(PROCESSEDEXAMPLEFILES) \
examples/stamp \
om.tmac-s
-.SUFFIXES: .mom .ps
-.mom.ps:
- $(GROFF) -Tps -mom $< >$@
+#.SUFFIXES: .mom .ps
+#.mom.ps:
+# $(GROFF) -Tps -mom $< >$@
+.SUFFIXES: .mom .pdf
+.mom.pdf:
+ $(PDFMOM) $< >$@
all: stamp-strip $(PROCESSEDEXAMPLEFILES)
-$(PROCESSEDEXAMPLEFILES): penguin.ps examples/stamp
+$(PROCESSEDEXAMPLEFILES): penguin.ps penguin.pdf examples/stamp
penguin.ps:
cp $(srcdir)/examples/penguin.ps .
+penguin.pdf:
+ cp $(srcdir)/examples/penguin.pdf .
examples/stamp:
test -d examples || $(mkinstalldirs) examples
@@ -139,6 +158,12 @@ install_data: stamp-strip $(NORMALFILES) $(HTMLDOCFILES) \
rm -f $(DESTDIR)$(exampledir)/mom/$$f; \
$(INSTALL_DATA) examples/$$f $(DESTDIR)$(exampledir)/mom/$$f; \
done
+ -test -d $(DESTDIR)$(pdfdocdir) \
+ || $(mkinstalldirs) $(DESTDIR)$(pdfdocdir)
+ for f in $(PDFDOCFILE); do \
+ rm -f $(DESTDIR)$(pdfdocdir)/$$f; \
+ ln -s $(exampledir)/mom/$$f $(DESTDIR)$(pdfdocdir)/$$f; \
+ done
stamp-strip: $(STRIPFILES)
for f in $(STRIPFILES); do \
@@ -158,4 +183,7 @@ uninstall_sub:
-for f in $(EXAMPLEFILES_) $(PROCESSEDEXAMPLEFILES_); do \
rm -f $(DESTDIR)$(exampledir)/mom/$$f; \
done
+ -for f in $(PDFDOCFILE); do \
+ rm -f $(DESTDIR)$(pdfdocdir)/$$f; \
+ done
-rmdir $(DESTDIR)$(exampledir)/mom
diff --git a/contrib/mom/NEWS b/contrib/mom/NEWS
index dbbb645..077f8f7 100644
--- a/contrib/mom/NEWS
+++ b/contrib/mom/NEWS
@@ -1,10 +1,57 @@
- Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
+Release 2.0-a
+-------------
+FORCE argument added to FLOAT; immediately breaks to a new page
+to output the float if it does not fit on current the page.
+
+Release 2.0
+-----------
+Full integration with gropdf. Mom's focus now is on the generation
+of PDF output. PDF outlines and PDF links (internal and external)
+fully supported.
+
+New management of nested heading levels via HEADING <level>,
+replacing HEAD, SUBHEAD, SUBSUBHEAD and PARAHEAD.
+
+"NAMED <id>" argument to HEADING <level> creates PDF target at the
+heading.
+
+Use of "oldstyle" headings preserved, allowing the continued use of HEAD,
+SUBHEAD, etc.
+
+PARAHEAD removed; replaced by HEADING <level> PARAHEAD.
+
+New management of head styling.
+
+New management of TOC, mostly transparent to user.
+
+New management of TOC title and entry styling.
+
+Overhaul of TOC default style; greater flexibility in numbering
+entries, improved indenting, improved spacing.
+
+FLOAT macro added.
+
+MN_INIT wrapper re-written such that each argument must be preceded
+by a flag.
+
+New perl script, pdfmom, to facilitate generation of PDF output.
+
+Additional documentation in the form of a PDF manual, which covers
+mom/PDF/groff usage.
+
+====================================================================
+
+Release 1.6-a
+-------------
+Support for sub-subheads added.
+
Release 1.6
-----------
Complete overhaul of refer handling. If you've been using mom and
diff --git a/contrib/mom/TODO b/contrib/mom/TODO
index 41d06e5..5993251 100644
--- a/contrib/mom/TODO
+++ b/contrib/mom/TODO
@@ -1,26 +1,10 @@
- Copyright 2004, 2005, 2006, 2007, 2008, 2009
+ Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
-As of version 1.2, the items on this TODO list will only be dealt
-with if users request they be implemented.
+Version 2.0
-CROSS-REFERENCING
------------------
-
-TOC
----
-Capability of generating a separate file for TOCs, for collating
-and processing with gs/ps2pdf.
-
-NUMBERED HEADS, SUBHEADS and PARAHEADS
---------------------------------------
-Macros to set numbering style (roman, arabic, alpha, etc)?
-
-FOOTNOTES
----------
-In columnar docs, maybe give user the choice of gathering all
-footnotes at the bottom of the last column?
+(nothing yet)
diff --git a/contrib/mom/copyright b/contrib/mom/copyright
index 9906836..8db4da2 100644
--- a/contrib/mom/copyright
+++ b/contrib/mom/copyright
@@ -7,8 +7,8 @@ Ottawa (ON) K1L 6X6
========================================================================
The groff macro file om.tmac and the html documentation pertaining
-to it are copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Peter Schaffter.
+to it are copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+2011, 2012, 2013 Peter Schaffter.
om.tmac is issued under the GNU General Public License, a full copy of
which can be had at
diff --git a/contrib/mom/examples/README.txt b/contrib/mom/examples/README.txt
index b0b68b9..de42717 100644
--- a/contrib/mom/examples/README.txt
+++ b/contrib/mom/examples/README.txt
@@ -1,48 +1,33 @@
- Copyright 2004, 2005, 2006, 2009
+ Copyright 2004, 2005, 2006, 2009, 2010, 2011, 2012, 2013
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
+========================================================================
+
The files in this directory show mom in action.
If you have downloaded and untarrred a version of mom from her
homepage, you'll see that none of the example files come with
-corresponding PostScript (.ps) files, as they do with pre-compiled
+corresponding PDF (.pdf) files, as they do with pre-compiled
versions of groff, or groff built from source.
-I haven't included the PostScript output because I want to
-keep the mom archive as lean as possible. To view the PostScript
-output, process the files with groff and either
-
- a) send the output to a separate file for previewing with a
- PostScript viewer such as gv (ghostview), or
-
- b) to your printer.
-
-Using the file sample_docs.mom as an example, you would
-accomplish a) like this:
-
- groff -mom -Tps sample_docs.mom > sample_docs.ps
- gv sample_docs.ps
-
-Accomplishing b) depends on your printer setup, but a fairly
-standard way to do it would be
-
- groff -mom -Tps sample_docs.mom | lpr
-
- or
+I haven't included the PDF output because I want to keep the mom
+archive as lean as possible. To view the PDF output, process the
+files with pdfmom(1).
- groff -mom -Tps -l sample_docs.mom
-
-Note: I don't recommend previewing with gxditview because it doesn't
-render some of mom's effects properly.
+ pdfmom letter.mom > letter.pdf
+ pdfmom mom-pdf.mom > mom-pdf.pdf
+ pdfmom sample_docs.mom > sample_docs.pdf
+ pdfmom typesetting.mom > typesetting.pdf
The files themselves
--------------------
-All are set up for 8.5x11 inch paper (US letter).
+All are set up for US letter papersize except mom-pdf.mom, which
+uses A4.
***typesetting.mom**
@@ -51,72 +36,53 @@ string tabs, line padding, multi-columns and various indent styles,
as well as some of the refinements and fine-tuning available via
macros and inline escapes.
-Because the file also demonstrates a "cutaround" using a small
-picture (of everybody's favourite mascot, Tux), the PostScript file,
-penguin.ps has been included in the directory.
+Because the file also demonstrates a cutaround using a small picture
+of everybody's favourite mascot, Tux, the PDF file, penguin.pdf has
+been included in the directory.
***sample_docs.mom***
The file, sample_docs.mom, shows examples of three of the document
styles available with the mom's document processing macros, as well
-as demonstrating the use of COLLATE.
+as demonstrating the use of COLLATE. It also shows off some of
+mom's PDF features, including a PDF outline and clickable links in
+the printable Table of Contents.
+
+The last sample, set in 2 columns, demonstrates mom's flexibility
+when it comes to designing documents.
The PRINTSTYLE of this file is TYPESET, to give you an idea of mom's
default behaviour when typesetting a document.
-The last sample, set in 2 columns, shows off mom's flexibility
-when it comes to designing documents.
-
If you'd like to see how mom handles exactly the same file when the
-PRINTSTYLE is TYPEWRITE (i.e. typewritten, double-spaced), simply
-change
-
- .PRINTSTYLE TYPESET
-
-to
-
- .PRINTSTYLE TYPEWRITE
-
-near the top of the file.
+PRINTSTYLE is TYPEWRITE (ie typewritten, double-spaced), simply
+change .PRINTSTYLE TYPESET to .PRINTSTYLE TYPEWRITE near the top of
+the file.
***letter.mom***
This is just the tutorial example from the momdocs, ready for
previewing.
-***elvis_syntax.new***
-
-For those who use the vi clone, elvis, you can paste this file into
-your elvis.syn. Provided your mom documents have the extension
-.mom, they'll come out with colorized syntax highlighting. The
-rules in elvis_syntax aren't exhaustive, but they go a LONG way to
-making mom files more readable.
-
-The file elvis_syntax (for pre-2.2h versions of elvis) is no longer
-being maintained. Users are encouraged to update to elvis 2.2h or
-higher, and to use elvis_syntax.new for mom highlighting.
+***mom-pdf.mom***
-I'll be very happy if someone decides to send me syntax highlighting
-rules for emacs. :)
+The manual, Producing PDFs with mom and groff.
***mom.vim***
-Christian V. J. Brssow has kindly contributed a set of mom syntax
-highlighting rules for use with vim. Copy the file to your
-~/.vim/syntax directory, then, if your vim isn't already set up to
+The vim syntax highlighting rules are based on those provided by
+Christian V. J. Brssow (cvjb@cvjb.de). Copy mom.vim file to your
+~/.vim/syntax directory; then, if your vim isn't already set up to
do so, enable mom syntax highlighting with
- :syntax enable
-
+ :syntax enable
or
+ :syntax on
- :syntax on
-
-Please note: I don't use vim, so I won't be making changes to this
-file myself. Christian Brssow is the maintainer of the ruleset,
-which is available on the Web at
-
- http://www.cvjb.de/comp/vim/mom.vim
+***elvis_syntax.new***
-Contact Christian (cvjb@cvjb.de) if you have any suggestions or
-requests.
+For those who use the vi clone, elvis, you can paste this file into
+your elvis.syn. Provided your mom documents have the extension
+.mom, they'll come out with colorized syntax highlighting. The
+rules in elvis_syntax aren't exhaustive, but they go a long way to
+making mom files more readable.
diff --git a/contrib/mom/examples/elvis_syntax.new b/contrib/mom/examples/elvis_syntax.new
index 66f78d7..e792ffa 100644
--- a/contrib/mom/examples/elvis_syntax.new
+++ b/contrib/mom/examples/elvis_syntax.new
@@ -1,4 +1,4 @@
-" Copyright 2004, 2005, 2006, 2009
+" Copyright 2004, 2005, 2006, 2009, 2010, 2011, 2012
" Free Software Foundation, Inc.
"
" Copying and distribution of this file, with or without modification,
diff --git a/contrib/mom/examples/letter.mom b/contrib/mom/examples/letter.mom
index d9146c2..b9d4c75 100644
--- a/contrib/mom/examples/letter.mom
+++ b/contrib/mom/examples/letter.mom
@@ -1,4 +1,4 @@
-\# Copyright 2004, 2005, 2006, 2009
+\# Copyright 2004, 2005, 2006, 2009, 2010, 2011, 2012, 2013
\# Free Software Foundation, Inc.
\#
\# Copying and distribution of this file, with or without modification,
@@ -10,7 +10,7 @@
.PRINTSTYLE TYPESET
.START
.DATE
-August 25, 2010
+August 25, 2013
.TO
GUILLAUME BARRIRES
Minidoux Corporation
diff --git a/contrib/mom/examples/mom-pdf.mom b/contrib/mom/examples/mom-pdf.mom
new file mode 100644
index 0000000..5a03148
--- /dev/null
+++ b/contrib/mom/examples/mom-pdf.mom
@@ -0,0 +1,594 @@
+.\" Reference macros (metadata)
+.TITLE "Producing PDFs" "with groff and mom"
+.PDF_TITLE "\*[$TITLE]
+.AUTHOR "\v'-.5v'\*[UP 4p]Deri James" \
+ "\v'-.5v'\*[UP 8p]and" \
+ "\v'-.5v'\*[UP 11p]Peter Schaffter"
+.MISC "This file is part of groff." \
+ ".sp .25v" \
+ "groff is free software; you can redistribute it" \
+ "and\*[FU3]/or modify it under the terms of the GNU" \
+ "General Public License as published by the" \
+ "Free Software Foundation, either version 3" \
+ "of the License, or (at your option) any later" \
+ "version." \
+ ".sp .25v" \
+ "You should have received a copy of the GNU" \
+ "General Public License along with this program." \
+ "If not, see:" \
+ ".sp .25v" \
+ ".IL 2P" \
+ ".PDF_WWW_LINK http://www.gnu.org/licenses/" \
+ ".IQ CLEAR"
+.COPYRIGHT "20\*[BU3]1\*[BU2]2 Deri James and Peter Schaffter
+.ATTRIBUTE_STRING "" \" Don't print 'by'
+.PDF_BOOKMARKS_OPEN 2
+.\" Cover and page header
+.COVER TITLE AUTHOR COPYRIGHT MISC
+.HEADER_LEFT "James, Schaffter"
+.\" Page, style, formatting
+.PRINTSTYLE TYPESET
+.PAPER A4
+.L_MARGIN 2.5c
+.R_MARGIN 2.5c
+.B_MARGIN 2.5c
+.\"
+.FAM H
+.FT R
+.PT_SIZE 10.5
+.AUTOLEAD 3
+.PARA_INDENT 0 \" Because we're spacing paragraphs.
+.\"
+.COVER_LEAD +3.5
+.DOCHEADER_LEAD +3.5
+.\" Color for code snippets
+.NEWCOLOUR dark-grey RGB #343434
+.\" Make QUOTE look like CODE
+.QUOTE_FAMILY C
+.QUOTE_FONT B
+.QUOTE_SIZE +1.5
+.QUOTE_COLOR dark-grey
+.QUOTE_INDENT 9p
+.\"
+.CODE_FONT B
+.CODE_SIZE 115
+.CODE_COLOR dark-grey
+.CONDENSE 87
+.\"
+.HEADING_STYLE 1 NUMBER FONT B SIZE +1 BASELINE_ADJUST \n[.v]/5
+.HEADING_STYLE 2 NUMBER FONT I SIZE +.25 BASELINE_ADJUST \n[.v]/5
+.\"
+.FOOTNOTE_SIZE -1
+.\" Character definitions for program names, opts, etc.
+.char \[ghostscript] \*[BD]ghostscript\*[PREV]
+.char \[groff] \*[BD]groff\*[PREV]
+.char \[gropdf] \*[BD]gropdf\*[PREV]
+.char \[grops] \*[BD]grops\*[PREV]
+.char \[man] \*[BD]man\*[PREV]
+.char \[-mom] \*[BD]-mom\*[PREV]
+.char \[mom] \*[BD]mom\*[PREV]
+.char \[-mpdfmark] \*[BD]-mpdfmark\*[PREV]
+.char \[ms] \*[BD]ms\*[PREV]
+.char \[pdfmom] \*[BD]pdfmom\*[PREV]
+.char \[pdfroff] \*[BD]pdfroff\*[PREV]
+.char \[-P-e] \*[BD]-P-e\*[PREV]
+.char \[-P-p<papersize>] \*[BD]-P-p<papersize>\*[PREV]
+.char \[ps2pdf] \*[BD]ps2pdf\*[PREV]
+.char \[psselect] \*[BD]psselect\*[PREV]
+.char \[-T] \*[BD]-T\*[PREV]
+.char \[-Tpdf] \*[BD]-Tpdf\*[PREV]
+.char \[-Tps] \*[BD]-Tps\*[PREV]
+.\" Strings for inline code
+.ds cod "\E*[CODE]\&\E*[COND]
+.ds codx "\E*[CONDX]\E*[CODE off]\&
+.\" Paragraph spacing
+.de PP2
+. ALD .3v
+. PP
+..
+.\" Wrapper around QUOTE
+.de COD
+. QUOTE
+. nop \*[COND]\\$*\*[CONDX]
+. QUOTE OFF
+..
+.\" Note box
+.de BOX-NOTE
+. ie \\n[#NUM_ARGS]=1 .DBX .5 0 \\n[.l]u \\$1
+. el .DBX .5 0 \\$1 \\$2
+. ALD 15p
+. IB 6p
+..
+.\" Table of contents
+.TOC_PADDING 2
+.SPACE_TOC_ITEMS
+.AUTO_RELOCATE_TOC
+.TOC_ENTRY_STYLE 2 FONT I
+.TOC_LEAD 14
+.\"
+.DOCHEADER_ADVANCE 4.5c \" Begin this distance down from top of page
+.\"
+.START
+.\"
+.HEADING 1 NAMED intro "Introduction"
+.PP
+.RW .12
+PDF documents are intended to be "electronic paper,\*[BU6]" and, as
+such, take advantage of the digital medium in ways that PostScript
+documents do not. Chief amongst these are clickable links that
+point to named destinations, either within the documents themselves
+.PDF_LINK internal PREFIX ( SUFFIX ) "internal links"
+or to remote web pages
+.PDF_LINK external PREFIX ( SUFFIX ), "external links"
+and the generation of a clickable document outline that appears in
+the Contents panel of most PDF viewers.
+.PP2
+.RW .01
+Using \[groff] and \[mom] to produce PDF documents results in the
+automatic generation of clickable document outlines (discussed
+below,
+.PDF_LINK outline SUFFIX ), +
+and, if the \*[cod]TOC\*[codx] macro is included in the source file,
+entries in the printable table of contents can be clicked on as well
+when the document is viewed at the screen (see
+.PDF_LINK toc SUFFIX ). +
+.RW 0
+.HEADING 1 NAMED generating "Using groff to generate PDF files"
+.PP
+Groff provides more than one way to generate PDF documents from
+files formatted with the \[mom] macros. One is to call \[groff]
+directly, either with
+.COD "groff [-Tps] -mom -m pdfmark doc.mom | ps2pdf - doc.pdf
+which pipes output from the \[grops] PostScript driver through
+\[ps2pdf], or
+.COD "groff -Tpdf -mom doc.mom > doc.pdf
+which uses the native PDF driver, \[gropdf]. Alternatively, one may
+call the wrapper
+.COD "pdfroff -mom -mpdfmark --no-toc doc.mom > doc.pdf
+A fourth, preferred method is to use
+.PDF_LINK pdfmom SUFFIX , "\[pdfmom]"
+which is strongly recommended since it implements the full range
+of PDF features available in \[mom].
+.COD "pdfmom doc.mom > doc.pdf
+One reason to prefer using the native PDF driver (via \[pdfmom] or
+\[-Tpdf]) is that papersizes set within mom source files (see
+.PDF_WWW_LINK http://www.schaffter.ca/mom/momdoc/typesetting.html#page-setup-intro SUFFIX ) \
+ "paper and page setup macros"
+do not require a corresponding \[-P-p<papersize>] flag on the
+command line.
+.PP2
+There are other minor differences between the methods, discussed
+.PDF_LINK pdf-diff SUFFIX . "here"
+.RW 0
+.HEADING 1 NAMED links "Creating PDF links with mom"
+.PP
+Often, but not always, links in the body of a PDF document point
+to headings elsewhere in the same document. Creating these links
+is a simple process. First, identify the places to link to
+("destinations"), then link to them from any place in the document.
+.NO_SHIM
+.HEADING 2 NAMED naming "Creating destination points at headings"
+.PP
+The first step in creating links to a heading is to give the
+heading a unique destination name. With mom, this is done by
+adding \*[cod]NAMED\|<id>\*[codx] to the HEADING macro, where
+\*[cod]<id>\*[codx] is a unique identifier for the heading. For
+example,
+.PDF_TARGET intro-ex
+.COD "\&.HEADING 1 NAMED intro \[dq]Introduction\[dq]"
+would, in addition to printing the head in the body of the document,
+identify the introduction by the unique id, "intro"\*[BU6]. This
+id, or name, can then be used to create links to the introduction
+from any part of the document.
+.PP2
+Furthermore, \*[cod]NAMED\|<id>\*[codx] stores the text of the
+heading for use later on when linking to it (see
+.PDF_LINK internal SUFFIX ). +
+If headings are being numbered, the heading number is included.
+.HEADING 2 NAMED target "Creating destination points at arbitrary locations"
+.PP
+Any part of a document can be a link destination, not just headings.
+For example, say you create a table that needs to be referred to
+from other parts of the document. You'd identify the location of
+the table by placing
+.COD "\&.PDF_TARGET <id> \[dq]<text>\[dq]"
+just above the table in the source file. As with
+\*[cod]HEADING\*[codx], \*[cod]<id>\*[codx] is any unique name.
+\*[cod]<text>\*[codx] is optional. \*[cod]<id>\*[codx] can now be linked
+to from anywhere in the document.
+.HEADING 2 NAMED internal "Creating internal links"
+.PP
+Internal links are clickable text areas that allow you to jump to
+named destinations within a document. (See
+.PDF_LINK external "here"
+for a description of external links.)
+.PP2
+Internal links are created with the macro \*[cod]PDF_LINK\*[codx],
+which takes the form
+.COD "\&.PDF_LINK <id> [PREFIX <text>] [SUFFIX <text>] \
+\[dq]<hotlink text>\[dq]"
+where \*[cod]<id>\*[codx] is a named destination point elsewhere in
+the document (see
+.PDF_LINK naming +
+and
+.PDF_LINK target SUFFIX ). +
+.PP2
+\*[cod]PREFIX\|<text>\*[codx] and \*[cod]SUFFIX\|<text>\*[codx], both or
+either of which are optional, are printed around the clickable area
+but do not form part of the link itself.
+.PP2
+\*[cod]<hotlink text>\*[codx] is the text that should be clickable,
+identifiable in the PDF document by the colour assigned to links
+(see
+.PDF_LINK colour SUFFIX ). +
+.PDF_TARGET expando
+.PP2
+If the hotlink text ends in \*[cod]\[dq]*\[dq]\*[codx]\*[BU9],
+the asterisk is replaced by the text of the destination
+point, assuming it's a heading. If the hotlink text ends in
+\*[cod]\[dq]+\[dq]\*[codx]\*[BU9], the replacement text is surrounded
+by quotes.
+.PP2
+Using our
+.PDF_LINK intro-ex SUFFIX , "HEADING example"
+.RW .1
+above, the following invocation of \*[cod]PDF_LINK\*[codx] would
+produce a click\%able link to the introduction:
+.COD "\&.PDF_LINK intro PREFIX ( SUFFIX ). \[dq]see: +\[dq]"
+.RW 0
+In the text, the link would look like this:
+.PDF_LINK intro PREFIX ( SUFFIX ). "see: +"
+.HEADING 2 NAMED external "Creating external links"
+.PP
+External links are clickable text areas whose destination is a
+URL. Clicking on them causes a browser window to pop up with the
+destination address.
+.PP2
+The format of the macro to create external links is similar to the
+one for creating internal links links links.
+.COD "\&.PDF_WWW_LINK <url> [PREFIX <text>] [SUFFIX <text>] [\[dq]<hotlink text>\[dq]]"
+\*[cod]<url>\*[codx] is any valid URL, usually a web address;
+\*[cod]PREFIX\|<text>\*[codx] and \*[cod]SUFFIX\|<text>\*[codx] have
+exactly the same meaning.
+.PP2
+.RW .1
+If no hotlink text is given, then \*[cod]<url>\*[codx] is
+used as the text. If hotlink text is given and ends in
+\*[cod]\[dq]*\[dq]\*[codx]\*[BU9], the asterisk is replaced by the
+URL. If it ends in \*[cod]\[dq]+\[dq]\*[codx]\*[BU9], the URL is
+surrounded by quotes. As an example,
+.RW 0
+.COD "\&.PDF_WWW_LINK http://www.schaffter.ca/mom/momdoc/toc.html
+would open mom's online documentation at
+.PDF_WWW_LINK http://www.schaffter.ca/mom/momdoc/toc.html SUFFIX "."
+The same, with \*[cod]\[dq]here\[dq]\*[codx] supplied as
+hotlink text, lets you click
+.PDF_WWW_LINK http://www.schaffter.ca/mom/momdoc/toc.html "here"
+instead.
+.HEADING 2 NAMED colour "Assigning a colour to links"
+.PP
+The colour of links is set with
+.COD "\&.PDF_LINK_COLOR <xcolor> | <newcolor> | <r g b> | <#rrggbb>
+where \*[cod]<xcolor>\*[codx] or \*[cod]<newcolor>\*[codx] are the names
+of colours already initialized with
+.PDF_WWW_LINK http://www.schaffter.ca/mom/momdoc/color.html#xcolor "XCOLOR"
+or
+.PDF_WWW_LINK http://www.schaffter.ca/mom/momdoc/color.html#newcolor SUFFIX . "NEWCOLOR"
+If you prefer to define a new colour (using the RGB colour scheme),
+enter it either as 3 numbers between
+0.0 \*[UP 1p]\[->]\*[DOWN 1p] 1\*[BU4].0
+or as a 6 character hex string. Thus
+.SP .5v
+\*[FWD 6p]\*[cod].PDF_LINK_COLOR #ff0000\*[codx]
+\ \*[SIZE -.5]and\*[SIZE]\ \"
+\*[cod].PDF_LINK_COLOR 1.0 0 0\*[codx]
+.SP .5v
+both lead to mom using
+.PDF_LINK_COLOR 1 0 0
+.PDF_LINK colour red
+.PDF_LINK_COLOR
+links.
+.PP2
+The default colour can be restored by calling
+\*[cod]PDF_LINK_COLOR\*[codx] with no parameter.
+.FLOAT
+.JUSTIFY
+.BOX-NOTE 3P
+\*[BD]Note:\*[PREV]
+The decimal scheme for creating colours must be used if a file is to
+be processed with
+\[oq]\[groff]\~\[-Tps]\~\[-mpdfmark]\[cq],
+\[oq]\[pdfroff]\[cq], or
+\[oq]\[pdfmom]\~\[-Tps]\[cq].
+.IBQ
+.FLOAT off
+.NO_SHIM off
+.HEADING 1 NAMED outline "The PDF Outline"
+.PP
+Most PDF viewers provide a panel that displays a document's outline,
+similar to a table of contents. Clicking on an entry navigates
+directly to the appropriate place in the document.
+.PP2
+Mom generates PDF outlines the same way she populates
+her own table of contents: by intercepting calls to the
+\*[cod]HEADING\*[codx] macro, as well as to the various title
+and chapter macros used in namimg documents, and allocating each a
+hierarchic level.
+.PP2
+Covers, titles/chapters, and the table of contents are all
+assigned to level 1\*[BU5]. Subsequent headings are assigned to
+n\*[UP 1p]+\*[DOWN 1p]\*[BU4]1, where n is the level given to
+\*[cod]HEADING\*[codx].
+.PP2
+.RW .22
+The PDF outline can sensibly recover from skipped or omitted heading
+levels; the printed table of contents cannot. Users are therefore
+advised to use headings in logical order, not for typographic
+effects.
+.RW 0
+.HEADING 2 NAMED open-close "Opening and closing levels
+.PP
+A level is said to be open if one or more levels beneath it is
+visible in the PDF outline. Closed \%levels have at least one level
+beneath them that is not visible unless the closed link is clicked.
+It is common for only the first two levels to be open so the outline
+doesn't look cluttered.
+.PP2
+To establish which levels should be open by default when a document
+loads, use
+.COD "\&.PDF_BOOKMARKS_OPEN n
+where \*[cod]n\*[codx] is a number specifying at which level all
+subsequent ones should be closed.
+.PP2
+If, at any point in the document, you specify
+.COD "\&.PDF_BOOKMARKS_OPEN NO \e\[dq] or any other text argument
+then all subsequent bookmarks will be closed until
+\*[cod]PDF_BOOKMARKS_OPEN\*[codx] opens them again.
+.HEADING 2 NAMED disabling "Suspending/disabling collection of outline entries
+.PP
+Suspending the collection of entries for the PDF outline is
+accomplished with
+.COD "\&.PDF_BOOKMARKS OFF
+Mom's default is to collect entries, so if the command is placed at
+the start of a document, it \%disables entry collection completely.
+Elsewhere, it suspends collection until you re-enable it with
+.COD "\&.PDF_BOOKMARKS \e\[dq] i.e. with no parameter
+.HEADING 2 NAMED pdf:title "The PDF window title"
+.PP
+While not strictly part of the PDF outline, the title of a document
+can be displayed as the document viewer's window title. The macro
+to accomplish this is
+.COD "\&.PDF_TITLE\ \[dq]<window title>\[dq]
+It can take any text, so the viewer window title need not be the
+same as the document's title.
+.FLOAT
+.JUSTIFY
+.BOX-NOTE 4P+8p
+\*[BD]Note:\*[PREV] The macro, \*[cod]DOC_TITLE\*[codx], always
+invokes \*[cod]PDF_TITLE\*[codx]. If this is not what you want, you
+can remove the window title by issuing
+.COD ".PDF_TITLE \[dq]\[dq] \e\[dq] ie. with a blank argument
+.IBQ
+.FLOAT off
+.NO_SHIM
+.HEADING 1 NAMED toc "Tables of Contents"
+.RLD .5v
+.HEADING 2 NAMED toc:gen "Generating a Table of Contents
+.PP
+.RW .1
+To generate a printable Table of Contents for any document, simply
+insert the macro, \*[cod]TOC\*[codx], as the last line of the source
+file. (Formatting of the printable Table of Contents is discussed in
+detail in the
+.PDF_WWW_LINK \
+http://www.schaffter.ca/mom/momdoc/tables-of-contents.html#top \
+SUFFIX ). "mom documentation"
+When the file is processed and loaded in a viewer, entries in the
+Table of Contents will be clickable links.
+.RW 0
+.PP2
+Whichever link colour is active at the end of the document, prior to
+\*[cod]TOC\*[codx], will be used for the \%Table of Contents
+links.
+.HEADING 2 NAMED toc:pos "Positioning the Table of Contents"
+.PP
+If \[groff]'s PostScript device (\[-Tps]) is used to process a mom
+file, the Table of Contents is printed at the end of the document.
+When this is not desirable, the PostScript output from \[groff]
+must be processed with \[psselect] in order to place the TOC in the
+preferred location.
+.PP2
+When using mom and \[groff]'s native pdf device (via \[pdfmom] or
+\[groff] \[-Tpdf]), positioning of the Table of Contents can be done
+within the source file.
+.PP2
+The command to control the placement of the TOC is
+.COD "\&.AUTO_RELOCATE_TOC [<position>]
+where the optional \*[cod]<position>\*[codx] can be one of these
+keywords:
+.LEFT
+.IL 2P
+.SP .25v
+\*[SIZE -.7]TOP\*[FU2]\*[UP .5p]\c
+.FOOTNOTE
+\*[BD]Note:\*[PREV] Documents without a COVER or DOC_COVER require
+the \*[cod]TOP\*[codx] argument.
+.FOOTNOTE off
+\*[IT]\*[SIZE +.2]\
+(ie. at the very start of the document)\*[SIZE -.2]\*[PREV]
+BEFORE_DOCCOVER
+AFTER_DOCCOVER
+BEFORE_COVER
+AFTER_COVER\*[SIZE]
+.SP .25v
+.ILQ
+.JUSTIFY
+It is normally not necessary to supply a keyword, since
+\*[cod]AUTO_RELOCATE_TOC\*[codx] places the TOC after the DOC_COVER,
+if there is one, or the first COVER when no DOC_COVER is present.
+.NO_SHIM off
+In rare instances where it is desirable to place the TOC somewhere
+else in the document, there are two low-level commands,
+.SP .5v
+\*[FWD 6p]\*[cod].TOC_BEFORE_HERE\*[codx]
+\ \*[SIZE -.5]and\*[SIZE]\ \"
+\*[cod].TOC_AFTER_HERE\*[codx]
+.SP .5v
+which place the TOC either before or after the current page.
+.PP2
+These last two commands have a small catch: although the TOC will
+appear where specified, the \%"Contents" entry in the PDF outline,
+which observes a hierarchy of levels, will assign the TOC to
+level\~\*[BU4]1\*[BU4], possibly disrupting the visual ordering of
+levels in the outline.
+.HEADING 1 NAMED simplify "pdfmom: Simplifying PDF output"
+.PP
+As explained in the section
+.PDF_LINK generating SUFFIX , *
+.RW .15
+there are two established methods
+.RW 0
+for creating PDF files with \[groff]: the original method, ie.
+passing the \[-Tps] and \[-mpdfmark] options to \[groff] (or using
+\[pdfroff], which does this for you); or the newer \[-Tpdf], which
+produces PDF files natively.
+.NO_SHIM
+.HEADING 2 NAMED fwd:ref "The problem of forward references"
+.PP
+.EW .2
+Both methods encounter difficulties when dealing with forward
+references; that is, when a link \*[IT]\%earlier\/\*[PREV] in a
+document refers to a destination \*[IT]later\/\*[PREV] in the
+document and the link text terminates
+.EW 0
+with one of the expandos,
+\*[cod]\[dq]*\[dq]\*[codx] or \*[cod]\[dq]+\[dq]\*[codx]
+(explained
+.PDF_LINK expando SUFFIX ). "here"
+Mom doesn't know what text to put in the expando because it has not
+yet been defined. This means that \[groff] must be run multiple
+times to find the unknown text.
+.PP2
+.EW .2
+The program \[pdfroff] exists to handle these multiple runs, but it
+imposes some limitations on the PDF features available with \[mom].
+.EW 0
+.HEADING 2 NAMED pdfmom "pdfmom"
+.PP
+\[pdfmom] performs the same function as \[pdfroff], and is the
+preferred, trouble-free way to generate PDF documents from a mom
+source file. Like \[pdfroff], it is a frontend to \[groff] and
+accepts all the same options (see \[man]\~\[groff]).
+.PP2
+.EW .2
+Called as-is, \[pdfmom] accepts all the same options as \[groff],
+and requires no additional flags. PDF generation is performed by
+\[gropdf], \[groff]'s native PDF driver:
+.EW 0
+.COD "pdfmom doc.mom [groff opts] > doc.pdf
+If a \[-Tps] option is supplied, \[pdfmom] hands control over to
+\[pdfroff], and both \[groff] and \[pdfroff] options may given.
+The resulting PDF is produced from PostScript output fed into
+\[ghostscript].
+.COD "pdfmom -Tps [pdfroff opts [groff opts]] doc.mom > doc.pdf
+For either invocation, it is not necessary to add \[-mom] or
+\[-mpdfmark], as these are implied.
+.PP2
+If Encapsulated PostScript or plain PostScript images have been
+embedded in a document with
+.PDF_WWW_LINK http://www.schaffter.ca/mom/momdoc/images.html#pspic SUFFIX , \
+ "PSPIC"
+the \[-Tps] option must be used. In most other cases, \[pdfmom]
+with no \[-T] flag is preferable.
+.HEADING 2 NAMED papersize "Setting papersize within a source file"
+A significant convenience afforded by using \[pdfmom] (or \[groff]
+with the \[-Tpdf] flag) is that papersizes or page dimensions set
+within mom source files (see
+.PDF_WWW_LINK http://www.schaffter.ca/mom/momdoc/typesetting.html#page-setup-intro \
+ SUFFIX ) "paper and page setup macros"
+do not require a corresponding \[-P-p<papersize>] option on the
+command line. It is even possible to create documents with
+unequal-sized pages.
+.NO_SHIM
+.HEADING 2 NAMED pdf-diff \
+"Differences between pdfmom and pdfroff"
+.PP
+Several features described in this manual are not available when
+using \[pdfmom] with the \[-Tps] option, or when using \[pdfroff] or
+\[groff]\~\[-Tps]\~\[-mpdfmark].
+.SP .25v
+.QUAD LEFT
+.HYPHENATION off
+.IB 16p
+.LIST
+.ITEM
+.PDF_LINK toc:pos "Relocation of the Table of Contents"
+is not supported. The TOC appears at the end of the document;
+\[psselect] must be used to re-order pages.
+.ITEM
+If a link crosses a page boundary, it will stop being a clickable
+hotspot on subsequent pages.
+.ITEM
+When establishing whether PDF outline levels are
+.PDF_LINK open-close SUFFIX , "open or closed"
+only the numerical parameter to \*[cod]PDF_BOOKMARKS_OPEN\*[codx] has
+any effect.
+.ITEM
+.PDF_LINK colour "PDF_LINK_COLOR"
+only accepts colour definitions in decimal notation.
+.LIST OFF
+.IQ
+.HEADING 1 \
+"Comparison of -Tps\*[FU4]/\*[FU2]-mpdfmark with -Tpdf\*[FU4]/\*[FU2]-mom
+.SP .25v
+.IB
+\[-Tps]\*[FU4]/\*[FU2]\[-mpdfmark]
+.LIST
+.SHIFT_LIST 1P+6p
+.ITEM
+does not support all the features described here
+.ITEM
+accepts images and graphics embedded with PSPIC
+.ITEM
+is mature and well-tested code
+.LIST OFF
+.IQ
+.ALD .4v
+.IB
+\[-Tpdf]\*[FU4]/\*[FU2]\[-mom]
+.LIST
+.SHIFT_LIST 1P+6p
+.ITEM
+facilitates embedding fonts directly in the PDF file (if the
+\[-P-e] flag is given on the command line)
+.ITEM
+sets papersize from within the source file, circumventing the need
+for the papersize flag (\[-P-p<papersize>]) on the command line
+.ITEM
+is not compatible with
+.PDF_WWW_LINK \
+ http://www.schaffter.ca/mom/momdoc/docprocessing.html#printstyle \
+ "PRINTSTYLE TYPEWRITE"
+underlining (eg of italics)
+.ITEM
+generally produces larger files; these can be reduced by piping
+the output through \[ps2pdf]\*[B]
+.RLD .5v
+.FLOAT
+.QUAD LEFT
+.BR_AT_LINE_KERN
+.IQ
+.BOX-NOTE (\n[.l]u-6P) 3P
+.EW .3
+\*[BD]Note:\*[PREV] Owing to a known bug, PDF files piped
+through \[ps2pdf] lose some of
+.EW 0
+their metadata, notably the window title set with
+\*[cod]PDF_TITLE\*[codx].
+.FLOAT off
+.ITEM
+is newer code with less testing\c
+.EL
+.LIST OFF
+.IQ CLEAR
+.TOC
diff --git a/contrib/mom/examples/mom.vim b/contrib/mom/examples/mom.vim
index f94533b..c6e43e9 100644
--- a/contrib/mom/examples/mom.vim
+++ b/contrib/mom/examples/mom.vim
@@ -1,4 +1,4 @@
-" Copyright 2004, 2005, 2006, 2009
+" Copyright 2012
" Free Software Foundation, Inc.
"
" Copying and distribution of this file, with or without modification,
@@ -7,7 +7,7 @@
" Vim syntax file
" Language: mom
-" Maintainer: Christian V. J. Brssow <cvjb@cvjb.de>
+" Maintainer: Peter Schaffter (peter@schaffter.ca)
" Last Change: So 06 Mr 2005 17:28:13 CET
" Filenames: *.mom
" URL: http://www.cvjb.de/comp/vim/mom.vim
@@ -33,71 +33,75 @@ syn sync lines=1000
" Characters allowed in keywords
if version >= 600
- setlocal iskeyword=@,#,$,%,48-57,.,@-@,_,192-255
+ setlocal iskeyword=@,#,$,%,48-57,.,@-@,_,\\,{,},192-255
else
- set iskeyword=@,#,$,%,48-57,.,@-@,_,192-255
+ set iskeyword=@,#,$,%,48-57,.,@-@,_,\\,{,},192-255
endif
-" Some special keywords
-syn keyword momTodo contained TODO FIXME
-syn keyword momDefine .de .. .ALIAS .ALIASN
+" mom/groff macros and requests (the initial dot or single-quote)
+"
+" Highlighting carries through to EOL; macro names, requests and
+" arguments are contained
+syn match startRequest /^\s*\(\.\|'\)\s*.*$/ contains=momMacro,groffCommentLine,groffRequest,momRegister,groffNoLineBreak,momInteger,groffUnit,momString,momSpecialParam,groffDelimiter,groffRegister,groffPreprocessor,groffBraces
+
+" mom macros
+syn region momMacro start=/^\s*\(\.\|'\)\s*\zs[A-Z0-9_(){}\[\]]\+/ end=/\s\+\|$/
+
+" mom registers and strings
+syn match momRegister /\(\$\|#\)[A-Za-z][_0-9A-Za-z]*/ contains=momRegisterStart
+
+syn match momRegisterStart /#\|\$/ contained
-" Preprocessor keywords
-syn keyword momPreprocessor .EQ .EN .GS .GE .GF .PS .PE .R1 .R2 .TS .TE .TH
-syn keyword momPreprocessor .G1 .G2 .IS .IE .cstart .cend
+" mom comment region
+syn region momCommentRegion matchgroup=startRequest start='\<\.\(COMMENT\)\|\(SILENT\)\>' end='\<\.\(COMMENT\s\+OFF\)\|\(SILENT\s\+OFF\)\>' skip='$'
-" Number Registers
-syn match momNumberReg '\.#[A-Za-z][_0-9A-Za-z]*'
+" groff requests
+syn match groffRequest /^\s*\(\.\|'\)\s*\zs[a-z0-9]\+/
-" String Registers
-syn match momStringReg '\.\$[A-Za-z][_0-9A-Za-z]*'
+" groff comment region
+syn region groffCommentLine start='\(\\!\)\|\(\\"\)\|\(\\#\)' end='$' contains=momTodo
+syn region groffCommentRegion start="^\s*\.\s*ig" matchgroup=startRequest end="^\.\.$" contains=startRequest
-" Strings
-syn region momString start='"' end='"' contains=momNoLineBreak,momGreek,momInteger,momFloatEN,momFloatDE,momBracketRegion,momBracketError,momSpecialMove
+" Preprocessor requests
+syn match groffPreprocessor /[^A-Z]\zs\(EQ\s*$\|EN\s*$\|GS\s*$\|GE\s*$\|GF\s*$\|PS\s*$\|PE\s*$\|R1\s*$\|R2\s*$\|TS\s*$\|TE\s*$\|TH\s*$\)/ contained
+syn match groffPreprocessor /[^A-Z]\zs\(G1\s*$\|G2\s*$\|IS\s*$\|IE\s*$\|cstart\s*$\|cend\s*$\)/ contained
+
+" Preprocessor requests for refer
+syn match groffPreprocessor /\(\[\s*$\|\]\s*$\)/ contained
+
+" Quoted strings
+syn region momString matchgroup=startRequest start='"\zs' end='"\|$' contains=groffNoLineBreak,groffGreek,groffSpecialChar,momInteger,momFloatEN,momFloatDE,momBracketRegion,momBracketError,momSpecialMove contained
" Special characters
-syn match momSpecialChar '\\([-+A-Za-z0-9*<>=~!]\+'
+syn match groffSpecialChar '\\\((\|\[\)[-+A-Za-z0-9*<>=~!\/]\+\]*'
" Greek symbols
-syn match momGreek '\\(\*[A-Za-z]\+'
+syn match groffGreek '\\(\*[A-Za-z]\+'
" Hyphenation marks
-syn match momHyphenation '\\%'
+syn match groffHyphenation '\\%'
" Masking of line breaks
-syn match momNoLineBreak '\\\s*$'
-
-" Numbers (with optional units)
-syn match momInteger '[-+]\=[0-9]\+[iPpv]\='
-syn match momFloatEN '[-+]\=[0-9]*\.[0-9]\+[iPpv]\='
-syn match momFloatDE '[-+]\=[0-9]\+,[0-9]\+'
+syn match groffNoLineBreak /\\\s*$/ contains=groffBraces
-" Mom Macros
-syn match momKeyword '\(^\|\s\+\)\.[A-Za-z][_0-9A-Za-z]*'
-syn match momKeywordParam '\(^\|\s\+\)\.[A-Za-z][_0-9A-Za-z]*\s\+[^-\\"]\+' contains=momInteger,momFloatEN,momString,momSpecialParam
-syn keyword momSpecialParam contained ON OFF T H C R I B L J N QUAD CLEAR NAMED DRAFT FINAL DEFAULT TYPESET TYPEWRITE CHAPTER BLOCK
+" groff number and string register delimiters
+syn region groffDelimiter start=/\\*\\\(n+*\|\*\)\((\|\[\)\</ end=/\(\s\|\]\|$\)/ contains=momRegister,groffRegister,groffOperators
-" Brackets
-syn match momBrackets '[[]]'
-syn match momBracketError '\]'
-syn region momBracketRegion transparent matchgroup=Delimiter start='\[' matchgroup=Delimiter end='\]' contains=ALLBUT,momBracketError
+" groff registers
+syn match groffRegister /\\\((\|\[\)\zs\.*[a-z]\+/
-" Special movements, e.g. \*[BU<#>] or \*[BP<#>]
-syn region momSpecialMove matchgroup=Delimiter start='\\\*\[' matchgroup=Delimiter end='\]' contains=ALLBUT,momBracketError
+" groff operators
+syn match groffOperators /\(+\|-\|\/\|\*[^[]\)/ contained
-" Quotes
-syn region momQuote matchgroup=momKeyword start='\<\.QUOTE\>' matchgroup=momKeyword end='\<\.QUOTE\s\+OFF\>' skip='$' contains=ALL
-syn region momBlockQuote matchgroup=momKeyword start='\<\.BLOCKQUOTE\>' matchgroup=momKeyword end='\<\.BLOCKQUOTE\s\+OFF\>' skip='$' contains=ALL
-syn keyword momBreakQuote .BREAK_QUOTE'
+" Units (of measure)
+syn match groffUnit '[-+]\=\([0-9]\|]\)\+\zs[icPpvusfz]\=' contained
-" Footnotes
-syn region momFootnote matchgroup=momKeyword start='\<\.FOOTNOTE\>' matchgroup=momKeyword end='\<\.FOOTNOTE\s\+OFF\>' skip='$' contains=ALL
+" Braces
+syn match groffBraces /\(\\{\|\\}\)/ contained
-" Comments
-syn region momCommentLine start='\(\\!\)\|\(\\"\)\|\(\\#\)' end='$' contains=momTodo
-syn region momCommentRegion matchgroup=momKeyword start='\<\.\(COMMENT\)\|\(SILENT\)\>' matchgroup=momKeyword end='\<\.\(COMMENT\s\+OFF\)\|\(SILENT\s\+OFF\)\>' skip='$'
+" Error
+syn match groffError '\\\[ \+[[:print:]]\+ \+[[:print:]]\+\]'
-" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_mom_syn_inits")
@@ -108,40 +112,27 @@ if version >= 508 || !exists("did_mom_syn_inits")
command -nargs=+ HiLink hi def link <args>
endif
- " The default methods for highlighting. Can be overrriden later.
- HiLink momTodo Todo
- HiLink momDefine Define
- HiLink momPreprocessor PreProc
- HiLink momNumberReg Special
- HiLink momStringReg Special
- HiLink momCommentLine Comment
- HiLink momCommentRegion Comment
- HiLink momInteger Number
- HiLink momFloatEN Number
- HiLink momFloatDE Number
- HiLink momString String
- HiLink momHyphenation Tag
- HiLink momNoLineBreak Special
- HiLink momKeyword Keyword
- HiLink momSpecialParam Special
- HiLink momKeywordParam Keyword
-
- HiLink momBracketError Error
- HiLink momBrackets Delimiter
-
- hi momNormal term=none cterm=none gui=none
- hi momItalic term=italic cterm=italic gui=italic
- hi momBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic
- HiLink momGreek momBoldItalic
- HiLink momSpecialChar momItalic
- HiLink momSpecialMove momBoldItalic
-
- HiLink momQuote momBoldItalic
- HiLink momBlockQuote momBoldItalic
- HiLink momBreakQuote momNormal
-
- HiLink momFootnote momItalic
-
+HiLink groffError Error
+HiLink groffBraces darkmagenta
+HiLink groffCommentLine darkcyan
+HiLink groffCommentRegion cyan
+HiLink groffDelimiter cyan
+HiLink groffGreek cyan
+HiLink groffHyphenation cyan
+HiLink groffNoLineBreak cyan
+HiLink groffOperators white
+HiLink groffPreprocessor brown
+HiLink groffRegister darkgreen
+HiLink groffRequest magenta
+HiLink groffSpecialChar darkcyan
+HiLink groffUnit brown
+HiLink momCommentRegion darkcyan
+HiLink momMacro red
+HiLink momRegister green
+HiLink momRegisterStart magenta
+HiLink momSpecialParam red
+HiLink momString white
+HiLink startRequest yellow
delcommand HiLink
endif
diff --git a/contrib/mom/examples/penguin.pdf b/contrib/mom/examples/penguin.pdf
new file mode 100644
index 0000000..5e969ea
--- /dev/null
+++ b/contrib/mom/examples/penguin.pdf
@@ -0,0 +1,148 @@
+%PDF-1.4
+1 0 obj
+<<
+/Pages 2 0 R
+/Type /Catalog
+>>
+endobj
+2 0 obj
+<<
+/Type /Pages
+/Kids [ 3 0 R ]
+/Count 1
+>>
+endobj
+3 0 obj
+<<
+/Type /Page
+/Parent 2 0 R
+/Resources <<
+/XObject << /Im0 8 0 R >>
+/ProcSet 6 0 R >>
+/MediaBox [0 0 81 96]
+/CropBox [0 0 81 96]
+/Contents 4 0 R
+/Thumb 11 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 5 0 R
+>>
+stream
+q
+81 0 0 96 0 0 cm
+/Im0 Do
+Q
+endstream
+endobj
+5 0 obj
+29
+endobj
+6 0 obj
+[ /PDF /Text /ImageC ]
+endobj
+7 0 obj
+<<
+>>
+endobj
+8 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Im0
+/Filter [ /RunLengthDecode ]
+/Width 81
+/Height 96
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/SMask 15 0 R
+/Length 9 0 R
+>>
+stream
+ڄzkeXfmz~фp\QIGJMPXfvфw]PJIJIKHIKNwnKNKJIHIHJPgԄONHJIJHIQi_HIX{ׄQGJIOqgJHR}ڄmNKJHMrx[JMcڄXHKJTvwbJKOsڄsJHIJKISo{YWQKMHZڄ_GIJIJN[`OMKIMJIKtRIHIMJIKJNKNIMKIKJ]ڄJKIKIJKJIJKIJIOׄvMJHNRMJKORSMKIMsׄuKGKQYpmPKJKGHIZ~NIKJHIKouMH[s`MJjnXKJKN\tMG_ZXKJePYKJHIJXڄsMGJKJlJKIHIPڄsMWIJGKJIHOtIX`sVMOfXTKJHIHMڄsJ]HfvxNJogKJIHMzK\O\Z]jFMVn{hJIKSWMNizyKJKnkIJIJIMHԄROWKRJMKO^IJISHnvHIJIJFԄSFO|PIJGRGfhJIJMH]TqMKIJMIMڄe^bKMJIJN~gY]MKIJGIPlԄcKoQJKXBIYԄbNWSHvRM|gM[JKMqINxZHiRJKQmDEDIZvPM`KMJISMJIOtWKI_WKJIN^nNKIPKJITmzcXFk\KNHKJO\~Ņ]gTQNKIKIJK`ZJFQIJKIJIKMsŅmOPMW|GIKIJZ}΅˄zKI^KJIJIMOeSJHM_MKJKIJK˅_KJFXxPKIHIjхfPKJF\YKJKJIJKIJPo˅uNJndJGMINKJINOv΅\NHJWVOw`JIKJIHM]хsOJKJ]ChrXMNIKJOu݅]KNIYMrKNk]KNKJMdׅTOHqsQQJNI_SDEDOKJIR~jMs_KNH`ncwkJKJFMQ݅ZPYGHkPqgSKJKJNvׅwPM}eGNWxeltMIJIK`څdJW}IJmbqwiTQKNIKNTڅYHofBOYNPKGqINHIKt݅vMKPCduMJKG]GNIKcڅ`KetKHHKIJPRHIHJRyM{WKQMKNGHKJIKP{ON\sGKJKJHTHFIJHJMgڅJGfoHIMKIM`IGHIHMblKIesIYSKJmIJIHJIQ݅RMFi{KYRKMKyIJIHKJPhMKQrI^SKIwIJIJOڅbONbKnTKWrKJIO݅XIHX~O|VKHmXKJHIQ݅RJIWZ|PHJR{KNJKJKS݅VIM[uKPm{pWsgXPJMJdKc|iQKJIKJsxWzPhlIJIKJMptZ~݅P`nOJIKJOxqdJZcHMIKJRbQgKdJIJKJFfVQnoJKHKJRGMXXMFHGKYHKJTXQOIStxHKHCPjXIHMJHeKFJGIjJIGQHIKIJHJzgRXpVeJYWHF`^KHMIHqnJKJGHIwmPGKN~KNoq]NKJHKJTYHIHNJIGFDEDJHKGKJIJHYhIJIJIYlJIJHIJ\kHJHIKMKHGHJI^`MQR]hkj_WTQ_څwׅ݄΅݄΅݅ԅ
+endstream
+endobj
+9 0 obj
+7826
+endobj
+10 0 obj
+/DeviceRGB
+endobj
+11 0 obj
+<<
+/Filter [ /RunLengthDecode ]
+/Width 81
+/Height 96
+/ColorSpace 10 0 R
+/BitsPerComponent 8
+/Length 12 0 R
+>>
+stream
+ڄzkeXfmz~фp\QIGJMPXfvфw]PJIJIKHIKNwnKNKJIHIHJPgԄONHJIJHIQi_HIX{ׄQGJIOqgJHR}ڄmNKJHMrx[JMcڄXHKJTvwbJKOsڄsJHIJKISo{YWQKMHZڄ_GIJIJN[`OMKIMJIKtRIHIMJIKJNKNIMKIKJ]ڄJKIKIJKJIJKIJIOׄvMJHNRMJKORSMKIMsׄuKGKQYpmPKJKGHIZ~NIKJHIKouMH[s`MJjnXKJKN\tMG_ZXKJePYKJHIJXڄsMGJKJlJKIHIPڄsMWIJGKJIHOtIX`sVMOfXTKJHIHMڄsJ]HfvxNJogKJIHMzK\O\Z]jFMVn{hJIKSWMNizyKJKnkIJIJIMHԄROWKRJMKO^IJISHnvHIJIJFԄSFO|PIJGRGfhJIJMH]TqMKIJMIMڄe^bKMJIJN~gY]MKIJGIPlԄcKoQJKXBIYԄbNWSHvRM|gM[JKMqINxZHiRJKQmDEDIZvPM`KMJISMJIOtWKI_WKJIN^nNKIPKJITmzcXFk\KNHKJO\~Ņ]gTQNKIKIJK`ZJFQIJKIJIKMsŅmOPMW|GIKIJZ}΅˄zKI^KJIJIMOeSJHM_MKJKIJK˅_KJFXxPKIHIjхfPKJF\YKJKJIJKIJPo˅uNJndJGMINKJINOv΅\NHJWVOw`JIKJIHM]хsOJKJ]ChrXMNIKJOu݅]KNIYMrKNk]KNKJMdׅTOHqsQQJNI_SDEDOKJIR~jMs_KNH`ncwkJKJFMQ݅ZPYGHkPqgSKJKJNvׅwPM}eGNWxeltMIJIK`څdJW}IJmbqwiTQKNIKNTڅYHofBOYNPKGqINHIKt݅vMKPCduMJKG]GNIKcڅ`KetKHHKIJPRHIHJRyM{WKQMKNGHKJIKP{ON\sGKJKJHTHFIJHJMgڅJGfoHIMKIM`IGHIHMblKIesIYSKJmIJIHJIQ݅RMFi{KYRKMKyIJIHKJPhMKQrI^SKIwIJIJOڅbONbKnTKWrKJIO݅XIHX~O|VKHmXKJHIQ݅RJIWZ|PHJR{KNJKJKS݅VIM[uKPm{pWsgXPJMJdKc|iQKJIKJsxWzPhlIJIKJMptZ~݅P`nOJIKJOxqdJZcHMIKJRbQgKdJIJKJFfVQnoJKHKJRGMXXMFHGKYHKJTXQOIStxHKHCPjXIHMJHeKFJGIjJIGQHIKIJHJzgRXpVeJYWHF`^KHMIHqnJKJGHIwmPGKN~KNoq]NKJHKJTYHIHNJIGFDEDJHKGKJIJHYhIJIJIYlJIJHIJ\kHJHIKMKHGHJI^`MQR]hkj_WTQ_څwׅ݄΅݄΅݅ԅ
+endstream
+endobj
+12 0 obj
+7826
+endobj
+13 0 obj
+endobj
+14 0 obj
+7826
+endobj
+15 0 obj
+<<
+/Type /XObject
+/Subtype /Image
+/Name /Ma0
+/Filter [ /RunLengthDecode ]
+/Width 81
+/Height 96
+/ColorSpace /DeviceGray
+/BitsPerComponent 8
+/Length 16 0 R
+>>
+stream
+
+endstream
+endobj
+16 0 obj
+125
+endobj
+17 0 obj
+<<
+/Title (penguin.pdf)
+/CreationDate (D:20120619194903)
+/ModDate (D:20120619194903)
+/Producer (ImageMagick 6.6.0-4 2012-04-30 Q16 http://www.imagemagick.org)
+>>
+endobj
+xref
+0 18
+0000000000 65535 f
+0000000010 00000 n
+0000000059 00000 n
+0000000118 00000 n
+0000000296 00000 n
+0000000377 00000 n
+0000000395 00000 n
+0000000433 00000 n
+0000000454 00000 n
+0000008478 00000 n
+0000008498 00000 n
+0000008525 00000 n
+0000016495 00000 n
+0000016516 00000 n
+0000016532 00000 n
+0000016553 00000 n
+0000016869 00000 n
+0000016889 00000 n
+trailer
+<<
+/Size 18
+/Info 17 0 R
+/Root 1 0 R
+>>
+startxref
+17067
+%%EOF
diff --git a/contrib/mom/examples/sample_docs.mom b/contrib/mom/examples/sample_docs.mom
index fb3a177..5994387 100644
--- a/contrib/mom/examples/sample_docs.mom
+++ b/contrib/mom/examples/sample_docs.mom
@@ -1,4 +1,4 @@
-\# Copyright 2004, 2005, 2006, 2009
+\# Copyright 2004, 2005, 2006, 2009, 2010, 2011, 2012, 2013
\# Free Software Foundation, Inc.
\#
\# Copying and distribution of this file, with or without modification,
@@ -21,46 +21,56 @@
\#
\# The PRINTSTYLE is TYPESET. If you'd like to see what mom does
\# with the documents when the PRINTSTYLE is TYPEWRITE, change
-\# PRINTSTYLE TYPESET, below, to PRINTSTYLE TYPEWRITE. Also, in the
-\# third example, comment out PARA_INDENT and QUOTE_INDENT (lines
-\# 332 and 333).
+\# PRINTSTYLE TYPESET, below, to PRINTSTYLE TYPEWRITE and re-run with
+\#
+\# pdfmom -Tps sample_docs.mom > sample_docs.pdf
\#
\# ===================================================================
\#
-\# First, a sample "NAMED" document--in this case, an outline.
-\# A novelist wouldn't normally write an outline with numbered heads,
+\# First, a sample NAMED document--in this case, an outline.
+\# A novelist wouldn't normally write an outline with numbered
\# subheads and paraheads. I've turned the feature on merely to
\# demonstrate it.
\#
-\# Reference macros
+\# Reference macros (metadata)
\#
.TITLE "Lake Attica's Shores"
.SUBTITLE "A Romance Novel"
.AUTHOR "Rosemary Winspeare"
-.DRAFT 1 \" Ignored because COPYSTYLE is FINAL
-.REVISION 2 \" Ignored because COPYSTYLE is FINAL
-.COPYRIGHT "2004 Alma Podborski
+.COPYRIGHT "2004 Alma Podborski"
+.PDF_TITLE "Sample mom documents"
\#
-\# Reference macros for the document cover
+\# Additional information, for the cover
\#
.DOC_COVERTITLE "Sample mom Documents"
.MISC "Three types of mom documents" "assembled and collated by mom's author"
\#
-\# Docstyle macros
+\# Docstyle macros (templates)
\#
.DOCTYPE NAMED "Outline"
-.PRINTSTYLE TYPESET \" Or TYPEWRITE to preview "typewritten, double-spaced"
+.PRINTSTYLE TYPESET \" Or TYPEWRITE to preview "typewritten, double-spaced"
+.PAPER LETTER
+\#
+\# What to put on the cover and first title page
\#
-.DOC_COVER COVERTITLE MISC
+.DOC_COVER DOC_COVERTITLE MISC
.COVER TITLE AUTHOR DOCTYPE COPYRIGHT
\#
-\# Additional setup macros
+\# Style for nested heading levels
+\#
+\# The first two instances of level-1 headings will be paragraph heads
+\# so we set the paragraph head style here, then change it when
+\# level-1 headings become main heads.
+\#
+.HEADING_STYLE 1 FONT BI SIZE +.25
+.HEADING_STYLE 2 FONT B SIZE +.5 BASELINE_ADJUST \n[.v]/8 \" ie 1/8 the leading
\#
-.NUMBER_PARAHEADS
+.AUTO_RELOCATE_TOC
+.SPACE_TOC_ITEMS
\#
.START
.PP
-.PARAHEAD "A note on the setting"
+.HEADING 1 PARAHEAD "A note on the setting"
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat,
sed diam voluptua. Stet clita kasd gubergren, no sea takimata sanctus est.
@@ -77,7 +87,7 @@ vero, eos et accusam et justo duo do\%lo\%res et ea rebum. Consetetur
sadipscing elitr, sed diam nonumy.
.LINEBREAK
.PP
-.PARAHEAD "About historical personnages"
+.HEADING 1 PARAHEAD "About historical personnages"
At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita
kasd gubergren, no sea takimata sanctus est. Tempor invidunt ut
labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua.
@@ -87,10 +97,15 @@ nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat,
sed diam voluptua. Consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et do\%lo\%re magna. Tempor invidunt
ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua.
-.NUMBER_HEADS
-.NUMBER_SUBHEADS
-.HEAD "Part One"
-.SUBHEAD "Chapter 1"
+\#
+\# Change level-1 style and add numbering to levels 1 and 2
+\#
+.HEADING_STYLE 1 FONT B SIZE +1.5 CAPS UNDERSCORE .5 2p QUAD C \
+ NO_SPACE_AFTER BASELINE_ADJUST +0 NUMBER
+.HEADING_STYLE 2 NUMBER
+\#
+.HEADING 1 "Part One"
+.HEADING 2 "Chapter 1"
.PP
Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna
@@ -102,7 +117,7 @@ kasd gubergren, no sea takimata sanctus est. Lorem ipsum dolor sit
amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua.
Stet clita kasd gubergren, no sea takimata sanctus est.
-.SUBHEAD "Chapter 2"
+.HEADING 2 "Chapter 2"
.PP
Stet clita kasd gubergren, no sea takimata sanctus est. Lorem ipsum
dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
@@ -112,7 +127,7 @@ voluptua. At vero eos et accusam et justo duo do\%lo\%res et ea rebum.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt. Ut labore et do\%lo\%re magna
ali\%quyam erat, sed diam voluptua at vero.
-.SUBHEAD "Chapter 3"
+.HEADING 2 "Chapter 3"
.PP
Eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd
gubergren, no sea takimata sanctus est lorem ipsum dolor sit amet.
@@ -120,8 +135,8 @@ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat,
sed diam voluptua. At vero eos et accusam et justo duo do\%lo\%res et
ea rebum.
-.HEAD "Part Two"
-.SUBHEAD "Chapter 4"
+.HEADING 1 "Part Two"
+.HEADING 2 "Chapter 4"
.PP
Stet clita kasd gubergren, no sea takimata sanctus est
lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur
@@ -138,8 +153,8 @@ sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna
ali\%quyam erat, sed diam voluptua. At vero eos et accusam et justo
duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, no sea takimata
sanctus est lorem ipsum dolor sit amet. Consetetur sadipscing elitr,
-sed diam nonumy eirmod tempor invidunt.
-.SUBHEAD "Chapter 5"
+sed diam nonumy eirmod tempor invidunt.
+.HEADING 2 "Chapter 5"
.PP
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed
diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna
@@ -168,10 +183,7 @@ sit amet. Accusam et justo duo do\%lo\%res et ea rebum
\# has already deposited one there, COLLATE can't undo it.
\#
\# Normally, this isn't necessary; here we require it because the
-\# line falls right at the bottom of the page, and would therefore
-\# normally spring the page trap. Sorry for the fussiness, but at
-\# least now you know what to do if you ever encounter the problem
-\# of a page header printing at the top of a collated document.
+\# line falls right at the bottom of the page.
\#
\# Please notice, too, the use of "\&" before "..." Whenever an
\# input line begins with either a period, an apostrophe or a space,
@@ -181,15 +193,13 @@ sit amet. Accusam et justo duo do\%lo\%res et ea rebum
\#
\# =====================================================================
\#
-\# Next, two pages of a chapter, set in DRAFT style, showing
-\# the use of the EPIGRAPH BLOCK macro and the QUOTE macro.
+\# Next, two pages of a chapter, set in DRAFT style, showing the use
+\# of the EPIGRAPH BLOCK macro and the QUOTE macro.
\#
\# You'll notice that the starting page number of this "draft" is 1 (in
\# roman numerals). COPYSTYLE DRAFT always numbers the first page of a
\# document 1.
\#
-\# Reference macros
-\#
.TITLE "Lake Attica's Shores"
.SUBTITLE "A Romance Novel"
.AUTHOR "Rosemary Winspeare"
@@ -199,17 +209,14 @@ sit amet. Accusam et justo duo do\%lo\%res et ea rebum
.REVISION 2
.MISC "Draft 1, 2nd revision"
\#
-\# Docstyle macros
-\#
.DOCTYPE CHAPTER
.COPYSTYLE DRAFT
\#
-\# Additional style macros
-\#
.EPIGRAPH_FONT I \" Epigraphs are normally set in roman
.DRAFT_WITH_PAGENUMBER \" Draft/revision info usually goes in the header
-.COVER_MISC_QUAD RIGHT \" Change default position of the cover "misc" line
\#
+.COVER_MISC_FAMILY H
+.COVER_MISC_QUAD RIGHT
.COVER CHAPTER+TITLE MISC
\#
.START
@@ -218,7 +225,12 @@ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat,
sed diam voluptua.
.RIGHT
-\*[ROM]\(emJoseph E. Blough
+\#
+\# If running PRINTSTYLE TYPEWRITE, add space before citation
+\#
+.if \n[#PRINT_STYLE]=1 .sp
+\#
+\*[ROM]\[em]Joseph E. Blough
.EPIGRAPH OFF
.PP
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
@@ -289,23 +301,22 @@ accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est. At vero eos et accusam et justo duo
do\%lo\%res et ea rebum.
.RIGHT
-\*[BD]\&...end of sample chapter
+\*[BD]\&...end of sample chapter\c
+.EL
.COLLATE
\#
\# =====================================================================
\#
-\# Finally, a sample academic article, set in two columns with a
+\# Finally, a sample journal article, set in two columns with a
\# 1.5-pica gutter between them. This example also uses QUOTES,
\# BLOCKQUOTES and FOOTNOTES. In addition, it's set RECTO_VERSO,
\# with differing left and right margins that alternate from page to
\# page. (The header also flips from right to left, which you can
\# see on the 2nd and 3rd pages).
\#
-\# In order to accomodate the narrow measure of the columns, there's also
-\# a demonstration of things you can change with both the typesetting
-\# macros and the document processing "control" macros.
-\#
-\# Reference macros
+\# The primary purpose of this sample is to demonstrate how to
+\# create a stylesheet, along with some of the control macros that
+\# can be used.
\#
.TITLE "CONTROL EQUALS CHAOS"
.SUBTITLE "\*[ALD1]The Psychological and Auditory \
@@ -314,38 +325,53 @@ Impact of Serial vs. Aleatoric Music\*[RLD1]"
.COPYRIGHT "2004 J. Chang, B.H. Connors
.MISC "Submitted June 3, 2004" "\*[IT]Piano Quarterly\*[PREV]"
\#
-\# Docstyle macros
-\#
.DOCTYPE DEFAULT
.COPYSTYLE FINAL
\#
-\# Additional style macros -- general type parameters
+.L_MARGIN 6P
+.R_MARGIN 4P+6p
+.PT_SIZE 10
+.AUTOLEAD 1.5
\#
-.L_MARGIN 6P
-.R_MARGIN 4P+6p
-.PT_SIZE 10
-.AUTOLEAD 1.5
-\#
-\# Additional style macros -- change mom's default behaviour
+.AUTHOR_SIZE +.5
+.SUBTITLE_SIZE +1
\#
.RECTO_VERSO
-.PAGENUM 1
-.HEADER_LEFT "Chang, Connors" \" Because we have two authors
-.COLUMNS 2 1P+6p
-.SUBTITLE_SIZE +1.5
-.AUTHOR_SIZE +.5
+.PAGENUM 1
+\#
+.HEADER_LEFT "Chang, Connors" \" Because we have two authors
+.HEADER_SIZE +1
+\#
+.DOCHEADER_ADVANCE 1.75i
.DOCHEADER_LEAD +2p
-.HEADER_SIZE +1
-.PARA_INDENT 1P \" Comment this out if previewing PRINTSTYLE TYPEWRITE
-.QUOTE_INDENT 2 \" Comment this out if previewing PRINTSTYLE TYPEWRITE
-.SUBHEAD_SIZE +0
-.BLOCKQUOTE_FAMILY H
-.BLOCKQUOTE_SIZE -2
-.NUMBER_HEADS OFF \" Because we turned them on in the first example
-.NUMBER_SUBHEADS OFF \" Ibid
-\#
-.COVER_MISC_QUAD L \" Because we set it to R earlier
-.COVER TITLE AUTHOR COPYRIGHT MISC
+\#
+\# When PRINTSTYLE is TYPESET, these indents need to be smaller than
+\# the default
+\#
+.if \n[#PRINT_STYLE]=2 \{\
+. PARA_INDENT 1P
+. QUOTE_INDENT 2
+.\}
+\#
+.HEADING_STYLE 1 QUAD L SIZE +0 NO_NUMBER NO_CAPS NO_UNDERSCORE \
+ NO_SPACE_AFTER BASELINE_ADJUST \n[.v]/8 \" ie 1/8 of the leading
+\#
+.BLOCKQUOTE_FAMILY H
+.BLOCKQUOTE_SIZE -2
+.BLOCKQUOTE_AUTOLEAD 2
+\#
+.COVERTITLE "\*[UP 3p]\E*[$TITLE]" \" Use $TITLE, but raise 3 points
+\#
+.COVER_LEAD +2
+.COVER_AUTHOR_SIZE +1.5
+.COVER_MISC_FAMILY T
+.COVER_MISC_QUAD L
+.COVER_MISC_SIZE +0
+.COVER_COPYRIGHT_SIZE +0
+\#
+.COVER COVERTITLE AUTHOR COPYRIGHT MISC
+\#
+.COLUMNS 2 1P+6p
\#
.START
.PP
@@ -390,7 +416,7 @@ ali\%quyam erat, sed diam voluptua.
magna ali\%quyam erat, sed diam voluptua. At vero eos et accusam et
justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren no sea.
\#
-.SUBHEAD "Schoenberg\(em" "The Origins of Serial Pitch Organization"
+.HEADING 1 "Schoenberg \[em]" "The Origins of Serial Pitch Organization"
\#
.PP
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
@@ -409,7 +435,7 @@ Gubergren no sea takimata sanctus est.
Amet consetetur sadipscing elitr sed diam nonumy eirmod. Tempor
invidunt ut labore. Et dolor\%e magna ali\%quyam erat, sed diam voluptua,
at vero. Eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita
-kasd gubergren.
+kasd gubergren sed diam voluptua.
.PP
No sea takimata\c
.FOOTNOTE
@@ -422,22 +448,24 @@ et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero eos et
accusam et justo duo do\%lo\%res et ea rebum amet. Consetetur sadipscing
elitr sed diam nonumy eirmod tempor invidunt ut labore, et do\%lo\%re
magna ali\%quyam erat. Sed diam voluptua, at vero, eos et accusam et
-justo duo do\%lo\%res et ea rebum.
+justo duo do\%lo\%res et ea rebum qua certiore.
\#
-.SUBHEAD "Messiaen to Stockhausen\(em" "The Quest for Absolute Control"
+.HEADING 1 "Messiaen to Stockhausen \[em]" "The Quest for Absolute Control"
\#
.PP
Vero eos et accusam et justo duo do\%lo\%res et ea rebum amet:
+\#
.QUOTE
Eirmod tempor invidunt
Ut labore et do\%lo\%re magna ali\%quyam erat
Sed diam voluptua
At vero eos et accusam et justo duo do\%lo\%res.
.QUOTE OFF
+\#
Lorem ipsum dolor sit amet, consetetur sadipscing elitr
sed diam. Nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna.
Aliquyam erat, sed diam voluptua at vero eos et accusam. Et
-justo duo do\%lo\%res et ea rebum stet.
+justo duo do\%lo\%res et rebum.
.PP
Elitr sed diam nonumy eirmod tempor. Invidunt ut labore et do\%lo\%re
magna ali\%quyam erat sed. Diam voluptua at vero eos et accusam et
@@ -470,7 +498,7 @@ Ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua.
At vero eos et accusam et justo duo do\%lo\%res et ea rebum.
Stet clita kasd gubergren no sea. Ali\%quyam erat, sed diam voluptua.
\#
-.SUBHEAD "John Cage\(em" "Leaving It All to Chance"
+.HEADING 1 "John Cage \[em]" "Leaving It All to Chance"
\#
.PP
Sit amet, consetetur sadipscing elitr, sed diam nonumy. Eirmod tempor
@@ -507,12 +535,6 @@ Aliquyam nonumy eirmod tempor invidunt ut labore.
voluptua at vero eos et accusam. Et justo duo do\%lo\%res et ea rebum,
stet clita kasd gubergren, no sea takimata.
.PP
-Sanctus est lorem ipsum. Dolor sit amet consetetur sadipscing
-elitr. Sed diam nonumy eirmod tempor invidunt ut labore. Et
-do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero eos et
-accusam et justo duo. Dolores et ea rebum stet clita kasd gubergren
-no sea.
-.PP
Takimata lorem ipsum dolor sit amet consetetur sadipscing elitr.
Sed diam, nonumy eirmod tempor, invidunt ut labore et do\%lo\%re magna.
Aliquyam erat sed diam voluptua. At vero eos et accusam et
@@ -535,7 +557,7 @@ et dolore magna ali\%quyam erat, sed diam voluptua. At vero eos et
accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est.
\#
-.SUBHEAD "Beyond Cage\(em" "Catching the Midnight Train"
+.HEADING 1 "Beyond Cage \[em]" "Catching the Midnight Train"
\#
.PP
Lorem ipsum dolor sit amet, consetetur sadipscing elitr. Sed diam
@@ -580,3 +602,5 @@ takimata sanctus est.
.RIGHT
\*[BD]\&...end of sample article\*[PREV]
.FINIS
+.TOC_RV_SWITCH
+.TOC
diff --git a/contrib/mom/examples/typesetting.mom b/contrib/mom/examples/typesetting.mom
index b383f38..ecf6bf0 100644
--- a/contrib/mom/examples/typesetting.mom
+++ b/contrib/mom/examples/typesetting.mom
@@ -1,4 +1,4 @@
-\# Copyright 2004, 2005, 2006, 2009
+\# Copyright 2004, 2005, 2006, 2009, 2010, 2011, 2012, 2013
\# Free Software Foundation, Inc.
\#
\# Copying and distribution of this file, with or without modification,
@@ -8,16 +8,14 @@
\# Most mom users rely on mom's document processing macros to format
\# their work. The doc processing macros take care of all things
\# typographic and are simple, clear and easy to learn. The kind of
-\# "by hand" typesetting this file shows off is really geared toward
+\# "by hand" typesetting this file demonstrates is geared towards
\# professional typographers. Bear in mind, though, that the full
-\# power of mom's typesetting capabilities can be brought to bear
-\# on document processing as well.
+\# power of mom's typesetting capabilities can be brought to bear on
+\# document processing as well.
\#
\# Basic page setup
\#
-.PAGE 8.5i 11i \" Printer sheet size
-.L_MARGIN 1i \" Left margin 1 inch
-.R_MARGIN 1i \" Right margin 1 inch (calculates the line length)
+.PAGE 8.5i 11i 1i 1i 1i \" Page size, margins
\#
\# Basic type parameters
\#
@@ -35,7 +33,7 @@
.SMARTQUOTES \" Enable smartquotes
.SS 0 \" No extra space between sentences
\#
-.ALD 1i-1v \" Advance 1 inch from top of paper to first baseline
+.SP |1i-1v \" Advance 1 inch from top of paper to first baseline
Example 1\*[BU 2]:
.ALD .25v \" Advance an extra 1/4 linespace
.UNDERSCORE 3.75p "T\*[BU 4]asting notes using padding, string tabs \
@@ -52,12 +50,14 @@ and multi-columns"
\# the full line length.
\#
.SILENT \" Don't print the next line
-.PAD "\*[ST1]VIN#\*[ST1X]\*[FWD 1P]\*[ST2]ROBE#\*[ST2X]\*[FWD 1P]\*[ST3]NEZ#\*[ST3X]\*[FWD 1P]\*[ST4]BOUCHE#\*[ST4X]\*[FWD 1P]\*[ST5]COMMENTAIRES\*[ST5X]"
+.PAD "\*[ST1]VIN#\*[ST1X]\*[FWD 1P]\*[ST2]ROBE#\*[ST2X]\
+\*[FWD 1P]\*[ST3]NEZ#\*[ST3X]\*[FWD 1P]\*[ST4]BOUCHE#\*[ST4X]\
+\*[FWD 1P]\*[ST5]COMMENTAIRES\*[ST5X]"
.SILENT OFF \" Resume normal printing of text
\#
\# Now that the string tabs have been marked off, we "set" them.
\#
-.ST 1 L \" First string tab flush left, nofill mode (no need for .BR's between input lines)
+.ST 1 L \" First string tab flush left, nofill (line-for-line) mode
.ST 2 L QUAD \" Remaining tabs are flush left/rag right, fill mode
.ST 3 L QUAD
.ST 4 L QUAD
@@ -150,18 +150,18 @@ Superbe\|! Une aubaine ne pas manquer. Prt boire maintenant.
\#
.IL \w'*'+2p
\#
-\# Now, set the hanging indent equal to the left indent, effectively pulling
-\# the first line of the following text back to the new left margin.
-\# Subsequent output lines will be indented by the .IL amount.
-\# Notice that when using the \w inline escape, there's no need to append
-\# a unit of measure to it.
+\# Now, set the hanging indent equal to the left indent, effectively
+\# pulling the first line of the following text back to the new left
+\# margin. Subsequent output lines will be indented by the .IL
+\# amount. Notice that when using the \w inline escape, there's no
+\# need to append a unit of measure.
\#
.HI \w'*'+2p
*\*[FWD 1p]The term "Band-Aid" means the slightly sweet, vaguely chemical
smell associated with medical-grade plastics. It is often found in
wines from terroirs in South America. Provided a wine has a sufficient
concentration of fruit
-.RW .04 \" Kern the whole next line slightly, so "lipstick" doesn't hyphenate.
+.RW .04 \" Tighten the next line slightly, so "lipstick" doesn't hyphenate.
aromas and complex tertiary characteristics, Band-Aid is a Good Thing.
Otherwise, it smells like cheap lipstick.
.RW 0 \" Reset kerning to 0
@@ -186,14 +186,14 @@ Otherwise, it smells like cheap lipstick.
Example 2:
.ALD .25v
\#
-.COMMENT \" COMMENT lets you enter comments without using \# or \"
+.COMMENT
In the next line, because the string to be underscored must be
enclosed in double-quotes, you can't use the double-quote character
itself around the word "Massaging". We circumvent this by using the
-groff inline escapes \(lq and \(rq (leftquote and rightquote).
-.COMMENT OFF \" Remember to turn COMMENT off!
+groff inline escapes \[lq] and \[rq] (leftquote and rightquote).
+.COMMENT OFF
\#
-.UNDERSCORE 3.75p "\(lqMassaging\(rq \*[BCK 1p]a passage of rag right text"
+.UNDERSCORE 3.75p "\[lq]Massaging\[rq] \*[BCK 1p]a passage of rag right text"
.SP \" Add an extra linespace
\#
.PT_SIZE 12.5
@@ -211,7 +211,7 @@ The thousand injuries of Fortunato I had borne as I best could;
but when he ventured upon insult, I vowed revenge. You, who so well
know the nature of my soul, will not suppose, however, that I gave
utterance to a threat. \*[IT]At length\*[PREV] I would be
-avenged; this was a point definitively settled\(embut the very
+avenged; this was a point definitively settled\[em]but the very
definitiveness with which it was resolved, precluded the idea of
risk. I must not only punish, but punish with impunity. A
wrong is unredressed when retribution overtakes its redresser.
@@ -223,7 +223,7 @@ felt as such to him who has done the wrong.
\# than the preceding text (using the \*[SIZE <n>] inline escape.
\#
.RIGHT
-\*[SIZE -.5]\(emEdgar Allen Poe, \*[IT]The Cask of Amontillado\*[PREV]\*[SIZE +.5]
+\*[SIZE -.5]\[em]Edgar Allen Poe, \*[IT]The Cask of Amontillado\*[PREV]\*[SIZE +.5]
.SP \" Extra linespace
.IBQ \" Disable "indent both"
\#
@@ -244,7 +244,7 @@ felt as such to him who has done the wrong.
.FT B
.PT_SIZE -1
.LEFT
-The same passage, \*[BU 4]"massaged"
+The same passage, \*[BU4]"massaged"
\#
.ALD .5v
\#
@@ -252,40 +252,40 @@ The same passage, \*[BU 4]"massaged"
.PT_SIZE +1
.QUAD LEFT
.HY OFF \" Turn automatic hyphenation off
-.BR_AT_LINE_KERN \" Automatically insert a line break (.BR) with each invocation of .RW and .EW
+.BR_AT_LINE_KERN \" Automatically insert a line break (.BR) at each .RW and .EW
.WS +1 \" Increase word space slightly
.IB \" Turn "indent both" back on; values are the same as before
\#
-The thousand injuries of Fortunato I had borne as I best could; but
-when he ventured upon insult, I \*[BU 2]vowed revenge. \*[BU 4]Y\*[BU 6]ou,
-\*[BU 4]who so \*[BU 2]well know the nature
+The thousand injuries of Fortunato I had borne as I best could;
+but when he ventured upon insult, I \*[BU2]vowed revenge.
+\*[BU4]Y\*[BU6]ou, \*[BU4]who so \*[BU2]well know the nature
.EW .2
-of my soul, \*[BU 2]will not suppose, however, that I gave utterance to
-a threat. \*[IT]At
+of my soul, \*[BU2]will not suppose, however, that I gave utterance
+to a threat. \*[IT]At
.EW .2
length\*[PREV] I would be avenged; this was a point definitively
-settled\(embut the
+settled\[em]but the
.EW .2
-v\*[BU 1]ery definitiveness with which it was resolved, precluded the idea
-of risk.
+v\*[BU1]ery definitiveness with which it was resolved, precluded the
+idea of risk.
.EW 0
-I must not only punish, but punish with impunity. A \*[BCK 1p]wrong is
-unredressed
+I must not only punish, but punish with impunity. A \*[BCK 1p]wrong
+is unredressed
.EW .1
when retribution overtakes its redresser. It is equally unredressed
when the
.RW .1
-avenger fails to make himself felt as such to him \*[BU 2]who has done
-the wrong.
+avenger fails to make himself felt as such to him \*[BU 2]who has
+done the wrong.
.RW 0 \" Restore normal kerning
.WS +0 \" Restore normal wordspacing
.ALD 6p
.PT_SIZE -.5
.RIGHT
-\*[UP 1.5p]\(em\*[DOWN 1.5p]\*[BCK 1p]Edgar \*[BCK 1p]Allen Poe, \*[IT]The Cask of Amontillado\*[PREV]
+\*[UP 1.5p]\[em]\*[DOWN 1.5p]\*[BCK 1p]Edgar \*[BCK 1p]Allen Poe, \
+\*[IT]The Cask of Amontillado\*[PREV]
.IQ CLEAR \" Cancel and clear stored values of all indents
\#
-\#
.NEWPAGE \" Start a new page
.T_MARGIN 1i \" Set top margin to 1i (approx. equivalent to .ALD 1i-1v above)
\#
@@ -297,84 +297,88 @@ the wrong.
\#
Example 3:
.ALD .25v
-.UNDERSCORE 3.75p "A \*[BU 2]recipe for enumerated lists using indents"
-.SP .5v \" Add an extra half line space
-.FAM N \" New Century Schoolbook family
+.UNDERSCORE 3.75p "A \*[BU2]recipe for enumerated lists using indents"
+.SP .75v \" Add an extra half line space
+.FAM T \" New Century Schoolbook family
.FT R
-.PT_SIZE 11
-.LS 13
+.PT_SIZE 12
+.LS 14
.HY \" Turn hyphenation back on
.JUSTIFY \" Justify text
This example demonstrates the use of left and hanging indents for
simple enumerated lists. Nested lists are possible, as the example
shows; however, the more complex the nesting, the wiser it becomes
to use (string) tabs, as seen in Example 4.
-.TI 1.5m
+.RLD .25v \" Move upwards 1/2 linespace
+.DBX .5 0 \n[.l]u 2P+9p \" Draw box; \n[.l]u means "the current line length"
+.IB 6p \" Indent from both left and right margins
+.ALD 14p
\*[BD]Please note: mom\*[PREV] has macros that allow you to set
enumerated lists automatically. These examples merely show hanging
indents and string tabs in use.
\#
+.SP .25v
.JUSTIFY \" Justify text
-.IL \w'\0.\0' \" Establish a left indent equal to the width of 2 figure spaces plus a period.
-.HI \w'\0.\0' \" Establish a hanging indent equal to the size of the left indent.
+.IL \w'\0.\0' \" Establish a left indent equal to 2 figure spaces plus a period.
+.HI \w'\0.\0' \" Establish a hanging indent equal to the left indent.
.ALD 6p
\#
\#
-1.\0This is the first item in the list. N\*[BU 2]otice how the first line
+1.\0This is the first item in the list. N\*[BU2]otice how the first line
"hangs" back from the remaining text, which is otherwise
indented by the width of by two figure-spaces (digit-width
spaces) and a period.
.BR
-.HI \" Notice that HI doesn't require an argument once the value's been set
+.HI \" Notice that HI doesn't require an argument once the value's set
.ALD 6p
2.\0This is the second item in the list. As with the above item,
-notice the use of the \*[BU 8]\\0 escape sequence in the input text. It's
-there to ensure that the space after the number/period combination
-always remains the same (i.e. doesn't stretch when the line is
-justified). That way, the text of each item always lines up perfectly.
+notice the use of the \*[BU8]\\0 escape sequence in the input
+text. It's there to ensure that the space after the number/period
+combination always remains the same (i.e. doesn't stretch when the
+line is justified). That way, the text of each item always lines up
+perfectly.
\#
.COMMENT
Now we're going to set a bullet-point list, indented from the text
above by 1 pica. IL arguments are always added to whatever value
is in already effect for IL, hence all we have to do is tell mom to
indent (from the current left indent) 1 pica plus the width of the
-bullet character ( \(bu ). \*[FWD 3p] puts three points of space after
+bullet character, \[bu]. \*[FWD 3p] puts three points of space after
the bullet so that the bullet and the text are visually separated.
.COMMENT OFF
\#
\#
-.IL 1P+\w'\(bu\*[FWD 3p]'
+.IL 1P+\w'\[bu]\*[FWD 3p]'
\#
\# Hanging indents are always relative to the current left indent.
\# The additional 1-pica indent, above, already having been taken
-\# care of, we only want to hang the first lines of bullet list items
-\# back by the width of the bullet character plus its 3 extra
+\# care of, we only want to hang the first lines of bullet list
+\# items back by the width of the bullet character plus its 3 extra
\# points of space.
\#
.ALD 6p
-.HI \w'\(bu\*[FWD 3p]'
-\*[DOWN 1p]\(bu\*[UP 1p]\*[FWD 3p]This is the first line of a sublist with bullets.
-N\*[BU 2]otice how the first line (the one with the bullet) is indented
-exactly one pica from the text of the list item above it, while the
-remaining lines align with the left indent we set above.
+.HI \w'\[bu]\*[FWD 3p]'
+\*[DOWN 1p]\[bu]\*[UP 1p]\*[FWD 3p]This is the first line of a
+sublist with bullets. N\*[BU2]otice how the first line (the one
+with the bullet) is indented exactly one pica from the text of the
+list item above it, while the remaining lines align with the left
+indent we set above.
.ALD 6p
.HI
-\*[DOWN 1p]\(bu\*[UP 1p]\*[FWD 3p]This is the second item of the sublist with bullets. \*[BU 4]We
-could go on indefinitely, but let's go back to the top level (numbered)
-list...
+\*[DOWN 1p]\[bu]\*[UP 1p]\*[FWD 3p]This is the second item of the
+sublist with bullets. \*[BU4]We could go on indefinitely, but let's
+go back to the top level (numbered) list...
\#
-\# The easiest way to return to a previous indent value is by subtraction.
-\# The argument to IL, above, was 1P+\w'\(bu\*[FWD 3p]', so we just reverse
-\# it by putting a minus sign in front. The parentheses are required
-\# for groff to evaluate the expression properly.
+\# The easiest way to return to a previous indent value is by
+\# subtraction. The argument to IL, above, was 1P+\w'[bu]\*[FWD
+\# 3p]', so we just reverse it by putting a minus sign in front.
+\# The parentheses are required for groff to evaluate the expression
+\# properly.
\#
-.IL -(1P+\w'\(bu\*[FWD 3p]')
+.IL -(1P+\w'\[bu]\*[FWD 3p]')
.HI \w'\0.\0' \" Reset hanging indent for use with numbered items.
.ALD 6p
3.\0...and here we are.
-.HI \" Again, notice that once HI has been set, you don't have to keep passing it an argument.
-.ALD 6p
-4.\0In order not to make the example too long, we'll stop here.
.IQ CLEAR \" Don't forget to cancel and/or clear indents!
\#
.FAM T
@@ -387,20 +391,21 @@ list...
Example 4:
.ALD .25v
.UNDERSCORE 3.75p "A \*[BU 2]recipe for nested lists using string tabs"
-.SP .5v
-.FAM N
+.SP .75v
+.FAM T
.FT R
-.PT_SIZE 11
-.LS 13
+.PT_SIZE 12
+.LS 14
.JUSTIFY
Although setting up string tabs is a bit more complex than setting
-up indents, it's \*[BU 3]well worth the effort, especially for nested lists.
+up indents, it's \*[BU 3]well worth the effort, especially for
+nested lists.
.ALD 6p
\#
.COMMENT
-The PAD line, below, sets up two string tabs. The first (ST1)
-is exactly the length of two figure spaces and a period. The
-second (ST2) is simply "the remainder of the line."
+The PAD line, below, sets up two string tabs. The first (ST1) is
+exactly the length of two figure spaces and a period. The second
+(ST2) is simply "the remainder of the line."
.COMMENT OFF
\#
.SILENT \" Don't print any of this
@@ -410,19 +415,20 @@ second (ST2) is simply "the remainder of the line."
.SILENT OFF \" Restore printing
\#
.TB 1
-1.
-.TN \" Use .TN here so text stays on the same baseline as the number in tab 1
-This is the first item in the list. N\*[BU 2]otice how, just as in Example 3,
-the first line hangs back from the remaining text, which is otherwise
+1.\c
+.TN \" Use .TN so text stays on the same baseline
+This is the first item in the list. N\*[BU 2]otice how, just as in
+Example 3, the first line hangs back from the remaining text, which
+is otherwise
indented.
.ALD 6p
.TB 1
-2.
+2.\c
.TN
-This is the second item in the list. N\*[BU 2]otice that when setting "lists"
-with tabs, there's no need to use the \*[BU 8]\\0 escape sequence after
-the number/period combination in the input text.
-.ALD 6p
+This is the second item in the list. N\*[BU 2]otice that when
+setting "lists" with tabs, there's no need to use the \*[BU 8]\\0
+escape sequence after the number/period combination in the input
+text.
\#
.COMMENT
Now, set up the indented bullet-point sublist. The PAD line
@@ -433,57 +439,59 @@ length of remainder of the line.
.COMMENT OFF
\#
.SILENT
-.PAD "\*[FWD 12p]\*[ST3]\(bu\*[ST3X]\*[FWD 3p]\*[ST4]#\*[ST4X]"
+.PAD "\*[FWD 12p]\*[ST3]\[bu]\*[ST3X]\*[FWD 3p]\*[ST4]#\*[ST4X]"
.ST 3 L
.ST 4 J
.SILENT OFF
.ALD 6p
.TB 3
-\*[DOWN 1p]\(bu\*[UP 1p]
+\*[DOWN 1p]\[bu]\*[UP 1p]\c
.TN
-This is the first line of a sublist with bullets. N\*[BU 2]otice how the
-bullets and the text line up exactly the same as in Example 3.
+This is the first line of a sublist with bullets. N\*[BU2]otice
+how the bullets and the text line up exactly the same as in Example
+3.
.ALD 6p
.TB 3
-\*[DOWN 1p]\(bu\*[UP 1p]
+\*[DOWN 1p]\[bu]\*[UP 1p]\c
.TN
This is the second item of the sublist with bullets. For the fun of
it, lets add in an
.SPREAD
en-dashed sub-sublist.
-.BR \" We're in a fill mode right now, so you *must* terminate the line with BR
+.BR \" We're in fill mode right now, so you must terminate the line with BR
\#
.SILENT
-.PAD "\*[FWD 12p]\*[ST5]\(en\*[ST5X]\*[FWD 4p]\*[ST6]#\*[ST6X]"
+.PAD "\*[FWD 12p]\*[ST5]\[en]\*[ST5X]\*[FWD 4p]\*[ST6]#\*[ST6X]"
.ST 5 L
.ST 6 J
.SILENT OFF
.ALD 6p
.TB 5
-\*[UP .75p]\(en\*[DOWN .75p]
+\*[UP .75p]\[en]\*[DOWN .75p]\c
.TN
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
-nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
-sed diam voluptua.
+nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
+erat, sed diam voluptua.
.ALD 6p
.TB 5
-\*[UP .75p]\(en\*[DOWN .75p]
+\*[UP .75p]\[en]\*[DOWN .75p]\c
.TN
-At \*[BU 3]vero eos et accusam et justo duo dolores et ea rebum. Stet clita
-kasd gubergren, no sea takimata sanctus est lorem ipsum dolor sit amet.
+At \*[BU 3]vero eos et accusam et justo duo dolores et ea rebum.
+Stet clita kasd gubergren, no sea takimata sanctus est lorem ipsum
+dolor sit amet.
.ALD 6p
.TB 1
-3.
+3.\c
.TN
And here we are, back at the top-level numbered list with a minimum
of muss and fuss,
.ALD 6p
.TB 1
-4.
+4.\c
.TN
Generally speaking, once you get the hang of string tabs and the
-\*[BD]PAD\*[PREV] macro, you'll find setting up complex nested lists
-(or anything similar to them) easier than with hanging indents.
+\*[BD]PAD\*[PREV] macro, you'll find setting up complex indenting
+structures easier than with the indent macros.
.TQ
\#
.NEWPAGE
@@ -497,37 +505,37 @@ Example 5:
.ALD .25v
.UNDERSCORE 3.75p "Word spacing"
.ALD 8p
-.FAM P \" Palatino family
-.PT_SIZE 11
+.FAM T
+.PT_SIZE 12
.LS 14
\#
-\# The "label" lines for the following are set in Helvetica bold, one
-\# point smaller than the examples themselves. This demonstrates the
-\# use of the groff inline escape \f[...] to change both family and
-\# font inline. It also shows using the mom inline \*S[...], which is
-\# an alternate form of the inline, \*[SIZE <n>]
+\# The "label" lines for the following are set in Helvetica
+\# bold, one point smaller than the examples themselves. This
+\# demonstrates the use of the groff inline escape \f[...] to change
+\# both family and font inline. It also shows using the mom inline
+\# \*S[...], which is an alternate form of the inline, \*[SIZE <n>]
\#
\f[HB]\*S[-1]Normal word spacing\*S[+1]\*[PREV]
.FT R
-N\*[BU 1]o\*[BU 1]w \*[BU 1]is the time for all good men to come to the aid of the party.
+N\*[BU1]o\*[BU1]w \*[BU1]is the time for all good men to come to the aid of the party.
.ALD 4p
-\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU 3]+\*[DOWN 1p]\*[BU 1]2\*S[+1]\*[PREV]
+\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU3]+\*[DOWN 1p]\*[BU1]2\*S[+1]\*[PREV]
.FT R
.WS +2
-N\*[BU 1]o\*[BU 1]w \*[BU 1]is the time for all good men to come to the aid of the party.
+N\*[BU1]o\*[BU1]w \*[BU1]is the time for all good men to come to the aid of the party.
.WS +0
.ALD 4p
-\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU 3]+\*[DOWN 1p]4\*S[+1]\*[PREV]
+\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU3]+\*[DOWN 1p]4\*S[+1]\*[PREV]
.FT R
.WS +4
-N\*[BU 1]o\*[BU 1]w \*[BU 1]is the time for all good men to come to the aid of the party.
+N\*[BU1]o\*[BU1]w \*[BU1]is the time for all good men to come to the aid of the party.
.WS +0
.ALD 4p
-\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU 3]+\*[DOWN 1p]6\*S[+1]\*[PREV]
+\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU3]+\*[DOWN 1p]6\*S[+1]\*[PREV]
.FT R
.WS +6
-N\*[BU 1]o\*[BU 1]w \*[BU 1]is the time for all good men to come to the aid of the party.
-.WS +0
+N\*[BU1]o\*[BU1]w \*[BU1]is the time for all good men to come to the aid of the party.
+.WS DEFAULT
.SP 1.5v
\#
.FAM T
@@ -540,9 +548,9 @@ Example 6:
.ALD .25v
.UNDERSCORE 3.75p "Line kerning"
.ALD 8p
-.FAM P \" Palatino family
+.FAM T \" Palatino family
.FT R
-.PT_SIZE 11
+.PT_SIZE 12
.LS 15
\#
\# Here, we set up some tabs so the examples can go into facing columns.
@@ -556,7 +564,7 @@ Example 6:
.FT R
"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
.ALD 4p
-\f[HB]\*S[-1]Line "tightened" \(en .RW .1\*S[+1]\*[PREV]
+\f[HB]\*S[-1]Line "tightened" \[en] .RW .1\*S[+1]\*[PREV]
.RW .1
"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
.ALD 4p
@@ -564,27 +572,28 @@ Example 6:
\# In the next line, notice that because it uses a different family
\# (Helvetica instead of Palatino), the RW macro doesn't affect it.
\#
-\f[HB]\*S[-1]Line "tightened" \(en .RW .2\*S[+1]\*[PREV]
+\f[HB]\*S[-1]Line "tightened" \[en] .RW .2\*S[+1]\*[PREV]
.RW .2
"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
.ALD 4p
-\f[HB]\*S[-1]Line "tightened" \(en .RW .3\*S[+1]\*[PREV]
+\f[HB]\*S[-1]Line "tightened" \[en] .RW .3\*S[+1]\*[PREV]
.RW .3
"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
+.RW 0
.MCR
.TB 2
\f[HB]\*S[-1]Unkerned line\*S[+1]\*[PREV]
"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
.ALD 4p
-\f[HB]\*S[-1]Line "loosened" \(en .EW .1\*S[+1]\*[PREV]
+\f[HB]\*S[-1]Line "loosened" \[en] .EW .1\*S[+1]\*[PREV]
.EW .1
"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
.ALD 4p
-\f[HB]\*S[-1]Line "loosened" \(en .EW .2\*S[+1]\*[PREV]
+\f[HB]\*S[-1]Line "loosened" \[en] .EW .2\*S[+1]\*[PREV]
.EW .2
"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
.ALD 4p
-\f[HB]\*S[-1]Line "loosened" \(en .EW .3\*S[+1]\*[PREV]
+\f[HB]\*S[-1]Line "loosened" \[en] .EW .3\*S[+1]\*[PREV]
.EW .3
"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
.MCX 1.5v
@@ -597,8 +606,8 @@ Example 6:
\#
Example 7:
.ALD .25v
-.UNDERSCORE 3.75p "Cutaround using left\*[FU 2]/right indents, multi columns \
-and a dropcap"
+.UNDERSCORE 3.75p "Cutaround using left\*[FU 2]/right indents, \
+multi columns and a dropcap"
.SP
\#
.FT R
@@ -613,7 +622,8 @@ and a dropcap"
\#
\# The little picture of tux.
\#
-.PSPIC penguin.ps
+.if '\*[.T]'pdf' .PDF_IMAGE penguin.pdf 81p 96p
+.if '\*[.T]'ps' .PSPIC penguin.ps 81p 96p
.MCR
.TAB 1
.XCOLOR red \" Initialize the X11 color, red
@@ -622,21 +632,21 @@ and a dropcap"
.DROPCAP L 3 COND 80 \" i.e. the letter L dropped 3 lines, condensed to 80% of its normal width
.EW .2
orem ipsum dolor sit amet, consetetur sa\%dip\%scing elitr, sed diam
-nonumy eir\%mod tempor invidunt ut labore et dolore magna aliquyam erat,
-sed diam voluptua.
+nonumy eir\%mod tempor invidunt ut labore et dolore magna aliquyam
+erat, sed diam voluptua.
.EW 0
.TI 1P
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
kasd gubergren, no sea taki-
.SPREAD \" Force justify preceding line before starting indent
.IR 3.5P
-kimata sanctus est lorem ipsum dolor sit amet.
-Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
-nonumy eirmod tempor.
+kimata sanctus est lorem ipsum dolor sit amet. Lorem ipsum dolor
+sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
+tempor.
.EW .2
.TI
-Invidunt ut labore et dolore magna ali\%qu\%yam erat, sed diam voluptua.
-At
+Invidunt ut labore et dolore magna ali\%qu\%yam erat, sed diam
+voluptua. At
.EW 0
vero eos et accusam et justo duo dolores et ea rebum.
.TI
@@ -645,8 +655,8 @@ Stet clita kasd gubergren, no sea ta-
.IRQ
kimata sanctus est lorem ipsum dolor sit amet. Lorem ipsum dolor
sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
-in\%vi\%dunt ut labore et dolore magna aliquyam erat. Sed diam voluptua,
-at vero eos et accusam et justo duo
+in\%vi\%dunt ut labore et dolore magna aliquyam erat. Sed diam
+voluptua, at vero eos et accusam et justo duo
.SPREAD
.EW .3
dolores et ea rebum. Stet clita no kasd guber-
@@ -658,20 +668,20 @@ gren, no sea takimata sanctus est lorem ipsum
dolor sit amet. Consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore.
.TI
-Magna aliquyam erat, sed diam voluptua, at vero eos et accusam.
-Et justo duo dolores et ea
+Magna aliquyam erat, sed diam voluptua, at vero eos et accusam. Et
+justo duo dolores et ea
.SPREAD
.IL 3.5P
-rebum, stet clita kasd gubergren. No sea
-takimata sanctus est, lorem ipsum dolor sit amet.
+rebum, stet clita kasd gubergren. No sea takimata sanctus est,
+lorem ipsum dolor sit amet.
.TI
-Sit amet, consetetur sadipscing elitr, sed diam. Nonumy eirmod tempor
-in\%vi-
+Sit amet, consetetur sadipscing elitr, sed diam. Nonumy eirmod
+tempor in\%vi-
.EW .3
dunt ut labore et dolore magna. Ali-
.EW 0
-quyam erat sed diam voluptua.
-At vero eos et accusam et justo duo dolores et ea rebum stet.
+quyam erat sed diam voluptua. At vero eos et accusam et justo duo
+dolores et ea rebum stet.
.ILQ
.TI
Dolores et ea rebum stet clita kasd gubergren, no sea takimata
diff --git a/contrib/mom/groff_mom.man b/contrib/mom/groff_mom.man
index 1ee8499..39ec33f 100644
--- a/contrib/mom/groff_mom.man
+++ b/contrib/mom/groff_mom.man
@@ -1,9 +1,10 @@
.ig
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2002, 2003, 2005, 2008, 2009
+Copyright (C) 2002, 2003, 2005, 2008, 2009, 2011, 2012, 2013
Free Software Foundation, Inc.
written by Werner Lemberg <wl@gnu.org>
+revised 2012 by Peter Schaffter <peter@schaffter.ca>
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -34,37 +35,78 @@ groff_mom \- groff `mom' macros
.
.SH SYNOPSIS
.
-.B groff
-.B \-mom
-[
-.IR files .\|.\|.\&
-]
-.br
-.B groff
-.B \-m\ mom
-[
-.IR files .\|.\|.\&
-]
+.SY pdfmom
+.OP \-Tps "\fR[pdfroff options]"
+[groff options]
+.I files .\|.\|.
+.YS
+.
+.SY groff
+.OP \-mom
+.I files .\|.\|.
+.YS
.
+.SY groff
+.OP "\-m mom"
+.I files .\|.\|.
+.YS
.
.SH DESCRIPTION
.
.B mom
-(\[lq]my own macros\[rq], \[lq]my other macros\[rq], \[lq]maximum
-overdrive macros\[rq], .\|.\|.\&) is a macro set for groff, designed
-primarily to format documents for PostScript output.
-.PP
+is a macro set for groff, designed primarily to format documents for
+PDF and PostScript output.
+.P
.B mom
-provides two categories of macros: macros for typesetting and macros
-for document processing.
-The typesetting macros provide access to groff's typesetting power in
-ways that are simpler to master and to use than groff's primitives.
-The document processing macros provide customizable markup
-\[lq]tags\[rq] that allow the user to design and output
-professional-looking documents with a minimum of typesetting
-intervention.
-.PP
-mom comes with her own (very) complete documentation in HTML format.
+provides two categories of macros: macros for typesetting, and
+macros for document processing.
+The typesetting macros provide access to groff's typesetting
+capabilities in ways that are simpler to master than groff's
+primitives.
+The document processing macros provide highly customizable markup
+tags that allow the user to design and output professional-looking
+documents with a minimum of typesetting intervention.
+.P
+Files processed with
+.B pdfmom
+(man(@MAN1EXT@)
+.BR pdfmom\c
+), with or without the
+.RI -T ps
+option, produce PDF documents.
+The documents include a PDF outline that appears in the
+\[oq]Contents\[cq] panel of document viewers, and may contain
+clickable internal and external links.
+.P
+When
+.RI -T ps
+is absent,
+.B groff's
+native PDF driver,
+.B gropdf\c
+, is used to generate the output.
+When given, the output is still PDF, but processing is passed over to
+.B pdfroff\c
+, which uses
+.B groff's
+PostScript driver,
+.B grops\c
+\&.
+Not all PDF features are available when
+.RI -T ps
+is given; its primary use is to allow processing of files with
+embedded PostScript images.
+.P
+Files processed with
+.B groff -mom
+(or
+.BI "-m " mom
+) produce PostScript output by default.
+.P
+mom comes with her own very complete documentation in HTML format.
+A separate PDF manual,
+.I Producing PDFs with groff and mom\c
+, covers full mom/PDF usage.
.
.SH FILES
.TP
@@ -75,13 +117,17 @@ mom comes with her own (very) complete documentation in HTML format.
\[en] a wrapper file that calls om.tmac directly.
.
.TP
-.UR @HTMLDOCDIR@/\:momdoc/\:toc.html
-@HTMLDOCDIR@/\:momdoc/\:toc.html
+.UR \%@HTMLDOCDIR@/\:mom/\:toc.html
.UE
\[en] entry point to the HTML documentation
.
.TP
-.B @EXAMPLEDIR@/*.mom
+.BR \%@PDFDOCDIR@/\:mom-pdf.pdf
+\[en] the PDF manual,
+.I Producing PDFs with groff and mom
+.
+.TP
+.B @EXAMPLEDIR@/mom/*.mom
\[en] example files using mom
.
.
@@ -92,11 +138,17 @@ was written by
.MT peter@schaffter.ca
Peter Schaffter
.ME .
+.br
+PDF support was provided by
+.MT deri@chuzzlewit.demon.co.uk
+Deri James
+.ME .
+.sp
Please send bug reports to the
.MT bug-groff@gnu.org
-groff bug mailing list
+groff-bug mailing list
.ME
-or directly to the author at the address, above.
+or directly to the authors.
.
.cp \n[groff_mom_C]
.
diff --git a/contrib/mom/momdoc/appendices.html b/contrib/mom/momdoc/appendices.html
index 7aa9240..d425f07 100644
--- a/contrib/mom/momdoc/appendices.html
+++ b/contrib/mom/momdoc/appendices.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -33,18 +35,22 @@ FDL in the main directory of the groff source package.
<table style="width: 100%;">
<tr>
<td><a href="toc.html">Back to Table of Contents</a></td>
- <td style="text-align: right;"><a href="reserved.html#top">Next: Reserved words</a></td>
</tr>
</table>
<h1 id="appendices" class="docs">Appendices</h1>
-<div style="width: 54%; margin: auto;">
+<div style="width: 68%; margin: auto;">
<ul class="no-enumerator">
- <li><a href="#moredoc">Notes on the documentation</a></li>
- <li><a href="#fonts">Adding PostScript fonts to groff</a>
- <ul style="margin-left: -.5em;">
- <li><a href="#howto">How to create a PostScript font for use with groff</a></li>
+ <li><a href="#fonts">Adding fonts to groff</a>
+ <ul style="margin-left: -.5em; list-style-type: disc">
+ <li><a href="#extending">Extending groff families / adding new families and fonts</a>
+ <ul style="margin-left: -.5em; list-style-type: circle">
+ <li><a href="#traditional">The traditional approach</a></li>
+ <li><a href="#simpler">The simpler way with mom</a></li>
+ </ul></li>
+ <li><a href="#steps">Step-by-step instructions</a></li>
+ <li><a href="#install-font">Automate the whole process &ndash; the install-font script</a></li>
</ul></li>
<li><a href="#codenotes">Some reflections on mom</a></li>
<li><a href="#contact">Contact the author</a></li>
@@ -53,59 +59,35 @@ FDL in the main directory of the groff source package.
<div class="rule-medium"><hr/></div>
-<h2 id="moredoc" class="docs">Notes on the documentation</h2>
-
-<p>
-Some mom users are sure to ask: &#8220;Why is the documentation in
-html? If mom&#8217;s so great, why not pdfs to show her off? And
-if groff&#8217;s so great, why not write a man page?&#8221;
-</p>
-
-<p>
-Valid questions, to be sure, and mom has answers. (Okay&mdash;I
-have answers, but I speak for mom.)
-</p>
-
-<p>
-The documentation is in html because I still find it the best tool
-for navigating lengthy manuals. Html, with its anchors and links,
-came into being precisely so people could do something they&#8217;d
-never been able to with the printed word: instantly track down
-internal and external references in a document.
-</p>
-
-<p>
-It&#8217;s essential that people reading mom&#8217;s documentation
-never have difficulty finding precisely the macro they need for a
-particular task. Equally, when reading up on a macro, they should
-never be presented with terms or other macro names for which they
-cannot instantly find accurate explanations. Short of having
-written the documentation in TeX for the info browser (and TeX bloat
-is one of the reasons I prefer to typeset with groff), I can think
-of no better way to achieve the kind of truly useful documentation I
-wanted than html.
-</p>
-
-<div class="rule-medium"><hr/></div>
-
-<!-- ===================================================================== -->
-
-<h2 id="fonts" class="docs">Adding PostScript fonts to groff</h2>
+<h2 id="fonts" class="docs">Adding fonts to groff</h2>
<div id="small-note" class="box-tip">
-<p class="tip">
-<span class="note">Note:</span>
-The term <kbd>&lt;prefix&gt;</kbd> in this section refers
+<p class="tip-top">
+<kbd>&lt;prefix&gt;</kbd>, in this section, refers
to the directory in which groff is installed, typically
-something like <kbd>/usr/share/groff/&lt;version&gt;</kbd>
+<br/>
+<span class="pre-in-pp">
+ /usr/share/groff/
+</span>
(for distro-specific, pre-compiled groff packages) or
-<kbd>/usr/local/share/groff/&lt;version&gt;</kbd> (if you&#8217;ve
-built groff from source).
+<br/>
+<span class="pre-in-pp">
+ /usr/local/share/groff/
+</span>
+(if you&#8217;ve built groff from source).
+<p class="tip-bottom">
+<kbd>&lt;version&gt;</kbd> refers to the groff version number, which
+can be found, if necessary, by typing
+<br/>
+<span class="pre-in-pp">
+ groff -v
+</span>
+at the command line.
</p>
</div>
<p>
-Groff comes with a small library of PostScript
+Groff comes with a small library of
<a href="definitions.html#family">families</a>
(see the
<a href="typesetting.html#family">FAMILY</a>
@@ -122,48 +104,51 @@ and
B (Bold, usually Roman shape) and
BI (Bold Italic)
</span>
-If you work with mom a lot, you&#8217;ll find, sooner or later, that these
+If you work with mom a lot, sooner or later you&#8217;ll find that these
families and their associated fonts aren&#8217;t sufficient. You&#8217;ll
want to supplement them, either with more fonts for the families
already provided&mdash;<i>Damn! I need Helvetica Bold Condensed
-Italic!</i>&mdash;or with entire new families.
+Italic</i>&mdash;or with entire new families.
</p>
-<p>
-Without going into the gory details (yet), while it&#8217;s true
-that adding fonts to groff is a relatively straightforward process,
-extending existing families or adding new ones requires some
-planning.
-</p>
+<h3 id="extending" class="docs">Extending groff families / adding new families and fonts</h3>
+
+<h4 id="traditional" class="docs">The traditional approach</h4>
<p>
-The traditional approach to extending groff families has been to
-create new families for non-default weights and shapes (e.g. Light,
-which is a weight; Condensed, which is a shape), then to associate
-them with groff&#8217;s predefined <b>R, I, B</b> and <b>BI</b> font
-styles. An example of this can be seen in the groff PostScript
-font library itself (&lt;prefix&gt;/font/devps/): there&#8217;s one
-&#8220;family&#8221; for Helvetica (<b>HR</b>, <b>HI</b>, <b>HB</b>,
-<b>HBI</b>) and another for Helvetica Narrow (<b>HNR</b>,
-<b>HNI</b>, <b>HNB</b>, <b>HNBI</b>).
+The traditional approach to extending groff families has been
+to create new families for non-default weights and shapes (e.g.
+<b>Light</b>, which is a
+<a href="definitions.html#weight">weight</a>,
+or <b>Condensed</b>, which is a
+<a href="definitions.html#shape">shape</a>),
+then to associate them with groff&#8217;s predefined <b>R,
+I, B</b> and <b>BI</b> font styles. An example of this
+can be seen in the groff PostScript font library itself, which is
+found in
+</br>
+<span class="pre-in-pp">
+ &lt;prefix&gt;/&lt;version&gt;/font/devps/
+</span>
+There&#8217;s one &#8220;family&#8221; for Helvetica (<b>HR</b>,
+<b>HI</b>, <b>HB</b>, <b>HBI</b>) and another for Helvetica Narrow
+(<b>HNR</b>, <b>HNI</b>, <b>HNB</b>, <b>HNBI</b>).
</p>
<p>
The difficulty with this approach is that typographers tend to
think of families as referring to the entire set of font weights
-and shapes associated with a particular family name. For example,
-when a typesetter says &#8220;the Helvetica family&#8221;, s/he is
-including the
-<a href="definitions.html#weight">weights</a>
-Helvetica Thin, Helvetic Light, Helvetica Regular, Helvetica Bold,
-Helvetica Heavy, etc, and all their associated
-<a href="definitions.html#shape">shapes</a>
-(Roman, Italic, Condensed, Narrow, Extended, Outline, etc).
+and shapes associated with a family name. For example, when
+a typesetter says &#8220;the Helvetica family&#8221;, s/he is
+including the weights Helvetica Thin, Helvetica Light, Helvetica
+Regular, Helvetica Bold, Helvetica Heavy, etc, and all their
+associated shapes (Roman, Italic, Condensed, Narrow, Extended,
+Outline, etc).
</p>
<p>
Thus, intuitively, when a typesetter gives mom a
-<kbd>.FAM(ILY)&nbsp;H</kbd> directive, s/he reasonably expects that
+<kbd>.FAMILY&nbsp;H</kbd> directive, s/he reasonably expects that
any subsequent <kbd>.FT</kbd> directive will access the desired font
from the Helvetica family&mdash;without the need to state explicitly
both family and font to <kbd>.FT</kbd>, as it is explained one can
@@ -175,18 +160,29 @@ sections of these documents.
</p>
<p>
-If one had, say, the fonts, Helvetica Light Roman and Helvetica
-Light Italic as well as Helvetica Light Condensed Roman and
-Helvetica Light Condensed Italic, the established groff approach
-would require two &#8220;partial&#8221; families: HLR/HLI and
-HLCDR/HLCDI. Accessing these family/font combos routinely
-throughout a document would then require changing family
-(with <kbd>.FAM(ILY)</kbd>) and selecting the desired font
+If one had, say, Helvetica Light Roman and Helvetica Light Italic
+as well as Helvetica Light Condensed Roman and Helvetica Light
+Condensed Italic, the established groff approach would require two
+&#8220;partial&#8221; families, <b>HL</b> (for Helvetica Light)
+and <b>HLCD</b> (for Helvetica Light Condensed), with <b>R</b> and
+<b>I</b> fonts for both:
+</br>
+<span class="pre-in-pp">
+ HLR
+ HLI
+ HLCDR
+ HLCDI
+</span>
+Accessing these family/font combos routinely
+throughout a document would then require changing the family
+(with <kbd>.FAMILY</kbd>) and selecting the desired font
(with <kbd>.FT&nbsp;R</kbd> or <kbd>.FT&nbsp;I</kbd>), or
passing <kbd>.FT</kbd> the lengthy family+fontname (.e.g.
<kbd>.FT&nbsp;HLCDI</kbd>).
</p>
+<h4 id="simpler" class="docs">The simpler way with mom</h4>
+
<p>
Fortunately, groff provides a mechanism whereby it&#8217;s possible
to extend the basic <b>R</b>, <b>I</b>, <b>B</b> and <b>BI</b> fonts
@@ -197,50 +193,128 @@ with <kbd>.ft</kbd> (groff) or <kbd>.FT</kbd> (mom).
<p>
Mom uses this mechanism to offer, in addition to groff&#8217;s
-default PostScript font styles, the following:
+default font styles, the following:
</p>
<div class="examples-container" style="padding-bottom: 1em;">
-<div id="style-extensions" style="width: 53%; float: left;">
-<span class="pre">
-L = Light Roman
-LI = Light Italic
-LCD = Light Condensed Roman
-LCDI = Light Condensed Italic
-LEX = Light Extended Roman
-LEXI = Light Extended Italic
-CD = Medium/Book Condensed Roman
-CDI = Medium/Book Condensed Italic
-EX = Medium/Book Extended Roman
-EXI = Medium/Book Extended Italic
-DB = DemiBold Roman
-DBI = DemiBold Italic
-BCD = Bold Condensed Roman
-BCDI = Bold Condensed Italic
-BEX = Bold Extended Roman
+<div id="style-extensions" style="width: 50%; float: left;">
+<span class="pre" style="font-size: 85%">
+UL = Ultra Light
+ULI = Ultra Light Italic
+ULCD = Ultra Light Condensed
+ULCDI = Ultra Light Condensed Italic
+ULEX = Ultra Light Extended
+ULEXI = Ultra Light Extended Italic
+
+XL = Extra Light
+XLI = Extra Light Italic
+XLCD = Extra Light Condensed
+XLCDI = Extra Light Condensed Italic
+XLEX = Extra Light Extended
+XLEXI = Extra Light Extended Italic
+
+TH = Thin
+THI = Thin Italic
+THCD = Thin Condensed
+THCDI = Thin Condensed Italic
+THEX = Thin Extended
+THEXI = Thin Extended Italic
+
+L = Light Roman
+LI = Light Italic
+LCD = Light Condensed
+LCDI = Light Condensed Italic
+LEX = Light Extended
+LEXI = Light Extended Italic
+
+BK = Book Roman
+BKI = Book Italic
+BKCD = Book Condensed
+BKCDI = Book Condensed Italic
+BKEX = Book Extended
+BKEXI = Book Extended Italic
+
+CD = Medium Condensed
+CDI = Medium Condensed Italic
+EX = Medium Extended
+EXI = Medium Extended Italic
+
+DB = DemiBold Roman
+DBI = DemiBold Italic
+DBCD = DemiBold Condensed
+DBCDI = DemiBold Condensed Italic
+DBEX = DemiBold Extended
+DBEXI = DemiBold Extended Italic
+
+SB = SemiBold Roman
+SBI = SemiBold Italic
+SBCD = SemiBold Condensed
+SBCDI = SemiBold Condensed Italic
+SBEX = SemiBold Extended
+SBEXI = SemiBold Extended Italic
</span>
</div>
-<span class="pre">
+<span class="pre" style="font-size: 85%">
+BCD = Bold Condensed
+BCDI = Bold Condensed Italic
+BEX = Bold Extended
BEXI = Bold Extended Italic
-HV = Heavy Roman
+BO = Bold Outline
+
+XB = Extra Bold
+XBI = Extra Bold Italic
+XBCD = Extra Bold Condensed
+XBCDI = Extra Bold Condensed Italic
+XBEX = Extra Bold Extended
+XBEXI = Extra Bold Extended Italic
+
+UB = Ultra Bold
+UBI = Ultra Bold Italic
+UBCD = Ultra Bold Condensed
+UBCDI = Ultra Bold Condensed Italic
+UBEX = Ultra Bold Extended
+UBEXI = Ultra Bold Extended Italic
+
+HV = Heavy
HVI = Heavy Italic
-HVCD = Heavy Condensed Roman
+HVCD = Heavy Condensed
HVCDI = Heavy Condensed Italic
-HVEX = Heavy Extended Roman
+HVEX = Heavy Extended
HVEXI = Heavy Extended Italic
-BL = Black Roman
+
+BL = Black
BLI = Black Italic
-BLCD = Black Condensed Roman
+BLCD = Black Condensed
BLCDI = Black Condensed Italic
-BLEX = Black Extended Roman
+BLEX = Black Extended
BLEXI = Black Extended Italic
-UBL = Ultra-Black Roman
-UBLI = Ultra-Black Italic
+BLO = Black Outline
+
+XBL = Extra Black
+XBLI = Extra Black Italic
+XBLCD = Extra Black
+XBLCDI = Extra Black
+XBLEX = Extra Black Italic
+XBLEXI = Extra Black Italic
+
+UBL = Ultra Black
+UBLI = Ultra Black Italic
+UBLCD = Ultra Black Condensed
+UBLCDI = Ultra Black Condensed Italic
+UBLEX = Ultra Black Exteneded
+UBLEXI = Ultra Black Extended Italic
+
+SC = Small Caps Roman
+SCI = Small Caps Italic
+SCDB = Small Caps Demibold
+SCDBI = Small Caps Demibold Italic
+SCSB = Small Caps Semibold
+SCSBI = Small Caps Semibold Italic
</span>
</div>
<p style="clear: both;">
-Thus, with mom, if you&#8217;ve installed, say, some extra
+Thus, with mom, if you&#8217;ve installed some extra
Helvetica fonts and named them according to the convention
<kbd>&lt;F&gt;&lt;S&gt;</kbd> (where <kbd>&lt;F&gt;</kbd> means
family and <kbd>&lt;S&gt;</kbd> means font style), once having
@@ -249,22 +323,14 @@ entered
<span class="pre-in-pp" style="margin-bottom: -1em;">
.FAMILY H
</span>
-or
-<span class="pre-in-pp" style="margin-top: -.5em;">
- .FAM H
-</span>
-you can access any of those Helvetica fonts simply by passing the
-correct argument to
-<a href="typesetting.html#font">FT</a>.
-from the list, above.
-</p>
-
-<p>
-For example, if you were working in Medium Roman
-(<kbd>.FT&nbsp;R</kbd>) and you needed Medium Condensed Italic for a
-while (assuming it&#8217;s installed), you&#8217;d just type
+you can access any of the extra Helvetica fonts simply by passing
+the correct argument to
+<a href="typesetting.html#font">FT</a>
+from the list, above. For example, if you were working in Medium
+Roman (<kbd>.FT&nbsp;R</kbd>) and you needed Medium Condensed Italic
+for a while (assuming it&#8217;s installed), you&#8217;d just type
<br/>
-<span class="pre-in-pp">
+<span class="pre-in-pp" style="margin-bottom: -1em;">
.FT CDI
</span>
to access the Medium Condensed Italic font from the Helvetica
@@ -273,43 +339,36 @@ family.
<p>
Mom&#8217;s list of font styles doesn&#8217;t pretend to be
-exhaustive, but rather tries to cover the basic weight/shape
-combinations likely to be found in any reasonably complete type
-family.
-</p>
-
-<p>
-The actual extension names are arbitrary and can be used in a
+exhaustive. The extension names are arbitrary and can be used in a
flexible manner. For example, if you create a family that has a
-DemiBold font (<b>DB</b>) but no Bold font (<b>B</b>), you might
-find it more convenient to give the DemiBold font the extension
-&#8220;<b>B</b>&#8221;. Equally, if the family has an ExtraBold
-font, you might find it more convenient to use the extension
-&#8220;<b>HV</b>&#8221; (Heavy).
+Demibold font (<b>DB</b>) but no Bold font (<b>B</b>), you might
+find it more convenient to give the Demibold font the extension
+&#8220;<b>B</b>&#8221;.
</p>
<p id="register-style">
-However, you may, at needs, want to add to mom&#8217;s list of font
-styles. You can do this by editing the file, om.tmac (typical
-location: <kbd>&lt;prefix&gt;tmac/om.tmac</kbd>). Near the top,
-you&#8217;ll see lines of the form
+You may, at needs, want to add to mom&#8217;s list of font styles.
+You can do this by editing the file, om.tmac (typical location:
+<kbd>&lt;prefix&gt;/&lt;version&gt;/tmac/om.tmac</kbd>). Near the
+top, you&#8217;ll see lines of the form
<br/>
<span class="pre-in-pp">
+ .sty \n[.fp] XL \" Extra Light
.sty \n[.fp] L \" Light Roman
.sty \n[.fp] LI \" Light Italic
.sty \n[.fp] LCD \" Light Condensed Roman
</span>
Simply add your new font style by imitating what you see, above,
-and plugging in your new font style (having, of course, first
-created the font, correctly named, in groff&#8217;s PostScript font
+and plugging in your new font style (having, of course,
+added the font to groff, correctly named).
directory; see
-<a href="#howto">How to create a PostScript font for use with groff</a>).
+<a href="#steps">Step-by-step instructions</a>).
</p>
<p>
For example, if you already have some fonts from the Univers family
-installed and have called the family <b>UN</b>, you might decide at
-some point to add the Bold Outline font (<b>UNBO</b>). In which
+installed and have called the family <b>Univers</b>, you might decide at
+some point to add the Bold Outline font (<b>UniversBO</b>). In which
case, you&#8217;d add
<br/>
<span class="pre-in-pp">
@@ -319,6 +378,19 @@ to the <kbd>.sty&nbsp;\n[.fp]&nbsp; &lt;font style&gt;</kbd> list
in om.tmac.
</p>
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+Mom&#8217;s font extensions are not &#8220;user-space&#8221;
+controllable via a macro. If you&#8217;ve been using groff for
+a long time, and have already rolled your own solution to adding
+families and fonts to groff, you may find that mom&#8217;s font
+extensions conflict with your own scheme. Should that be the case,
+comment out the <kbd>.sty&nbsp;\n[.fp] &lt;font style&gt;</kbd>
+lines found near the top of the <kbd>om.tmac</kbd> file.
+</p>
+</div>
+
<div class="box-important">
<p class="tip">
<span class="important">Important:</span>
@@ -328,337 +400,370 @@ for example, conflicts with the Courier family (<b>CR</b>,
<b>CI</b>, <b>CB</b>, <b>CI</b>). Were you to create a font
style &#8220;<b>C</b>&#8221;, thinking that <kbd>.FT&nbsp;C</kbd>
would give you access to font style once you&#8217;d given a
-<kbd>.FAM(ILY)</kbd> directive, you&#8217;d get a nasty surprise:
+<kbd>.FAMILY</kbd> directive, you&#8217;d get a nasty surprise:
your type would come out in Courier Roman!
</p>
</div>
-<div class="box-tip">
-<p class="tip">
-<span class="note">Note:</span>
-Mom&#8217;s font extensions are not &#8220;user-space&#8221;
-controllable via a macro. If you&#8217;ve been using groff for
-a long time, and have already rolled your own solution to adding
-PostScript families, fonts, weights, shapes, etc. to groff, you may
-find that mom&#8217;s font extensions conflict with your own scheme.
-Should that be the case, comment out the <kbd>.sty&nbsp;\n[.fp] &lt;font
-style&gt;</kbd> lines found near the top of the <kbd>om.tmac</kbd>
-file.
-</p>
-</div>
-
<div class="rule-medium"><hr/></div>
-<h2 id="howto" class="docs">How to create a PostScript font for use with groff</h2>
+<h2 id="steps" class="docs">Step-by-step instructions</h2>
+
+<div>
+<ul class="no-enumerator" style="margin-left: -1.5em;">
+ <li><a href="#need">What you need before you start</a></li>
+ <li><a href="#preparation">Initial preparation</a></li>
+ <li><a href="#step-1">1. Acquire the font</a></li>
+ <li><a href="#step-2">2. Prepare to convert the font to the correct format</a>
+ <ul style="margin-left: -.5em">
+ <li><a href="#ttf">TTF fonts</a></li>
+ <li><a href="#type1">Type 1 fonts</a></li>
+ </ul></li>
+ <li><a href="#step-3">3. Convert the font and put it in the right place</a></li>
+ <li><a href="#step-4">4. Update the download file</a>
+ <ul style="margin-left: -.5em">
+ <li><a href="#internal">Get the internal font name</a></li>
+ <li><a href="#add">Add the font to the download file</a></li>
+ <li><a href="#gropdf-download">Updating the gropdf download file</a></li>
+ </ul></li>
+ <li><a href="#groff-font-names">Naming groff fonts</a>
+ <li><a href="#install-font">Automate the whole process &ndash; the install-font script</a>
+ </ul></li>
+</ul>
+</div>
+
<p>
-These instructions aren&#8217;t meant to cover all possibilities, merely
-to present one way of making PostScript families/fonts available to
-groff and mom.
+There are a number of ways to approach making fonts available
+to groff. These instructions aren&#8217;t meant to cover all
+possibilities, merely one.
</p>
<p>
-GNU/Linux distributions being what they are, directory locations may
-differ and the presence of some executables can&#8217;t be guaranteed.
-I run a Debian system. The instructions reflect that. Users of
-other distros will have to interpret them according to the way their
-distro operates.
+GNU/Linux distributions being what they are, directory locations
+may differ and the presence of some executables can&#8217;t be
+guaranteed. I run a Debian-based system. The instructions reflect
+that. Users of other distros may have to interpret them according
+to the way their distro operates.
</p>
-<h3 class="docs appendices">1. What you need before you start</h3>
+<h3 id="need" class="docs appendices">What you need before you start</h3>
<ul style="margin-top: 1em; margin-left: -.5em;">
<li>groff, version 1.18 or higher<br/>
(Debian package: groff)
</li>
- <li>a full installation of ghostscript and associated tools<br/>
- (suggested Debian package: ghostscript-x)
- </li>
- <li>a library of PostScript fonts<br/>
- (suggest Debian packages: gsfonts, gsfonts-x11, gsfonts-other)
- </li>
- <li>a utility for converting TrueType fonts to Type1 fonts<br/>
- (Debian package: ttf2pt1)
+ <li>ghostscript<br/>
+ (Debian package: ghostscript or ghostscript-x)
</li>
- <li>a font manager<br/>
- (Debian packages: defoma, psfontmgr)
+ <li>fontforge<br/>
+ (Debian package: fontforge)
</li>
- <li>perl<br/>
- (Debian package: perl)
- </li>
</ul>
-<p style="margin-top: -.5em;">
-A reasonably complete installation of any major GNU/Linux distro
-should already have these on your system, except perhaps for the
-utility to convert TrueType fonts to Type1 fonts (<b>ttf2pt2</b>).
-</p>
-
-<h3 class="docs appendices">2. Initial preparation (you only need do this once)</h3>
-
-<ol style="margin-left: -.5em;">
- <li>If you don&#8217;t already have one, create a directory in
- your home directory to hold new fonts. Any directory name
- will do. I use <kbd>~/Fonts</kbd>, with subdirectories for
- <kbd>Type1</kbd>, <kbd>TrueType</kbd> and <kbd>Groff</kbd>
- fonts. Thus,
- <br/>
- <span class="pre-in-pp">
- ~/Fonts/Type1
- ~/Fonts/TrueType
- ~/Fonts/Groff
- </span>
- </li>
- <li id="site-font" style="margin-top: -2em;">Locate the groff
- directory, <kbd>site-font</kbd>. The exact location is
- difficult to predict, owing to differences between distros and
- whether you&#8217;re using a pre-packaged groff or have built
- it from source. Some typical locations are:
- <br/>
- <span class="pre-in-pp" style="margin-bottom: -2em;">
- /usr/share/groff
- /usr/local/share/groff
- /etc/groff
- </span>
- If you can&#8217;t find the site-font directory, locate
- groff&#8217;s <kbd>site-tmac</kbd> directory, and, as
- root, create site-font in the same directory as the
- one that holds site-tmac. E.g., if you find site-tmac
- in <kbd>/usr/share/groff</kbd>, create site-font in
- <kbd>/usr/share/groff</kbd>.
- </li>
- <li style="margin-top: .5em;">Locate the file
- <kbd>&lt;prefix&gt;/font/devps/generate/textmap</kbd> and
- symlink it to the name <kbd>textmap</kbd> in the directory
- that contains your personal collection of PostScript fonts.
- (See the
- <a href="#small-note">note</a>,
- above, for the meaning of <kbd>&lt;prefix&gt;</kbd>). On my
- system, at the time of writing, <kbd>&lt;prefix&gt;</kbd>
- is
- <br/>
- <span class="pre-in-pp" style="margin-bottom: -2em;">
- /usr/local/share/groff/1.20.1/
- </span>
- therefore, I symlink it in <kbd>~/Fonts/Type1/</kbd> with
- <br/>
- <span class="pre-in-pp">
- ln -s /usr/local/share/groff/1.20.1/font/devps/generate/textmap textmap
- </span>
- </li>
- <li style="margin-top: -2em;">Locate the file
- <kbd>&lt;prefix&gt;/font/devps/text.enc</kbd> and
- symlink it to the name <kbd>text.enc</kbd> in your personal
- font directory. On my system, in <kbd>~/Fonts/Type1/</kbd>
- <br/>
- <span class="pre-in-pp">
- ln -s /usr/local/share/groff/1.19.2/font/devps/text.enc text.enc
- </span>
+<h3 id="preparation" class="docs appendices">Initial preparation (you only need do this once)</h3>
+
+<ol id="site-font" style="margin-left: -1em;">
+ <li>
+ Locate the groff directory,
+ <kbd>site-font</kbd>. The exact location is
+ difficult to predict, owing to differences between distros and
+ whether you&#8217;re using a pre-packaged groff or have built
+ it from source. Some typical locations are:
+ <br/>
+ <span class="pre-in-pp" style="margin-bottom: -2em;">
+ /usr/share/groff/
+ /usr/local/share/groff/
+ /etc/groff/
+ </span>
+ If you can&#8217;t find the site-font directory, locate
+ groff&#8217;s <kbd>site-tmac</kbd> directory, and, as root,
+ create site-font in the same directory. Eg, if you find
+ site-tmac in <kbd>/usr/share/groff/</kbd>, create site-font in
+ <kbd>/usr/share/groff/</kbd>
+ <br/>
+ <span class="pre-in-pp" style="margin-bottom: -2em;">
+ sudo mkdir site-font
+ </span>
</li>
- <li style="margin-top: -2em;">Make sure you know which
- directory holds your PostScript fonts. You&#8217;ll need the
- information later. On a Debian box, a typical location is
- <kbd>/usr/share/fonts/type1/gsfonts</kbd>
- </li>
-</ol>
+ <li>
+ Create two files, generate-t42.pe and generate-pfa.pe,
+ as you see them below. Place them in a convenient and
+ easily-remembered location, like your home directory.
+ <br/>
+ <span class="examples" style="font-size: 95%; display: block; margin-top: .5em;">generate-t42.pe</span>
+
+ <div class="examples-container" style="margin-top: 0; margin-bottom: -1em; padding-bottom: 1em;">
+<span class="pre">
+# generate-t42.pe
-<h3 class="docs appendices">3. Font creation/installation</h3>
-
-<ol style="margin-left: -.5em/">
- <li>Acquire the font as either Type1 (.pfb) or TrueType (.ttf).</li>
- <li style="margin-top: .5em;">Place the font in your personal font directory; for me,
- that&#8217;s
- <br/>
- <span class="pre-in-pp" style="margin-bottom: -2.5em;">
- ~/Fonts/Type1
- </span>
- or
- <br/>
- <span class="pre-in-pp" style="margin-top: -.5em; margin-bottom: -2em;">
- ~/Fonts/TrueType
- </span>
- </li>
- <li>In your personal font directory, run one of the following.
- <ul style="margin-left: -1.5em;">
- <li style="margin-top: .5em;">for <b>Type1 fonts</b>:
- <br/>
- <span class="pre-in-pp" style="margin-bottom: -2em;">
- getafm fontfilename.pfb | gsnd - > fontfilename.afm
- </span>
- <i>(This generates something called
- an .afm (Adobe Font Metrics) file from the .pfb file, which is required to
- create PostScript fonts for groff.)</i>
- </li>
- <li style="margin-top: .5em;">for <b>TrueType fonts</b>:
- <br/>
- <span class="pre-in-pp" style="margin-bottom: -2em;">
- ttf2pt1 \-b fontfilename.ttf
- </span>
- <i>(For TrueType fonts, this generates a PostScript .pfb file
- as well as an .afm file.)</i>
- </li>
- </ul></li>
- <li style="margin-top: .5em;">Still in your personal font directory, run
- <br/>
- <span class="pre-in-pp" style="margin-bottom: -2em;">
- afmtodit -e text.enc fontfilename.afm textmap &lt;GROFF_FONTNAME&gt;
- </span>
- <p id="groff-font-name" style="margin-top: .25em;">
- Q: <i>How do I choose a</i> <kbd>GROFF_FONTNAME</kbd><i>?</i>
- </p>
-
- <p>
- A: Start by considering the
- <a href="definitions.html#family">family</a>
- to which the font belongs. If you&#8217;re adding to a family
- that already exists in groff&#8217;s
- <kbd>&lt;prefix&gt;/font/devps</kbd> directory, that will be
- the first part of the font name. (See
- <a href="typesetting.html#family">here</a>
- for a list of families already installed, along with their
- groff names.) Add to that name the appropriate weight/style
- extension, listed
- <a href="#style-extensions">here</a>.
- </p>
-
- <p>
- For example, if you&#8217;re adding Helvetica Light Roman,
- your <kbd>GROFF_FONTNAME</kbd> would be <kbd>HL</kbd>.
- If you&#8217;re adding Helvetica Light Italic, your
- <kbd>GROFF_FONTNAME</kbd> would be <kbd>HLI</kbd>.
- </p>
-
- <p>
- If you&#8217;re adding a font not already in groff&#8217;s
- PostScript families, first choose a meaningful name for the
- <a href="definitions.html#family">family</a>
- to which the font belongs. The name can be anything you like.
- If, for example, the family is Garamond, you could choose
- <kbd>GARAMOND</kbd>, <kbd>GARA</kbd>, <kbd>GD</kbd>, or even
- just plain G as the family name. Then tack on the appropriate
- style/weight extension. Thus, if you were installing Garamond
- Bold Condensed Italic and had chosen <kbd>GD</kbd> as the
- family name for Garamond, your <kbd>GROFF_FONTNAME</kbd> would
- be <kbd>GDBCDI</kbd>.
- </p>
-
- <p>
- In mom, you can then access the Garamond family with
- <kbd>.FAM GD</kbd>, and the Bold Condensed Italic font wth
- <kbd>.FT&nbsp;BCDI</kbd>.
- </p>
-
- <div class="box-tip">
- <p class="tip">
- <span class="note">Note:</span>
- The family name need not be in upper case, and there&#8217;s
- no limit to the length of the name. &#8220;Garamond&#8221;,
- for example, could be the name you give the Garamond
- family. In fact, you might find it preferable, since a) you
- wouldn&#8217;t have to remember how you&#8217;d named the
- family, and b) should you be scanning your
- <a href="#site-font">site-font directory</a>,
- something like GaramondBCDI will be more meaningful than,
- say, GDBCDI.
- </p>
- </div>
- </li>
- <li>Copy or move <kbd>GROFF_FONTNAME</kbd> to your
- <a href="#site-font">site-font directory</a>,
- or change to the site-font directory and make a symlink to
- <kbd>GROFF_FONTNAME</kbd> in your personal directory.
- </li>
- <li style="margin-top: .5em;">Copy or move the .pfb file to the directory that
- holds your PostScript fonts, or change to that directory and
- make a symlink to the .pfb file in your personal directory.
+Open($1);
+Generate($fontname + ".pfa");
+Generate($fontname + ".t42");
+</span>
+ </div>
+ <br/>
+ <span class="examples" style="font-size: 95%; display: block; margin-top: .5em;">generate-pfa.pe</span>
+ <div class="examples-container" style="margin-top: 0; padding-bottom: 1em;">
+<span class="pre">
+# generate-pfa.pe
+
+Open($1);
+Generate($fontname + ".pfa");
+</span>
+ </div>
</li>
</ol>
+<h3 id="step-1" class="docs appendices">Step 1: Acquire the font</h3>
+
+<p class="top">
+The two most commonly available types of fonts are PostScript Type1
+(extension .pfb) and TrueType (extension .ttf). Either can be made
+available to groff. There are many websites holding collections of
+both.
+</p>
+
+<h3 id="step-2" class="docs appendices">Step 2: Prepare to convert the font to the correct format</h3>
+
+<p class="top">
+Change into the directory holding the new font.
+</p>
+
<p>
-Written out in full, adding fonts looks like a lot of work. It
-isn&#8217;t. Basically, it&#8217;s just:
-</p>
-<ul style="margin-top: -.5em;">
- <li>generate an .afm (and .pfb if the font is TrueType)</li>
- <li>create the groff font</li>
- <li>put the groff font in<kbd> &lt;prefix&gt;/font/devps</kbd></li>
- <li>put the .pfb file (the actual font) with your other PostScript fonts</li>
-</ul>
+For convenience in the next step, make a symbolic link to
+the file 'textmap':
+<br/>
+<span class="pre-in-pp">
+ ln -s &lt;prefix&gt;/&lt;version&gt;/font/devps/generate/textmap .
+</span>
+See
+<a href="#small-note">here</a>
+for an explanation of &lt;prefix&gt;
+and &lt;version&gt;.
+</p>
<p>
-After you&#8217;ve done it a couple of times, it all makes sense
-and is really quite easy. Not to mention that once you understand
-the process, you can write a bash script to automate the process.
-Here&#8217;s an example, which you can adapt to your own needs.
-The script, for installing TrueType fonts, requires an argument (the
-.ttf filename), then prompts for a family directory name (e.g.
-AmericanTypewriter or Futura) and a name to give the groff font
-(see
-<a href="#groff-font-name">here</a>
-for suggestions concerning groff font naming.) The script assumes a
-<kbd>~/Font</kbd> directory with subdirectories <kbd>Type1</kbd>,
-<kbd>TrueType</kbd> and <kbd>Groff</kbd>.
-</p>
-
-<div class="examples" style="margin-bottom: 0px;">Code:</div>
-<div class="box-code" style="width: 726px; max-width: 726px; height: 400px; overflow: auto;">
-<span class="pre" style="color: #302419;">
-#!/bin/sh
-#
-# Converts .ttf file to .pfb and generates .afm
-# Moves the .afm and .pfb to $HOME/Fonts/Type1
-# Generates a groff font from the .afm file and installs it
-# in $HOME/Fonts/Groff
-# Symlinks the groff font to groff's site-font/devps directory
-# Symlinks the .afm and .pfb to /usr/share/fonts/type1/gsfonts
-#
-
-FONT=`basename $1 .ttf`
-FONTDIR="$HOME/Fonts/TrueType"
-T1_FONTDIR="$HOME/Fonts/Type1"
-GS_FONTDIR="/usr/share/fonts/type1/gsfonts"
-GROFF_SITE_FONTDIR="/usr/local/share/groff/site-font/devps"
-GROFF_FONTS="$HOME/Fonts/Groff"
-TEXTMAP="$T1_FONTDIR/textmap"
-TEXTENC="$T1_FONTDIR/text.enc"
-
-echo -n "Family directory name: "
-read FAMILYDIR
-
-if [ ! -d "$T1_FONTDIR/$FAMILYDIR" ] ; then
- echo "Creating $FAMILYDIR in $T1_FONTDIR"
- mkdir $T1_FONTDIR/$FAMILYDIR
-fi
-
-echo -n "Groff name for this font: "
-read FONTNAME
-
-echo "Creating .pfb and .afm files from $FONT.ttf"
-(ttf2pt1 \-b $FONT.ttf)
-
-echo "Moving .afm and .pfb file to $T1_FONTDIR/$FAMILYDIR.."
-mv $FONT.afm $T1_FONTDIR/$FAMILYDIR
-mv $FONT.pfb $T1_FONTDIR/$FAMILYDIR
-
-echo "Changing to $T1_FONTDIR/$FAMILYDIR.."
-cd $T1_FONTDIR/$FAMILYDIR
-
-echo "Creating $FONTNAME.."
-afmtodit -e $TEXTENC $T1_FONTDIR/$FAMILYDIR/$FONT.afm $TEXTMAP $FONTNAME
-mv -i $FONTNAME $GROFF_FONTS
-echo "Linking $FONTNAME in $GROFF_SITE_FONTDIR.."
-sudo ln -s $GROFF_FONTS/$FONTNAME $GROFF_SITE_FONTDIR/$FONTNAME
-
-echo "Linking $FONT.pfb and $FONT.afm in $GS_FONTDIR.."
-cd $GS_FONTDIR
-sudo ln -s $T1_FONTDIR/$FAMILYDIR/$FONT.afm $FONT.afm
-sudo ln -s $T1_FONTDIR/$FAMILYDIR/$FONT.pfb $FONT.pfb
-
-echo "Font installation complete"
-
-exit 0
+In addition, unless you're installing fonts from your home
+directory, make links to the files 'generate-t42.pe' and
+'generate-pfa.pe'.
+<br/>
+<span class="pre-in-pp">
+ ln -s $HOME/generate-t42.pe .
+ ln -s $HOME/generate-pfa.pe .
+</p>
+
+<h3 id="step-3" class="docs appendices">Step 3: Convert the font and put it in the right place</h3>
+
+<p class="top">
+TrueType fonts (.ttf) need to be converted to .t42. Type 1 fonts
+(.pfb) need to be converted to .pfa.
+</p>
+
+<h4 id="ttf" class="docs" style="font-size: 90%; text-transform: uppercase;">&nbsp;&bullet;&nbsp;TTF Fonts</h4>
+
+<p class="top" style="margin-top: .5em;">
+For .ttf fonts, run
+<br/>
+<span class="pre-in-pp">
+ fontforge -script generate-t42.pe &lt;file&gt;.ttf
</span>
-</div>
+This will create three new files with the extensions .t42, .pfa, and
+.afm. Next, run
+<br/>
+<span class="pre-in-pp">
+ afmtodit &lt;afm file&gt; textmap &lt;groff font&gt;
+</span>
+This will create a groff font with the name you give. (See
+<a href="#groff-font-names">here</a>
+for advice on naming groff fonts.)
+</p>
+
+<p>
+Move the .t42 and groff font files to
+<kbd>&lt;prefix&gt;/site-font/devps/</kbd>.
+</p>
+
+<p>
+If you're running a recent version of groff that includes
+the native pdf device (gropdf), move the .pfa file to
+<kbd>&lt;prefix&gt;/&lt;version&gt;/font/devpdf/</kbd>. If not, you
+may safely remove it. You may also safely remove the .afm file.
+</p>
+
+<h4 id="type1" class="docs" style="font-size: 90%; text-transform: uppercase;">&nbsp;&bullet;&nbsp;Type1 Fonts</h4>
+
+<p class="top" style="margin-top: .5em;">
+For .pfb fonts, run
+<br/>
+<span class="pre-in-pp">
+ fontforge -script generate-pfa.pe &lt;file&gt;.ttf
+</span>
+This will create two new files with the extensions .pfa, and .afm.
+Next, run
+<br/>
+<span class="pre-in-pp">
+ afmtodit &lt;afm file&gt; textmap &lt;groff font&gt;
+</span>
+Move the .pfa and groff font files to
+<kbd>&lt;prefix&gt;/&lt;site-font&gt;/devps/</kbd>.
+(See
+<a href="#groff-font-names">here</a>
+for advice on naming groff fonts.)
+</p>
+
+<p>
+If you're running a recent version of groff that includes the
+native pdf device (gropdf), link the .pfa and groff font files,
+now in <kbd>&lt;prefix&gt;/&lt;site-font&gt;/devps/</kbd>,
+to the devpdf directory</kbd>. Start by changing into the
+<kbd>&lt;prefix&gt;/&lt;version&gt;/font/devpdf/</kbd> directory,
+then:
+<br/>
+<span class="pre-in-pp">
+ ln -s &lt;prefix&gt;/&lt;version&gt;/font/devps/&lt;file&gt;.pfa .
+ ln -s &lt;prefix&gt;/&lt;version&gt;/font/devps/&lt;groff font&gt; .
+</span>
+You may safely remove the .afm file.
+</p>
+
+<h3 id="step-4" class="docs appendices">Step 4: Update the download file</h3>
+
+<h4 id="internal" class="docs" style="font-size: 90%; text-transform: uppercase;">&nbsp;&bullet;&nbsp;Get the internal font name</h4>
+
+<p class="top" style="margin-top: .5em;">
+Inspect your new groff font file. Near the top, you will see a line
+of the form
+<br/>
+<span class="pre-in-pp">
+ internalname &lt;name&gt;
+</span>
+Usually, the internal name is helpfully descriptive, eg,
+<br/>
+<span class="pre-in-pp">
+ internalname Optima-Bold
+</span>
+Make a note of the internal name.
+</p>
+
+<h4 id="add" class="docs" style="font-size: 90%; text-transform: uppercase;">&nbsp;&bullet;&nbsp;Add the font to the download file</h4>
+
+<p class="top" style="margin-top: .5em;">
+Open the file <kbd>&lt;prefix&gt;/&lt;version&gt;/font/devps/download</kbd>.
+In it you will see lines of the form
+<br/>
+<span class="pre-in-pp">
+ Symbol-Slanted symbolsl.pfa
+ ZapfDingbats-Reverse zapfdr.pfa
+ FreeEuro freeeuro.pfa
+</span>
+where the spaces are the tab character from the keyboard, not
+literal spaces. Thus,
+<br/>
+<span class="pre-in-pp">
+ Symbol-Slanted symbolsl.pfa
+</span>
+is really
+<br/>
+<span class="pre-in-pp">
+ Symbol-Slanted&lt;tab&gt;symbolsl.pfa
+</span>
+</p>
+
+<p>
+The download file maps the internal names used by groff to the
+actual fonts. To add your new font to the download file, append a
+line containing the internal name, followed by a tab (make sure your
+text editor is inserting the tab character, not spaces), followed by
+the .t42 or .pfa font to which the internal name refers.
+</p>
+
+<p>
+For example, if the internal name is Optima-Bold and the font is a
+.pfa file called Optima-Bold.pfa, your updated download file will
+contain
+<br/>
+<span class="pre-in-pp">
+ Optima-Bold&lt;tab&gt;Optima-Bold.pfa
+</span>
+</p>
+
+<h4 id="gropdf-download" class="docs" style="font-size: 90%; text-transform: uppercase;">&nbsp;&bullet;&nbsp;Updating the gropdf download file</h4>
+
+<p class="top" style="margin-top: .5em;">
+If you're running a recent version of groff that includes the
+native pdf device (gropdf), you must update its download file as
+well, which is found in <kbd>&lt;prefix&gt;/&lt;version&gt;/font/devpdf/</kbd>.
+The instructions are identical to those above, but with one important
+difference: all lines must begin with a tab character. Thus, using
+our Optima example, your devpdf download line for the same font is
+<br/>
+<span class="pre-in-pp">
+ &lt;tab&gt;Optima-Bold&lt;tab&gt;Optima-Bold.pfa
+</span>
+</p>
+
+<h3 id="groff-font-names" class="docs appendices">Naming groff fonts</h3>
+
+<p class="top">
+For convenience when using mom, and to keep your font collection
+organized, choose meaningful groff font names following the scheme
+&lt;Family&gt;&lt;FONT&gt;, where Family is something
+like Optima or Univers or Clarendon, and FONT is either
+<br/>
+<span style="display: block; margin-left: 2em;">
+<kbd>R&nbsp;&nbsp;</kbd>(roman/regular)
+<br/>
+<kbd>I&nbsp;&nbsp;</kbd>(italic)
+<br/>
+<kbd>B&nbsp;&nbsp;</kbd>(bold)
+<br/>
+<kbd>BI&nbsp;</kbd>(bold italic)
+</span>
+or one of the 1&ndash;5 character fontstyles listed
+<a href="#style-extensions">here</a>.
+Thus, for the fonts Optima Light Italic and Optima Extra Black, your font names would be
+<br/>
+<span class="pre-in-pp">
+ OptimaLI
+ OptimaXBL
+</span>
+This scheme allows you to enter <kbd>.FAMILY&nbsp;Optima</kbd> to make
+Optima the current family, and <kbd>.FT&nbsp;LI</kbd> or <kbd>.FT&nbsp;XBL</kbd>
+when you need the fonts Light Italic or Extra Black.
+</p>
+
+<p>
+Groff font names are, in fact, arbitrary; you can call your fonts
+anything you like, provided the
+<a href="#internal">internal name</a>
+in the
+<a href="#add">download file</a>
+matches the internal name found in the groff font file. When
+calling a font that does not follow the recommended naming convention,
+you must pass the full font name to <kbd>.FT</kbd> whenever you wish
+to use it.
+</p>
+
+<p>
+For example, the font, Goudy Stout, isn't really part of the
+Goudy family, and while "stout" describes it, Stout is not a
+recognized font style. Therefore, its groff name could simply be
+GoudyStout, and whenever you needed it, you could call it with
+<kbd>.FT&nbsp;GoudyStout</kbd>.
+</p>
+
+<h3 id="install-font" class="docs appendices">Automate the whole process &ndash; the install-font script</h3>
+
+<p>
+A bash script to make the entire process of installing fonts a
+painless no-brainer has been posted online at
+<a href="http://www.schaffter.ca/mom/install-font">http://www.schaffter.ca/mom/install-font</a>.
+Be sure to make the script executable
+(<kbd>chmod 755 install-font</kbd>)
+after you download it, then type <kbd>./install-font -H</kbd> for
+usage.
+</p>
<div class="rule-medium" style="margin-top: 2em;"><hr/></div>
@@ -708,7 +813,7 @@ and a 250 meg hard disk.
<p>
However, groff has always had a liability: it&#8217;s incredibly geeky.
-Owing to its very long history, it&mdash;and its &#8220;power users&#8221;
+Owing to its very long history, it&mdash;and its power users
&mdash;seem to have remained stuck in a time warp. The canonical macro packages
still look as they did back in those decades when memory was exorbitantly
expensive and every byte mattered.
@@ -741,11 +846,11 @@ scratching.
<div class="box-tip">
<p class="tip">
-<span class="note">Addendum:</span>
-As of version 1.4-a, the main macro file, om.tmac, is now stripped
-of comments when groff is built from sources. om.tmac in the sources
-themselves still contains the comments, as do the tarballs posted on
-mom&#8217;s homepage.
+<span class="note">Note:</span>
+The main macro file, <strong>om.tmac</strong>, is stripped of
+comments when groff is built from sources. <strong>om.tmac</strong>,
+in the sources themselves, still contains the comments, as do the
+tarballs posted on mom&#8217;s homepage.
</p>
</div>
@@ -756,21 +861,19 @@ mom&#8217;s homepage.
<h2 id="contact" class="docs">Contact the author</h2>
<p>
-If you have any questions or comments about mom,
-suggestions to make, criticisms to offer, or bugs to report, use the
-groff mailing list at
-<a href="mailto:groff@ffii.org">groff@ffii.org</a>
-(subscription information available
-<a href="http://ffii.org/mailman/listinfo/groff/">here</a>)
-or contact me, Peter Schaffter, directly at of the following
+If you have any questions or comments about mom, suggestions to
+make, criticisms to offer, or bugs to report, use the groff mailing
+list (subscription information available
+<a href="http://www.gnu.org/software/groff/groff.html">here</a>)
+or contact me, Peter Schaffter, directly at the following
address:
<br/>
<span class="pre-in-pp">
&#112;&#101;&#116;&#101;&#114;&#64;&#115;&#99;&#104;&#97;&#102;&#102;&#116;&#101;&#114;&#46;&#99;&#97;
</span>
-Please include the word &#8220;mom&#8221; or &#8220;groff&#8221; in the
-Subject: line of any message sent to my personal address, or you
-risk the wrath of my implacable spam filters. :)
+Please include the word &#8220;mom&#8221; or &#8220;groff&#8221; in
+the Subject line of any message sent to my personal address or you
+risk the wrath of my implacable spam filters.
</p>
<p>
@@ -790,8 +893,7 @@ typeset with mom and groff.
<table style="width: 100%; margin-top: 12px;">
<tr>
<td style="width: 33%;"><a href="toc.html">Back to Table of Contents</a></td>
- <td style="width: 33%; text-align: center;"><a href="#top">Top</a></td>
- <td style="width: 33%; text-align: right;"><a href="reserved.html">Next: Reserved words</a></td>
+ <td style="width: 100%; text-align: right;"><a href="#top">Top</a></td>
</tr>
</table>
diff --git a/contrib/mom/momdoc/color.html b/contrib/mom/momdoc/color.html
index 45e7416..e05941a 100644
--- a/contrib/mom/momdoc/color.html
+++ b/contrib/mom/momdoc/color.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
diff --git a/contrib/mom/momdoc/cover.html b/contrib/mom/momdoc/cover.html
index e1b4d3e..f65f45e 100644
--- a/contrib/mom/momdoc/cover.html
+++ b/contrib/mom/momdoc/cover.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -70,9 +72,8 @@ FDL in the main directory of the groff source package.
<p>
Though identical in treatment, mom provides two kinds of cover
-pages: section cover pages (which I shall refer to simply as
-cover pages) and document cover pages (&#8221;doc
-covers&#8221;).
+pages: document cover pages (&#8221;doc covers&#8221;), and section
+cover pages (which I shall refer to simply as cover pages).
</p>
<p>
@@ -86,7 +87,7 @@ first cover page.
<p>
A cover is what you&#8217;d use for pages that separate sections
-of a collated document, i.e. title pages. A cover page (but not a
+of a collated document, ie title pages. A cover page (but not a
doc cover) in a collated document could, for example, simply read:
&#8221;PART 1&#8221;.
</p>
@@ -137,7 +138,7 @@ arguments you pass to
and/or
<a href="#cover">DOC_COVER</a>.
Provided you have already given mom the appropriate reference macros
-(e.g.
+(eg
<a href="docprocessing.html#title">TITLE</a>
or
<a href="docprocessing.html#author">AUTHOR</a>),
@@ -238,16 +239,17 @@ Macro: <b>DOC_COVER</b> <kbd class="macro-args">(see required and optional argum
</div>
<div style="margin-top: .5em; padding-bottom: 3px; white-space: nowrap; overflow: auto;">
-<b><a href="#optional-args">Optional arguments:</a></b> <kbd class="macro-args">[ SUBTITLE AUTHOR DOCTYPE COPYRIGHT MISC BLANKPAGE ]</kbd>
+<b><a href="#optional-args">Optional arguments:</a></b> <kbd class="macro-args">[ SUBTITLE AUTHOR DOCTYPE COPYRIGHT MISC BLANKPAGE PDF_OUTLINE_LABEL &lt;label&gt; ]</kbd>
</div>
<div class="box-tip">
<p class="tip">
<span class="note">Note:</span>
-These macros should be placed in the
-&#8220;style-sheet&#8221; section of your document setup (see
+These macros should be placed in the style sheet section of your
+document setup (see
<a href="docprocessing.html#docprocessing-tut">Tutorial &ndash; Setting up a mom document</a>),
-i.e. after PRINTSTYLE (and/or DOCTYPE and/or COPYSTYLE), but before START.
+ie after PRINTSTYLE (and/or DOCTYPE and/or COPYSTYLE), but before
+START.
</p>
</div>
@@ -275,7 +277,7 @@ prefer) containing just the name of the section.
<p>
Both COVER and DOC_COVER, whenever invoked, require a first
argument, as listed above. This first argument will become the
-first bit of information mom prints on the cover or doc cover (i.e.
+first bit of information mom prints on the cover or doc cover (ie
the title).
</p>
@@ -377,27 +379,8 @@ The remainder of the arguments to COVER and
DOC_COVER are optional. They refer specifically to
the information you gave the
<a href="docprocessing.html#reference-macros">reference macros</a>
-bearing the same name as the arguments.
-</p>
-
-<p>
-You may enter as many or as few as you would like to see on your
-cover or doc cover. The only hitch is&mdash;pay attention,
-class&mdash;they must be entered in the order given above.
-For example, if you want <kbd>TITLE</kbd>, <kbd>AUTHOR</kbd>,
-<kbd>COPYRIGHT</kbd> and <kbd>MISC</kbd>
-<br/>
-<span class="pre-in-pp">
- .COVER TITLE AUTHOR COPYRIGHT MISC
-</span>
-
-is correct, while
-<br/>
-<span class="pre-in-pp">
- .COVER TITLE AUTHOR MISC COPYRIGHT
-</span>
-
-is not.
+bearing the same name as the arguments. You may enter as many or as
+few as you like, in any order.
</p>
<h5 id="doctype" class="docs" style="text-transform: none; margin-top: -.5em;">What the DOCTYPE argument means</h5>
@@ -438,6 +421,16 @@ though no page number appears on it. Otherwise, blank pages are
invisible to mom's pagination.
</p>
+<h5 id="pdf-label" class="docs" style="text-transform: none; margin-top: -.5em;">What the PDF_OUTLINE_LABEL argument means</h5>
+
+<p>
+By default, mom identifies doccovers in the outline panel of PDF
+viewers with the prepended string, &#8220;Cover:&#8221;, and covers
+with the string &#8220;Title Page:&#8221;. If you would like
+to change the strings, pass the <kbd>PDF_OUTLINE_LABEL</kbd>
+argument to COVER or DOCCOVER, along with the new string.
+</p>
+
<!-- -ENABLING/DISABLING- -->
<div class="macro-id-overline">
diff --git a/contrib/mom/momdoc/definitions.html b/contrib/mom/momdoc/definitions.html
index 0c26715..192c4cc 100644
--- a/contrib/mom/momdoc/definitions.html
+++ b/contrib/mom/momdoc/definitions.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -131,9 +133,10 @@ or concept you&#8217;re not familiar with.
<a href="#header">Header</a><br/>
<a href="#linebreak">Linebreak</a><br/>
<a href="#parahead">Paragraph head</a><br/>
+ <a href="#pdflink">PDF link</a><br/>
+ <a href="#pdfoutline">PDF outline</a><br/>
<a href="#quote">Quote</a><br/>
<a href="#running">Running text</a><br/>
- <a href="#subhead">Subhead</a><br/>
<a href="#toggle">Toggle</a><br/>
</td>
</tr>
@@ -193,10 +196,7 @@ or concept you&#8217;re not familiar with.
Discretionary hyphens make sure it does. In the event that the
word doesn&#8217;t need to be hyphenated at all, groff leaves them
alone. In groff, the discretionary hyphen is entered with
-
- <span class="pre" style="margin-bottom: -2em;">
- \% (backslash followed by a percent)
- </span>
+ <kbd>\%</kbd> (ie, a backslash followed by the percent sign).
</dd>
<dt id="dropcap">Drop cap</dt>
@@ -219,7 +219,7 @@ or concept you&#8217;re not familiar with.
<a href="#font">font</a>.
Since most Ms are designed square, an em is usually (but
sometimes erroneously) considered to be the same size as the
- current point size (i.e. if the point size of the type is 12,
+ current point size (ie if the point size of the type is 12,
one em equals 12 points). An en is equal to the width of a
letter N (historically 2/3 of an em, although groff treats an en
as 1/2 of an em). Typically, ems and ens are used to measure
@@ -230,7 +230,7 @@ or concept you&#8217;re not familiar with.
<dd>
The collective name by which a collection of
<a href="#font">fonts</a>
- are known, e.g. Helvetica, Times Roman, Garamond.
+ are known, eg Helvetica, Times Roman, Garamond.
</dd>
<dt id="figurespace">Figure space/Digit space</dt>
@@ -239,11 +239,7 @@ or concept you&#8217;re not familiar with.
<a href="#fixedwidthspace">fixed width space</a>
that has the width of one digit. Used for aligning numerals in,
say, columns or numbered lists. In groff, the figure space is
- entered with
-
- <span class="pre" style="margin-bottom: -2em;">
- \0 (backslash followed by a zero)
- </span>
+ entered with <kbd>\0</kbd> (ie a backslash followed by a zero)
</dd>
<dt id="fixedwidthfont">Fixed width font</dt>
@@ -260,9 +256,7 @@ or concept you&#8217;re not familiar with.
but does not expand or contract when text is
<a href="#just">justified</a>.
In groff, fixed width space is entered with
-
- <span class="pre" style="margin-bottom: -2em;">
- \&lt;space&gt; (backslash followed by hitting the spacebar)
+ <kbd>\&lt;space&gt;</kbd> (ie a backslash followed by a space)
</span>
</dd>
@@ -274,7 +268,7 @@ or concept you&#8217;re not familiar with.
<a href="#shape">shape</a>
of type within a
<a href="#family">family</a>,
- e.g. light, medium, bold (which are weights), and roman, italic,
+ eg light, medium, bold (which are weights), and roman, italic,
condensed (which are shapes). By default, groff knows of four
fonts within its default set of families: R (medium roman), I
(medium italic), B (bold roman) and BI (bold italic).
@@ -436,13 +430,13 @@ or concept you&#8217;re not familiar with.
</p>
<ul style="margin-top: -.5em; margin-bottom: -.5em">
- <li>&#8220;Roman&#8221;, which has no slant, and has letterforms of
+ <li>Roman, which has no slant, and has letterforms of
average width</li>
- <li>&#8220;Italic&#8221;, which is slanted, and has letterforms
+ <li>Italic, which is slanted, and has letterforms
of average width</li>
- <li>&#8220;Condensed&#8221;, which has no slant, but has
+ <li>Condensed, which has no slant, but has
letterforms narrower than the average represented by Roman</li>
- <li>&#8220;Condensed Italic&#8221;, which is slanted, with letterforms narrower
+ <li>Condensed Italic, which is slanted, with letterforms narrower
than average</li>
</ul>
@@ -460,7 +454,7 @@ or concept you&#8217;re not familiar with.
<dd>
When no
<a href="#leading">lead</a>
- is added between lines of type (i.e. the
+ is added between lines of type (ie the
<a href="#ps">point size</a>
and linespacing are the same), the lines are said to be &#8220;set
solid.&#8221;
@@ -484,11 +478,8 @@ or concept you&#8217;re not familiar with.
kept together on the same line. Expands and contracts like word
space. Useful for proper names, which one should, whenever
possible, avoid splitting onto two lines. In groff, unbreakable
- space is entered with
-
- <span class="pre" style="margin-bottom: -2em;">
- \~ (backslash followed by a tilde)
- </span>
+ space is entered with <kbd>\~</kbd> (ie a backslash followed by a
+ tilde)
</dd>
<dt id="weight">Weight</dt>
@@ -499,7 +490,7 @@ or concept you&#8217;re not familiar with.
strokes slightly thinner than Medium or Book, but is still
acceptable for most text. Semibold, Bold, Heavy and Black all
have strokes of increasing thickness, making them suitable for
- heads, subheads, headlines and the like.
+ headings and the like.
</dd>
<dt id="wordspace">Word space</dt>
@@ -561,14 +552,10 @@ or concept you&#8217;re not familiar with.
<dt id="commentlines">Comment Lines</dt>
<dd>
<a href="#inputline">Input lines</a>
- introduced with the comment character
-
- <span class="pre" style="margin-bottom: -2em;">
- \# (backslash followed by the pound sign)
- </span>
-
- When processing output, groff silently ignores everything on a
- line that begins with the comment character.
+ introduced with the comment character <kbd>\#</kbd> (ie a
+ backslash followed by the pound sign). When processing output,
+ groff silently ignores everything on a line that begins with the
+ comment character.
</dd>
<dt id="controllines">Control Lines</dt>
@@ -764,7 +751,7 @@ or concept you&#8217;re not familiar with.
<p style="margin-top: -1em;">
Units of measure must come immediately after the numeric
- argument (i.e. with no space between the argument and the unit
+ argument (ie with no space between the argument and the unit
of measure), like this:
<span class="pre" style="margin-bottom: -2em;">
@@ -793,7 +780,7 @@ or concept you&#8217;re not familiar with.
<p>
You can enter decimal values for any unit of measure. Different
- units may be combined by adding them together (e.g. 1.5i+2m,
+ units may be combined by adding them together (eg 1.5i+2m,
which gives a measure of 1-1/2 inches plus 2 ems).
</p>
@@ -821,7 +808,7 @@ or concept you&#8217;re not familiar with.
It looks like this:
<span class="pre" style="margin-bottom: -2em;">
- \&amp; (backslash followed by an ampersand)
+ \&amp; (ie a backslash followed by an ampersand)
</span>
Normally, groff interprets a period (or an apostrophe) at the
@@ -830,7 +817,7 @@ or concept you&#8217;re not familiar with.
In fill modes, groff treats a space at the beginning of an input
line as meaning &#8220;start a new line and put a space at the
beginning of it.&#8221; If you want groff to interpret periods
- and apostrophes at the beginning of input lines literally (i.e.
+ and apostrophes at the beginning of input lines literally (ie
print them), or spaces at the beginning of input lines as just
garden variety word spaces, you must start the line with the
zero-width character.
@@ -852,8 +839,8 @@ or concept you&#8217;re not familiar with.
<dd>
Macros used in
<a href="docprocessing.html#docprocessing">document processing</a>
- to control/alter the appearance of document elements (e.g.
- heads, quotes, footnotes,
+ to control/alter the appearance of document elements (eg
+ headings, quotes, footnotes,
<a href="#header">headers</a>,
etc.).
</dd>
@@ -873,20 +860,22 @@ or concept you&#8217;re not familiar with.
<dt id="footer">Footer/page footer</dt>
<dd>
Document information (frequently author and title) output in
- the bottom margin of pages <em>after</em> page one. Not to be
+ the bottom margin of pages after page one. Not to be
confused with footnotes, which are considered part of
<a href="#running">running text</a>.
</dd>
- <dt id="head">Head</dt>
+ <dt id="head">Heading</dt>
<dd>
- A title that introduces a major section of a document.
+ The title used to identify a section of a document. Headings
+ are hierarchic, corresponding to the notion of head, subhead,
+ subsubhead, etc.
</dd>
<dt id="header">Header/page header</dt>
<dd>
Document information (frequently author and title) output in the
- top margin of pages <em>after</em> page one.
+ top margin of pages after page one.
<div class="box-tip" style="margin-right: 2.5em;">
<p class="tip">
@@ -907,21 +896,34 @@ or concept you&#8217;re not familiar with.
<a href="#running">running text</a>,
frequently set off by typographic symbols such as asterisks or
daggers. Used to indicate a shift in the content of a document
- (e.g. a scene change in a short story). Also commonly called a
+ (eg a scene change in a short story). Also commonly called a
scene break or a section break.
</dd>
<dt id="parahead">Paragraph head</dt>
<dd>
- A title joined to the body of a paragraph; hierarchically one
- level beneath
- <a href="#subhead">subheads</a>.
+ A heading joined to the body of a paragraph.
+ </dd>
+
+ <dt id="pdflink">PDF link</dt>
+ <dd>
+ A portion of text that, when clicked on in a PDF viewer,
+ navigates to a bookmarked location in a document, generally but not
+ exclusively a heading. PDF links are usually coloured to make
+ them stand out from the surrounding text.
+ </dd>
+
+ <dt id="pdfoutline">PDF outline</dt>
+ <dd>
+ The hierarchically-arranged navigation outline provided by most PDF
+ viewers (eg Okular, Evince), typically in a panel to the left of
+ the document window, and usually labeled &#8220;Contents&#8221;.
</dd>
<dt id="quote">Quote</dt>
<dd>
A quote, to mom, is a line-for-line setting
- of quoted material (e.g. poetry, song lyrics, or a snippet of
+ of quoted material (eg poetry, song lyrics, or a snippet of
programming code). You don&#8217;t have to use
<a href="typesetting.html#br"><kbd>BR</kbd></a>
with quotes.
@@ -931,20 +933,13 @@ or concept you&#8217;re not familiar with.
<dd>
In a document formatted with mom, running
text means text that forms the body of the document, including
- elements such as heads and subheads.
+ elements such as headings.
<a href="#docheader">Docheaders</a>,
<a href="#header">headers</a>,
<a href="#footer">footers</a>
and page numbers are not part of running text.
</dd>
- <dt id="subhead">Subhead</dt>
- <dd>
- A title used to introduce secondary sections of a document;
- hierarchically one level beneath sections introduced by
- <a href="#head">heads</a>.
- </dd>
-
<dt id="toggle">Toggle</dt>
<dd>
A macro or tag that, when invoked without an argument, begins
diff --git a/contrib/mom/momdoc/docelement.html b/contrib/mom/momdoc/docelement.html
index c7bea50..e7a53a7 100644
--- a/contrib/mom/momdoc/docelement.html
+++ b/contrib/mom/momdoc/docelement.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -72,20 +74,11 @@ FDL in the main directory of the groff source package.
<li><a href="#pp">PP</a></li>
<li><a href="#pp-control">Paragraph control</a></li>
</ul>
-<h3 class="toc toc-docproc-header"><a class="header-link" href="#head-intro">Main heads</a></h3>
-<ul class="toc-docproc" style="margin-top: .5em;">
- <li><a href="#head">HEAD</a></li>
- <li><a href="#head-control">Head control</a></li>
-</ul>
-<h3 class="toc toc-docproc-header"><a class="header-link" href="#subhead-intro">Subheads</a></h3>
-<ul class="toc-docproc" style="margin-top: .5em;">
- <li><a href="#subhead">SUBHEAD</a></li>
- <li><a href="#subhead-control">Subhead control</a></li>
-</ul>
-<h3 class="toc toc-docproc-header"><a class="header-link" href="#parahead-intro">Paragraph heads</a></h3>
+<h3 class="toc toc-docproc-header"><a class="header-link" href="#heading-intro">Headings</a></h3>
<ul class="toc-docproc" style="margin-top: .5em;">
- <li><a href="#parahead">PARAHEAD</a></li>
- <li><a href="#parahead-control">Parahead control</a></li>
+ <li><a href="#heading">HEADING</a></li>
+ <li><a href="#heading-control">Heading control</a></li>
+ <li><a href="#oldstyle-headings-intro">Oldstyle headings</a></li>
</ul>
<h3 class="toc toc-docproc-header"><a class="header-link" href="#linebreak-intro">Linebreaks (section breaks)</a></h3>
<ul class="toc-docproc" style="margin-top: .5em;">
@@ -102,13 +95,13 @@ FDL in the main directory of the groff source package.
<li><a href="#blockquote">BLOCKQUOTE</a></li>
<li><a href="#blockquote-control">Blockquote control</a></li>
</ul>
-</div>
-<div class="mini-toc-col-2" style="margin-top: 1.5em;">
<h3 class="toc toc-docproc-header"><a class="header-link" href="#code-intro">Inserting code snippets</a></h3>
<ul class="toc-docproc" style="margin-top: .5em;">
<li><a href="#code">CODE</a></li>
<li><a href="#code-control">Code control</a></li>
</ul>
+</div>
+<div class="mini-toc-col-2" style="margin-top: 1.5em;">
<h3 class="toc toc-docproc-header"><a class="header-link" href="#list-intro">Nested lists</a></h3>
<ul class="toc-docproc" style="margin-top: .5em;">
<li><a href="#list">LIST</a></li>
@@ -132,9 +125,8 @@ FDL in the main directory of the groff source package.
</ul>
<h3 class="toc toc-docproc-header"><a class="header-link" href="#margin-notes-intro">Margin notes</a></h3>
<ul class="toc-docproc" style="margin-top: .5em;">
- <li><a href="#mn-init">MN_INIT</a></li>
+ <li><a href="#mn-init">MN_INIT (set margin notes parameters)</a></li>
<li><a href="#mn">MN</a></li>
- <li><a href="#margin-notes-control">Margin notes control</a></li>
</ul>
<h3 class="toc toc-docproc-header"><a class="header-link" href="#finis-intro">Document termination string</a></h3>
<ul class="toc-docproc" style="margin-top: .5em;">
@@ -153,23 +145,16 @@ Once you&#8217;ve completed the setup for a document (see
<a href="docprocessing.html#docprocessing-tut">Setting up a mom document</a>),
formatting it is a snap. Simply invoke the appropriate tag for
each document element as you need it. The tags are macros that
-tell mom: &#8220;This is a paragraph; this is a subhead; this is a
+tell mom: &#8220;This is a paragraph; this is a heading; this is a
footnote,&#8221; and so on.
</p>
<p>
-The list of tags is actually quite small&mdash;ideal for the users
-mom brought herself into being for (see
-<a href="intro.html#intro-intro">Who mom is meant for</a>).
-However, the list of macros that control the appearance of the tags
-upon output is extensive. Generally, for each tag, there are
+Generally, for each tag, there are
<a href="definitions.html#controlmacro">control macros</a>
for the tag&#8217;s family, font and point size. Where appropriate,
there are macros to control leading, indents, quad and special
features as well.
-</p>
-
-<p>
Mom has tasteful defaults for all the tags, hence you only use the
control macros when you want to change the way she does things.
This is usually done prior to
@@ -198,7 +183,7 @@ tag, and what mom&#8217;s defaults for the tag are.
<p>
The control macros may be used at any time during the course of a
-document (i.e. before or after
+document (ie before or after
<a href="docprocessing.html#start">START</a>).
The changes you make alter all subsequent invocations of the
affected tag until you make another change, either by passing new
@@ -239,8 +224,7 @@ mightily.
The family, font, point size, colour and leading control macros have
no effect in
<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPEWRITE</kbd></a>,
-which sets everything in Courier roman, 12/24 (i.e. 12-point type on
-a linespace of 24 points).
+except where noted throughout this documentation.
</p>
<p class="tip-bottom">
@@ -271,11 +255,11 @@ the form <kbd>+&lt;n&gt;</kbd> or <kbd>-&lt;n&gt;</kbd> where
&lt;n&gt; is the number of
<a href="definitions.html#picaspoints">points</a>
larger (+) or smaller (-) than the point size of paragraphs
-you want the document element to be. For example, to change
-subheads to 1-1/2 points larger than the type in paragraphs, do
+you want the document element to be. For example, to set
+blockquotes 2 points smaller than the type in paragraphs, do
<br/>
<span class="pre-in-pp">
- .SUBHEAD_SIZE +1.5
+ .BLOCKQUOTE_SIZE -2
</span>
There&#8217;s no need for a
<a href="definitions.html#unitofmeasure">unit of measure</a>
@@ -290,13 +274,14 @@ name pre-defined (or &#8220;initialized&#8221;) with
<a href="color.html#newcolor">NEWCOLOR</a>
or
<a href="color.html#xcolor">XCOLOR</a>.
-For example, if you want your heads to be red, once you&#8217;ve defined
-or initialized the color, red,
+For example, if you want your
+<a href="#linebreak">author linebreaks</a>
+to be red, once you&#8217;ve defined or initialized the colour, red,
<br/>
<span class="pre-in-pp">
- .HEAD_COLOR red
+ .LINEBREAK_COLOR red
</span>
-will turn your heads red.
+will turn them red.
</p>
<h4 id="lead" class="docs" style="margin-top: -.5em; margin-bottom: -.75em;">Lead/linespacing</h4>
@@ -313,7 +298,7 @@ For example, to set footnotes
<span class="pre-in-pp">
.FOOTNOTE_AUTOLEAD 0
</span>
-To set footnotes with a 1-point lead (i.e. with the line spacing
+To set footnotes with a 1-point lead (ie with the line spacing
one point greater than the footnote&#8217;s point size), do
<br/>
<span class="pre-in-pp">
@@ -352,8 +337,8 @@ particular tag. For example,
.PARA_INDENT 2m
.BLOCKQUOTE_INDENT 2
</span>
-means that blockquotes will be indented from the left margin by
-twice the size of the paragraph indent, or 4
+means that blockquotes will be indented from the left and right
+margins by twice the size of the paragraph indent, or 4
<a href="definitions.html#em">ems</a>.
</p>
@@ -367,7 +352,7 @@ and 6
regardless of the paragraph indent.
<br/>
<span class="pre-in-pp">
- .PARA_INDENT 2m
+ .PARA_INDENT 2m
.BLOCKQUOTE_INDENT 3P+6p
</span>
</p>
@@ -391,7 +376,7 @@ are controlled by macros that end in _UNDERLINE.
<p>
Page elements that are separated from
<a href="definitions.html#running">running text</a>
-by a rule (i.e. page headers, page footers and footnotes) are
+by a rule (ie page headers, page footers and footnotes) are
controlled by macros that end in _RULE_WEIGHT.
</p>
@@ -462,8 +447,8 @@ equally from both the left and right margins.
<p>
If a block-style epigraph runs to more than one paragraph (unlikely,
-but conceivable), you <i>must</i> introduce every
-paragraph&mdash;including the first&mdash;with the
+but conceivable), you must introduce every paragraph&mdash;including
+the first&mdash;with the
<a href="#pp">PP</a>
tag.
</p>
@@ -471,19 +456,38 @@ tag.
<div class="box-tip">
<p class="tip">
<span class="note">Note:</span>
-EPIGRAPH should only be used at the top of a document (i.e. just
+EPIGRAPH should only be used at the top of a document (ie just
after
<a href="docprocessing.html#start">START</a>)
-or after
-<a href="#head-intro">heads</a>.
-The latter is not especially recommended, but it does work. In all
-other places where you want quotes or cited text, use
+or after headings. The latter is not especially recommended, but it
+does work. In all other places where you want quotes or cited text,
+use
<a href="#quote">QUOTE</a>
or
<a href="#blockquote">BLOCKQUOTE</a>.
</p>
</div>
+<div class="box-tip">
+<p class="tip">
+<span class="tip">Tip:</span>
+If you&#8217;re setting a document in
+<a href="docprocessing.html#columns">columns</a>
+and you&#8217;d like to add or subtract space after the epigraph,
+the place to do it is inside the epigraph, like this:
+<br/>
+<span class="pre-in-pp">
+ .EPIGRAPH
+ A notable quote.
+ .SP 1v
+ .EPIGRAPH OFF
+</span>
+If you were to add the <kbd>.SP 1v</kbd> outside the epigraph, the
+space would be added to the top of the leftmost column only,
+resulting in unbalanced columns.
+</p>
+</div>
+
<div class="defaults-container" style="padding-bottom: 8px;">
<h3 id="epigraph-control" class="docs defaults" style="margin-top: -.25em;">EPIGRAPH control macros and defaults</h3>
@@ -513,29 +517,18 @@ See
<h3 id="epigraph-indent" class="docs notes" style="margin-bottom: -.75em;">Note on EPIGRAPH_INDENT</h3>
<p style="margin-top: .5em;">
-Prior to version 1.4-b, mom allowed only the passing of an integer
-to the macro, EPIGRAPH_INDENT. The integer represented the amount
-by which to multiply the argument passed to
-<a href="#para-indent">PARA_INDENT</a>
-to arrive at an indent for block style epigraphs.
-</p>
-
-<p>
-As of version 1.4-b, you can now append a
-<a href="definitions.html#unitofmeasure">unit of measure</a>
-to the argument passed to EPIGRAPH_INDENT, thus setting an absolute
-indent, relative to nothing. The old behaviour is still respected,
-though; in other words, if you pass EPIGRAPH_INDENT an integer with
-no unit of measure appended, the integer represents the amount by
-which to multiply PARA_INDENT to arrive at an indent for block style
-epigraphs.
+If you pass EPIGRAPH_INDENT an integer with no unit of measure
+appended, the integer represents the amount by which to multiply
+PARA_INDENT to arrive at an indent for block style epigraphs. If
+you append a unit of measure to the argument, the indent will be
+precisely the amount specified.
</p>
<p>
-Please also note that if your PARA_INDENT is <kbd>0</kbd> (i.e. no
-indenting of the first line of paragraphs), you <i>must</i> set an
+Please also note that if your PARA_INDENT is <kbd>0</kbd> (ie
+no indenting of the first line of paragraphs), you must set an
EPIGRAPH_INDENT yourself, with a unit of measure appended to the
-argument. Mom has no default for EPIGRAPH_INDENT if paragraph first
+argument. Mom has no default for EPIGRAPH_INDENT if paragraph first
lines are not being indented.
</p>
@@ -569,29 +562,48 @@ you are in your document are taken care of automatically.
<p>
By default, mom does not indent the first paragraph of a document,
-nor paragraphs that fall immediately after
-<a href="#head-intro">heads</a>
-or
-<a href="#subhead-intro">subheads</a>.
-The first paragraphs of blockquotes and block-style epigraphs are
-also not indented. This behaviour can be changed with the control
-macro
+nor paragraphs that fall immediately after headings. The first
+paragraphs of blockquotes and block-style epigraphs are also not
+indented. This behaviour can be changed with the control macro
<kbd><a href="#para-indent-first">INDENT_FIRST_PARAS</a></kbd>.
</p>
<p>
-In contrast to some other macro sets, mom does not deposit a blank
-line between paragraphs. If you want her to do so, use the control
-macro PARA_SPACE. (I don&#8217;t recommend using this macro with
+Mom does not deposit a blank line between paragraphs. If you want
+her to do so, use the control macro
+<a href="#pp-space">PARA_SPACE</a>.
+(I don&#8217;t recommend using this macro with
<a href="typesetting.html#printstyle">PRINTSTYLE TYPEWRITE</a>.)
</p>
+<div class="box-tip">
+<p class="tip">
+<span class="tip">Tip:</span>
+If you'd like to add a small amount of space between paragraphs,
+less than the full linespace provided by PARA_SPACE,
+you can create a macro that adds it automatically, like this:
+<br/>
+<span class="pre-in-pp">
+ .MAC PP2 END
+ . ALD .25v
+ . PP
+ .END
+</span>
+Introducing a paragraph with <kbd>.PP2</kbd> will add a space equal
+to one-quarter of the prevailing linespace before the start of the
+paragraph. Initial paragraphs, ie those at the start of a document,
+or after a heading or
+<a href="#linebreak-intro">linebreak</a>,
+should still be introduced with
+<kbd>.PP</kbd>.
+</div>
+
<p>
-Note that mom does not provide &#8220;orphan control&#8221; for
-paragraphs (i.e. even if only one line of a paragraph fits at the
+Note that mom does not provide widow or orphan control for
+paragraphs (ie even if only one line of a paragraph fits at the
bottom of a page, she will set it on that page). The reason for
this is that writers of fiction often have single-line paragraphs
-(e.g. in dialogue). Groff&#8217;s simplistic orphan control will
+(eg in dialogue). Groff&#8217;s simplistic orphan control will
break these one-liners&mdash;if they fall at the bottom of the
page&mdash;to a new page, which is not what you want.
</p>
@@ -647,7 +659,8 @@ new paragraph. See
for more details. In addition to regular text paragraphs, you can
use PP in
<a href="#epigraph-intro">epigraphs</a>,
-<a href="#blockquote-intro">blockquotes</a>
+<a href="#blockquote-intro">blockquotes</a>,
+<a href="#endnote-intro">endnotes</a>
and
<a href="#footnote-intro">footnotes</a>.
</p>
@@ -669,7 +682,7 @@ tags.
<li><a href="#pp-just-quad">Justification/quad control</a></li>
<li><a href="#para-indent">First-line indent control</a></li>
<li><a href="#para-indent-first">Initial paragraphs indent control</a></li>
- <li><a href="#pp-space">Paragraph spacing control</a></li>
+ <li><a href="#pp-space">Inter-paragraph spacing</a></li>
</ol>
</div>
@@ -692,7 +705,13 @@ every element in the document.
If you wish to change the family for regular text paragraphs only,
invoke <kbd>.FAMILY</kbd> immediately after <kbd>.PP</kbd> in every
paragraph whose family you wish to differ from the prevailing
-document family.
+document family. Alternatively, set the family and font for
+paragraphs with PP_FONT, giving it a complete family+font name, eg
+<br/>
+<span class="pre-in-pp">
+ PP_FONT TI
+</span>
+which would make the font used in paragraphs Times Roman Italic.
</p>
<p>
@@ -719,7 +738,8 @@ PP_FONT may be used before or after
<a href="docprocessing.html#start">START</a>.
Only regular text paragraphs are affected; paragraphs in
<a href="#epigraph-intro">epigraphs</a>,
-<a href="#blockquote-intro">blockquotes</a>
+<a href="#blockquote-intro">blockquotes</a>,
+<a href="#endnote-intro">endnotes</a>,
and
<a href="#footnote-intro">footnotes</a>
remain at their default setting (medium roman) unless you change
@@ -753,7 +773,7 @@ wish a colourized paragraph, you must use the macro,
<a href="color.html#color">COLOR</a>,
or the
<a href="definitions.html#inline">inline escape</a>,
-<a href="color.html#color-inline"><kbd>\*[&lt;colorname&gt;]</kbd></a>,
+<a href="color.html#color-inline"><kbd>\*[&lt;colourname&gt;]</kbd></a>,
<i>after</i> <kbd>.PP</kbd>. The colour must be one pre-defined (or
&#8220;initialized&#8221;) with
<a href="color.html#newcolor">NEWCOLOR</a>
@@ -786,23 +806,6 @@ the document&#8217;s default colour (usually black), and the second
paragraph will be in blue.
</p>
-<p>
-The one document element that is affected by changing the colour of
-paragraphs is
-<a href="#parahead">paraheads</a>,
-since paraheads are attached directly to the body of paragraphs.
-In other words, if you change the colour of a paragraph and do not
-reset the paragraph colour back to its default, subsequent paraheads
-will appear in the same colour as your paragraphs unless you have
-explicitly told mom you want a pre-defined (or
-&#8220;initialized&#8221;) color (usually black) for your paraheads.
-</p>
-
-<p>
-See the footnote to
-<a href="#parahead-color">PARAHEAD_COLOR</a>.
-</p>
-
<h4 id="pp-leading" class="docs" style="margin-top: -.25em;">4. Leading</h4>
<p>
@@ -848,7 +851,7 @@ is 16 points, adjusted to fill the page.
<h4 id="pp-just-quad" class="docs" style="margin-top: -.25em;">5. Justification/quad</h4>
<p>
-The justification/quad-direction of regular text paragraphs (i.e.
+The justification/quad-direction of regular text paragraphs (ie
<a href="definitions.html#just">justified</a>,
or
<a href="definitions.html#filled">filled</a>
@@ -868,9 +871,10 @@ afterwards.
<p>
Please note that either method of setting the paragraph
justification/quad-direction also affects
-<a href="#epigraph-intro">epigraphs</a>
-and
+<a href="#epigraph-intro">epigraphs</a>,
<a href="#footnote-intro">footnotes</a>,
+and
+<a href="#endnote-intro">endnotes</a>,
but not
<a href="#blockquote-intro">blockquotes</a>
(whose default is quad left unless you change it with
@@ -943,10 +947,12 @@ Mom&#8217;s default PARA_INDENT is 2 ems for
<p>
By default, mom does not indent the first paragraph of a document,
-nor the first paragraph after a head or subhead, nor the first
-paragraphs of
+nor the first paragraph after a heading or
+<a href="#linebreak-intro">linebreak</a>,
+nor the first paragraphs of
<a href="#epigraph-intro">epigraphs</a>,
-<a href="#blockquote-intro">blockquotes</a>
+<a href="#blockquote-intro">blockquotes</a>,
+<a href="#endnote-intro">endnotes</a>
or
<a href="#footnote-intro">footnotes</a>
that run to more than one paragraph.
@@ -962,7 +968,7 @@ argument (<b>OFF, QUIT, Q, X</b>...) cancels its effect, meaning
that first paragraphs will once again not be indented.
</p>
-<h4 id="pp-space" class="docs">8. Spacing paragraphs</h4>
+<h4 id="pp-space" class="docs">8. Inter-paragraph spacing</h4>
<p>
By default, mom does not insert a blank line between
@@ -974,16 +980,21 @@ PARA_SPACE is a toggle macro, therefore passing it any argument
paragraphs will once again not be separated by a blank line.
</p>
+<p>
+PARA_SPACE is not recommended for use with PRINTSTYLE TYPEWRITE
+unless you give PRINTSTYLE the <kbd>SINGLESPACE</kbd> option.
+</p>
+
<div class="box-tip">
<p class="tip-top">
<span class="note">Note:</span>
If PARA_SPACE is on, mom spaces only those paragraphs that come
after an initial paragraph. Initial paragraphs are those that come
immediately after the
-<a href="definitions.html#docheader">docheader</a>,
+<a href="definitions.html#docheader">docheader</a>
+(ie the start of a document),
<a href="#epigraph-intro">epigraphs</a>,
-<a href="#head-intro">heads</a>,
-<a href="#subhead-intro">subheads</a>
+<a href="#heading-intro">headings</a>,
and
<a href="#linebreak-intro">linebreaks</a>.
(The first paragraph after these document elements requires no
@@ -1000,832 +1011,743 @@ expect the blank line to appear.
</p>
</div>
+<p>
+If you would like to space paragraphs by less than a full linespace,
+the way to do it is by creating a wrapper macro around PP that adds
+space before each paragraph, like this,
+<br/>
+<span class="pre-in-pp">
+ .MAC PP2 END
+ . ALD 6p
+ . PP
+ .END
+</span>
+which inserts 6
+<a href="definitions.html#picaspoints">points</a>
+of space before each paragraph. Initial paragraphs, as described
+above, should still be introduced with <kbd>PP</kbd>; only subsequent
+ones require <kbd>.PP2</kbd>.
+</p>
+
+<p>
+If you would like the extra space to be a fraction of the current
+<a href="definitions.html#leading">leading</a>,
+use the groff number register, <kbd>\n[.v]</kbd> and divide it by
+the fraction you want. For example, <kbd>.ALD \n[.v]/4</kbd> inserts
+1/4 linespacing between paragraphs.
+</p>
+
+<p>
+You may write the macro, above, in low-level groff if you wish:
+<br/>
+<span class="pre-in-pp">
+ .de PP2
+ . sp 6p
+ . PP
+ ..
+</span>
+</p>
+
<div class="rule-short"><hr/></div>
<!-- ==================================================================== -->
-<h2 id="head-intro" class="macro-group">Main heads</h2>
+<h2 id="heading-intro" class="macro-group">Headings</h2>
<ul style="margin-left: -.5em;">
- <li><a href="#head">Tag: HEAD</a></li>
- <li><a href="#head-control">Head control macros and defaults</a></li>
+ <li><a href="#heading">Tag: HEADING</a></li>
+ <li><a href="#head-spacing-notes">Spacing of headings</a></li>
+ <li><a href="#heading-control">Heading control macros and defaults</a></li>
+ <li><a href="#prefix-chapter-number">Prefixing chapter numbers</a></li>
+ <li><a href="#oldstyle-headings">Oldstyle headings</a>
+ <ul style="list-style-type: circle; margin-left: -1.25em">
+ <li><a href="#parahead">Important information about PARAHEAD</a>
+ <ul style="list-style-type: square; margin-left: -1.25em">
+ <li><a href="#parahead-usage">Correct usage of paraheads</a></li>
+ </ul></li>
+ </ul></li>
</ul>
<p>
-Main heads&mdash;or, in this documentation, just
-&#8220;heads&#8221;&mdash;should be used any place you want titles
-to introduce major sections of a document. If you wish, mom can
-number your heads for you. Head numbers can also be included
-hierarchically in numbered
-<a href="#subhead-intro">subheads</a>
-and
-<a href="#parahead-intro">paraheads</a>.
+Heads, subheads, and deeper levels of section headings are handled by
+a single macro, HEADING, to which you pass an argument stating the
+desired level. <kbd>.HEADING 1 &quot;&lt;text&gt;&quot;</kbd>, for
+example, would be a main head; <kbd>.HEADING 2
+&quot;&lt;text&gt;&quot;</kbd> would be a subhead; etc.
</p>
<p>
-By default, heads are centred on the page, underlined, all in caps.
-A double linespace precedes each head. In
-<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPESET</kbd></a>,
-heads are bold, slightly larger than paragraph text.
+In addition to printing headings in the body of your document,
+HEADING collects the heading as an entry for the Table of Contents,
+if the document is to have one, and the
+<a href="definitions.html#pdfoutline">PDF outline</a>.
+With the <kbd>NAMED</kbd> argument, it furthermore acts as a
+bookmark for
+<a href="definitions.html#pdflink">PDF links</a>.
</p>
<p>
-If these defaults don&#8217;t suit you, you can change them with the
-head control macros.
+Headings can also be numbered on a per-heading-level basis,
+hierarchically and concatenatively, eg
+<br/>
+<span class="pre-in-pp">
+ 1.
+ 1.1
+ 1.2
+ 1.2.1
+ 2.
+ 2.1
+ 2.2
+ 2.2.1
+</span>
+By default, a blank line precedes headings, regardless of the level.
+Mom initially sets up a very basic style for nine levels of heading,
+of which you can have an infinite number, although as has been said,
+if you need more than four levels of heading, you should consider
+re-organizing your material. The pared-down style of mom&#8217;s
+defaults is intentional; it is expected that you will design
+headings to your own specifications with the
+<a href="definitions.html#controlmacro">control macro</a>,
+<a href="#heading-style">HEADING_STYLE</a>.
+</p>
+
+<p>
+It is very good practice, and strongly recommended, that you respect
+the hierarchy of headings, using level-1 for main heads, level-2 for
+subheads, level-3 for subsubheads, etc. The ease of designing and
+re-designing the style for each level, plus mom&#8217;s very basic
+defaults, are meant, in part, to prevent the whimsical misuse of
+a particular heading level just because its style appeals to you.
</p>
<!-- -HEAD- -->
<div class="macro-id-overline">
-<h3 id="head" class="macro-id">HEAD</h3>
+<h3 id="heading" class="macro-id">HEADING</h3>
</div>
<div class="box-macro-args">
-Macro: <b>HEAD</b> <kbd class="macro-args">&quot;&lt;text of head&gt;&quot; [ &quot;&lt;2nd line&gt;&quot; [ &quot;&lt;3rd line&gt;&quot; ... ] ]</kbd>
+Macro: <b>HEADING</b> <kbd class="macro-args">&lt;level&gt; [
+PARAHEAD ] [ NAMED &lt;pdf-id&gt; ] &quot;&lt;heading text&gt;&quot;
</div>
<p>
-The argument to HEAD is the text of the head, surrounded by
-double-quotes. If you need additional lines for a head, simply
-surround each line with double-quotes.
-</p>
-
-<div class="box-tip">
-<p class="tip">
-<span class="note">Note:</span>
-If a head falls near the bottom of an output page and mom is unable
-to fit the head <i>plus at least one line of text underneath it</i>,
-she will set the head at the top of the next page.
-</p>
-
-<p class="tip-bottom">
-<span class="additional-note">Additional note:</span>
-If an
-<a href="definitions.html#inputline">input line</a>
-in a head (i.e. one of the lines surrounded by double-quotes) has
-to be broken by mom in order to fit the current line-length (say,
-a narrow column measure), the head underline (underscore) will not
-behave. You&#8217;ll recognize the problem as soon as you preview
-your document. If you encounter a head that misbehaves with respect
-to underlining, the solution is to supply each line <i>as you want
-it</i> as a separate argument (surrounded by double-quotes) to the
-HEAD macro.
+The first argument to HEADING is the <kbd>level</kbd>. Level 1 is
+analogous to a main head; level 2 is analogous to a subhead; level 3
+is analogous to a subsubhead; etc.
</p>
<p>
-For example, if mom breaks
-<br/>
-<span class="pre-in-pp">
- .HEAD "This is a very, very, very long head"
-</span>
-into<br/>
-<span class="pre-in-pp">
- This is a very, very, very
- long head
-</span>
-you&#8217;ll see the misbehaving underscore and should change the
-argument to HEAD to
-<br/>
-<span class="pre-in-pp">
- .HEAD "This is a very, very very" "long head"
-</span>
-</p>
-</div>
-
-<div class="defaults-container" style="background-color: #ded4bd; border: none;">
-<h3 id="head-control" class="docs defaults">HEAD control macros and defaults</h3>
-
-<p class="defaults">
-There are, in addition to the usual family/font/size/quad control
-macros, a number of macros to manage head numbering, spacing,
-underlining, and so on. Check them out if you&#8217;re unhappy with
-mom&#8217;s defaults.
+The second (optional) argument, <kbd>PARAHEAD</kbd>, instructs mom
+that the heading should be treated as a
+<a href="definitions.html#parahead">paragraph head</a>.
+If HEADING is being used to create a parahead, it must come after
+<a href="#pp">PP</a>,
+not before.
</p>
-<ol style="margin-top: .5em; padding-bottom: .5em;">
- <li><a href="#head-general">Family/font/size/colour/quad</a></li>
- <li><a href="#head-caps">Capitalizing heads</a></li>
- <li><a href="#head-space">Pre-head space</a></li>
- <li><a href="#head-underline">Underscoring</a></li>
- <li><a href="#number-heads">Numbering</a></li>
- <li><a href="#reset-head-number">Reset head numbering</a></li>
- <li><a href="#head-inlines">Vertical inline escapes inside heads</a></li>
-</ol>
-</div>
-<h4 id="head-general" class="docs" style="margin-top: -1.5em; margin-bottom: .5em;">1. Family/font/size/colour/quad</h4>
-
-<div class="defaults-container" style="padding-bottom: 8px;">
-<p class="defaults" style="padding-top: 6px;">
-See
-<a href="#control-macro-args">Arguments to the control macros</a>.
+<p>
+The indent applied to a parahead is the same as what would be
+expected from a paragraph without the parahead (see
+<a href="#para-indent-first">Indenting initial paragraphs</a>).
+If you wish that a paragraph introduced by a parahead not be
+indented, use
+<a href="#para-indent">PARA_INDENT</a>
+to set the paragraph indent to zero, then reset the indent for
+subsequent paragraphs.
</p>
-<span class="pre defaults">
-.HEAD_FAMILY default = prevailing document family; default is Times Roman
-.HEAD_FONT default = bold
-.HEAD_SIZE default = +1 (point)
-.HEAD_COLOR default = black
-.HEAD_QUAD default = CENTER
-</span>
-</div>
-
-<h4 id="head-caps" class="docs" style="margin-top: -1.25em;">2. Capitalizing heads</h4>
<p>
-By default, mom sets heads in caps, regardless of the
-<a href="definitions.html#stringargument">string(s)</a>
-you give to
-<a href="#head">HEAD</a>.
-To change this behaviour, do
-<br/>
-<span class="pre-in-pp">
- .HEAD_CAPS OFF
-</span>
-HEAD_CAPS is a toggle macro, therefore you can use any argument you
-like instead of <kbd>OFF</kbd> (<b>END, QUIT, Q, X</b>...). To turn
-HEAD_CAPS back on, simply invoke it without an argument.
+The optional third argument, <kbd>NAMED &lt;id&gt;</kbd>, gives the
+heading a unique, non-printing identifier that allows it to
+referenced from anywhere in the final PDF document with the PDF_LINK
+macro, provided the mom file is processed with
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>.
+PDF_LINK usage is explained in the manual,
+<a href="http://www.schaffter.ca/mom/pdf/mom-pdf.pdf"><span class="book-title">Producing PDFs with groff and mom</span></a>.
</p>
-<h4 id="head-space" class="docs" style="margin-top: -.25em;">3. Pre-head space</h4>
-
<p>
-By default, mom deposits 2 blank lines prior to every head when your
-<a href="docprocessing.html#printstyle">PRINTSTYLE</a>
-is <kbd>TYPESET</kbd>. If you&#8217;d prefer just a single blank
-line, do
+The final argument is the text of the heading, surrounded by double
+quotes. Long headings that are likely to exceed the current
+line length should be broken into chunks, each surrounded by
+double-quotes, like this:
<br/>
<span class="pre-in-pp">
- .HEAD_SPACE OFF
+ .HEADING 1 "A needlessly long but instructive" "first level heading"
</span>
-HEAD_SPACE is a toggle macro, therefore you can use any argument
-you like instead of <kbd>OFF</kbd> (<kbd>END, QUIT, Q, X</kbd>...).
-To restore the space before heads to 2 blank lines, invoke
-<kbd>.HEAD_SPACE</kbd> without an argument.
</p>
<div class="box-tip">
<p class="tip">
<span class="note">Note:</span>
-HEAD_SPACE has no effect on PRINTSTYLE <kbd>TYPEWRITE</kbd>.
+If a heading falls near the bottom of an output page and mom is
+unable to fit the heading plus at least one line of text underneath
+it, she will set the head at the top of the next page.
</p>
</div>
-<h4 id="head-underline" class="docs" style="margin-top: -.25em;">4. Underscoring</h4>
+<div class="box-tip">
+<h3 id="head-spacing-notes" class="docs" style="padding-top: 9px; font-size: 100%; text-transform: none">Spacing of headings</h3>
<p>
-By default, mom underlines heads. To change this behaviour, do
-<br/>
-<span class="pre-in-pp">
- .HEAD_UNDERLINE OFF
-</span>
-HEAD_UNDERLINE can be used as a toggle macro, therefore you can
-use any argument you like instead of <kbd>OFF</kbd> (<kbd>END,
-QUIT, Q, X</kbd>...) to turn it off, or invoke it by itself to
-turn head underlining on.
+As described above, mom inserts a blank line before each heading.
+If the leading of your document never changes, and you introduce no
+additional space into the text&mdash;as, for example, between
+paragraphs&mdash;this will result in perfectly equal whitespace before
+each heading.
</p>
<p>
-In addition to toggling head underlining on or off, as of
-version 1.5 of mom, you can use HEAD_UNDERLINE to set the weight
-of the underline and its distance from the head, like this:
-<br/>
-<span class="pre-in-pp">
- .HEAD_UNDERLINE &lt;weight&gt; [&lt;gap&gt;]
-</span>
-The <kbd>weight</kbd> argument is in points, or fractions thereof,
-and must not have the
-<a href="definitions.html#unitofmeasure">unit of measure</a>,
-<kbd>p</kbd>, appended. Like
-<a href="inlines.html#rule-weight">RULE_WEIGHT</a>,
-weights must be greater than 0 and less than 100. Mom&#8217;s
-default for head underlines is 1/2 point.
+If, however, you disrupt the regular placement of text on
+mom&#8217;s baseline grid, HEADING adds as much whitespace to the
+blank line as is necessary to get things back on track. The extra
+whitespace is always less than the current leading and therefore
+usually doesn't draw attention to itself. This, along with a
+similar strategy for whitespace around quotes and blockquotes, is
+what allows mom to balance the bottom margins of pages effectively.
+The manual,
+<a href="http://www.schaffter.ca/mom/pdf/mom-pdf.pdf"><span class="book-title">Producing PDFs with groff and mom</span></a>,
+demonstrates this well: the inter-paragraph spacing is 1/3 of the
+leading, yet mom is able to produce a document with good page-rhythm
+and evenly balanced bottom margins.
</p>
<p>
-The <kbd>gap</kbd> argument determines the distance from the
-baseline of the head to the upper edge of the underline. It can
-be given using any unit of measure, and must have the unit of
-measure appended to the argument. Mom&#8217;s default gap for head
-underlines is 2 points.
+It occasionally happens that the extra whitespace becomes noticeable,
+typically when the amount of whitespace approaches the value of the
+current leading. The result looks like two blank lines instead of
+one. When this happens, a simple but effective fix is to reduce the
+space before the heading by backing up one line, either with
+<br/>
+<span class="pre-in-pp">
+ .SPACE -1v
+</span>
+or
+<br/>
+<span class="pre-in-pp">
+ .RLD -1v
+</span>
+This results in slightly less whitespace than normal, but the
+difference is usually not apparent.
</p>
-<p>
-As an example, suppose you want your heads underlined with a
-4-point rule separated from the head by 3 points. The way to
-accomplish it is:
+<p class="tip-bottom">
+If you&#8217;d prefer that mom not add flexible whitespace to
+headings, invoke the macro
<br/>
<span class="pre-in-pp">
- .HEAD_UNDERLINE 4 3p
+ .NO_SHIM
</span>
-If you wanted the same thing, but were content with mom&#8217;s
-default gap of 2 points,
+either in the style sheet section of your document (ie after
+PRINTSTYLE but before START), which will globally disable whitespace
+adjustment not only before headings, but around quotes and
+blockquotes as well, or on a per-instance basis. <kbd>.NO_SHIM</kbd>
+is disabled by issuing
<br/>
<span class="pre-in-pp">
- .HEAD_UNDERLINE 4
+ .NO_SHIM OFF
</span>
-would do the trick.
+Please note that <kbd>.NO_SHIM</kbd> also disables mom&#8217;s
+automatic shimming around quotes, blockquotes, after PDF images and
+floats, and
+<a href="docprocessing.html#shim">SHIM</a>
+macro itself.
</p>
+</div>
-<div class="box-tip">
-<p class="tip">
-<span class="note">Note:</span>
-If you supply a weight to HEAD_UNDERLINE, and optionally a gap, you
-also turn the underlining of heads on; if this is not what you want,
-you must turn head underlining off manually afterwards.
+<div class="defaults-container" style="background-color: #ded4bd; border: none;">
+<h3 id="heading-control" class="defaults" style="margin-left: 6px; margin-bottom: -1em">HEADING control and defaults</h3>
+
+<div style="padding-left: 15px; padding-right: 15px">
+<p style="margin-bottom: 1em">
+By default, mom pre-initializes nine levels of headings to use
+the bold font of the prevailing document family, with a baseline
+adjustment of 1/10 of the current
+<a href="definitions.html#leading">leading</a>.
+In addition, level-1 headings are 3 points larger than running text,
+level-2 headings 2 points larger, and level 3-headings 1 point
+larger. The remaining 6 levels are the same size as running text.
+A single blank line precedes all levels of heading.
</p>
-</div>
-<h4 id="number-heads" class="docs" style="margin-top: -.25em;">5. Numbering</h4>
+<h4 id="heading-style" class="docs" style="margin-bottom: -.5em">The HEADING_STYLE macro</h4>
<p>
-If you&#8217;d like your heads numbered, simply invoke
+Styling heads is accomplished with a single macro,
+<br/>
<span class="pre-in-pp">
- .NUMBER_HEADS
+ .HEADING_STYLE&nbsp;&lt;level&gt;
</span>
-with no argument. Mom will number all subsequent heads automatically
-(in ascending order, naturally).
+where <kbd>&lt;level&gt;</kbd> is the numeric heading level to which
+the style applies.
</p>
<p>
-If, in addition to numbering heads, you also request that
-<a href="#subhead-intro">subheads</a>
-and/or
-<a href="#parahead-intro">paraheads</a>
-be numbered, the head number will be included in their numbers (each
-number separated by a period [dot]).
+HEADING_STYLE takes any or all of the following arguments,
+which may be given in any order:
+<br/>
+<span class="pre defaults">
+ FAMILY &lt;family&gt;
+ FONT &lt;font&gt;
+ SIZE &lt;+|-size&gt;
+ QUAD &lt;direction&gt;
+ COLOR &lt;colour&gt;
+ UNDERSCORE &lt;weight&gt; &lt;gap&gt; | NO_UNDERSCORE
+ UNDERSCORE2 &lt;weight&gt; &lt;gap1&gt; &lt;gap2&gt; | NO_UNDERSCORE2
+ CAPS | NO_CAPS
+ BASELINE_ADJUST &lt;amount to raise heading from the baseline&gt;
+ SPACE_AFTER | NO_SPACE_AFTER
+ NUMBER | NO_NUMBER
+</span>
+</p>
+
+<p class="defaults" style="margin-bottom: 1em">
+The arguments to <kbd>FAMILY</kbd>, <kbd>FONT</kbd>,
+<kbd>SIZE</kbd>, <kbd>QUAD</kbd>, and
+<kbd>COLOR</kbd> are the same as
+those you&#8217;d give to the
+<a href="#docelement-control">control macros</a>
+ending in _FAMILY, _FONT, _SIZE, _QUAD, or _COLOR. See
+<a href="#control-macro-args">Arguments to the control macros</a>.
</p>
-<p>
-Should you wish to stop head numbering, invoke
-<kbd>.NUMBER_HEADS</kbd> with any argument (<kbd>OFF, QUIT, END,
-X</kbd>...). Head numbering will cease, and the head number will
-not be included in the numbering of subheads and/or paraheads.
+<p class="defaults" style="margin-bottom: 1em">
+<kbd>UNDERSCORE</kbd> and <kbd>UNDERSCORE2</kbd> require that a
+weight for the underscore be given, in points (decimal fractions
+allowed), but without the unit of measure <kbd>p</kbd> appended.
+They also require that the underscore's distance from the baseline
+be supplied; in the case of UNDERSCORE2, an additional gap argument
+representing the distance between the two underscores must be
+provided.
+</p>
+
+<p class="defaults" style="margin-bottom: 1em">
+The <kbd>CAPS</kbd> argument capitalizes the text of a heading
+level in the body of a document but not in the Table of
+Contents, where capitalization of entries is controlled by
+<a href="tables-of-contents.html#toc-entry-style">TOC_ENTRY_STYLE&nbsp;&lt;n&gt;</a>.
+</p>
+
+<p class="defaults" style="margin-bottom: 1em">
+<kbd>BASELINE_ADJUST</kbd> allows you to raise a heading slightly
+above the baseline on which it would otherwise sit. For aesthetic
+reasons, it is often desirable to introduce a small amount of space
+between a heading and the text following it. Since headings are
+preceded by a blank line, it is preferable to move the heading
+upward than to lower the text following it. The argument to
+BASELINE_ADJUST is the amount by which to raise the heading. It
+requires no <kbd>+</kbd> or <kbd>-</kbd> sign, and must have a
+<a href="definitions.html#unitofmeasure">unit of measure</a>
+appended to it.
</p>
-<p>
-See also
-<a href="#prefix-chapter-number">Prefixing chapter numbers</a>
-if you&#8217;d like chapter numbers prepended to the head numbers.
+<p class="defaults" style="margin-bottom: 1em">
+<kbd>SPACE_AFTER</kbd> inserts a blank line equal to the current
+<a href="definitions.html#leading">leading</a> after a HEADING.
+If you'd like a full linespace after a heading level, use
+<kbd>SPACE_AFTER</kbd>. If you'd like additional space before a
+heading level, you must introduce it yourself with
+<a href="typesetting.html#space">SPACE</a>
+or
+<a href="typesetting.html#ald">ALD</a>.
</p>
-<h4 id="reset-head-number" class="docs" style="margin-top: -.25em;">6. Reset head numbering</h4>
+<p class="defaults" style="margin-bottom: 1em">
+<kbd>NUMBER</kbd> and <kbd>NO_NUMBER</kbd> allow you to determine
+whether mom prepends a hierarchic numbering scheme to a heading
+level in the body of a document. Numbering of Table of Contents
+entries is controlled separately with
+<a href="tables-of-contents.html#toc-entry-numbers">TOC_ENTRY_NUMBERS</a>.
+Mom also has a special macro to toggle whether to prefix a chapter
+number to numbered headings and Table of Contents entries,
+<a href="prefix-chapter-number">PREFIX_CHAPTER_NUMBER</a>.
+</p>
-<p>
-Should you wish to reset the head number to &#8220;1&#8221;,
-invoke
-<span class="pre-in-pp">
- .RESET_HEAD_NUMBER
-</span>
-with no argument. If, for some reason, you want mom to use a head
-number that is not the next in ascending order (i.e. the last head
-number + 1), invoke <kbd>.RESET_HEAD_NUMBER</kbd> with the number
-you want, e.g.
+<p class="defaults" style="padding-bottom: .5em">
+The argument list is long, so you may want to break it into
+several lines by using the backslash character (<kbd>\</kbd>).
+Here's an example of how you might style a level 1 heading:
<br/>
-<span class="pre-in-pp">
- .RESET_HEAD_NUMBER 6
+<span class="pre defaults">
+ .HEADING_STYLE 1 \
+ FONT B \
+ QUAD C \
+ UNDERSCORE .5 2p \
+ BASELINE_ADJUST 3p \
+ NUMBER
</span>
-Your next head will be numbered &#8220;6&#8221; and subsequent heads will
-be numbered in ascending order from &#8220;6&#8221;.
+This creates a level-1 heading style that's bold, centered,
+underscored and numbered, raised by 3 points from the baseline.
</p>
+</div>
+</div>
-<h4 id="head-inlines" class="docs" style="margin-top: -.25em;">7. Vertical inline escapes inside heads</h4>
+<!-- -PREFIX_CHAPTER_NUMBER- -->
-<p>
-If you need to adjust the
-<a href="definitions.html#baseline">baseline</a>
-position of a head (e.g. the head falls at the top of a column and
-you want its
-<a href="definitions.html#ascender">ascenders</a>
-to line up with the ascenders of
-<a href="definitions.html#running">running text</a>
-in other columns), you can embed a vertical motion
-<a href="definitions.html#inlines">inline escape</a>
-(either
-<a href="inlines.html#inline-vertical-mom">mom</a>&#8217;s
-or
-<a href="inlines.html#inline-vertical-groff">groff</a>&#8217;s
-in the string(s) you pass to HEAD.
-</p>
+<div id="prefix-chapter-number" class="macro-id-overline" style="margin-top: -1em;">
+<h3 class="macro-id" style="text-transform: none; font-size: 105%;">Prefixing chapter numbers</h3>
+</div>
+
+<div class="box-macro-args">
+Macro: <b>PREFIX_CHAPTER_NUMBER</b> <kbd class="macro-args">&lt;none&gt; | &lt;chapter number as digit&gt; | &lt;anything&gt;</kbd>
+</div>
<p>
-For example,
-<br/>
-<span class="pre-in-pp" style="margin-bottom: -1em;">
- .HEAD "\*[DOWN 3p]Text of head"
-</span>
-or
-<span class="pre-in-pp" style="margin-top: -.5em;">
- .HEAD "\v'3p'Text of head"
-</span>
-will lower the baseline of the head by three points. Note that
-there&#8217;s no need to reverse the sense of the inline escape.
+If you&#8217;ve requested numbering for any level of heading and
+you&#8217;d like mom, in addition, to prefix a chapter number to the
+numbering scheme, you can do so with PREFIX_CHAPTER_NUMBER.
</p>
<p>
-In the case of heads that run to more than one line, you must embed
-the escape in the string for each line, like this:
+After you invoke <kbd>.PREFIX_CHAPTER_NUMBER</kbd>, mom will prepend
+the current chapter number to all headings you have requested be
+numbered with
+<a href="#heading-style"><kbd>.HEADING_STYLE &lt;n&gt; NUMBER</a>.
+Thus, assuming chapter number twelve (12):
<br/>
-<span class="pre-in-pp" style="margin-bottom: -1em;">
- .HEAD "\*[DOWN 3p]First line" "\[DOWN 3p]Next line"
+<span class="pre-in-pp">
+ 1. LEVEL 1 HEADING
+ 1.1. Level 2 heading
</span>
-or
-<span class="pre-in-pp" style="margin-top: -.5em;">
- .HEAD "\v'3p'First line" "\v'3p'Next line"
+would become
+<br/>
+<span class="pre-in-pp">
+ 12.1. LEVEL 1 HEADING
+ 12.1.1. Level 2 heading
</span>
</p>
-<div class="rule-short"><hr/></div>
-
-<!-- ==================================================================== -->
-
-<h2 id="subhead-intro" class="macro-group">Subheads</h2>
-
-<ul style="margin-left: -.5em;">
- <li><a href="#subhead">Tag: SUBHEAD</a></li>
- <li><a href="#subhead-control">Subhead control macros</a></li>
-</ul>
-
<p>
-Subheads should be used any place you want titles to introduce
-sections of a document below heads. If you wish, mom can
-number subheads for you. Subhead numbers can also be included
-hierarchically in numbered
-<a href="#parahead-intro">paraheads</a>.
+When you invoke <kbd>.PREFIX_CHAPTER_NUMBER</kbd> without an
+argument, mom checks to see whether the argument you passed to
+<a href="docprocessing.html#chapter">CHAPTER</a>
+is a digit. If it is, she immediately starts pre-pending the
+current chapter number to numbered head elements. If it isn&#8217;t
+(say you&#8217;ve called your chapter &#8220;One&#8221; instead
+of &#8220;1&#8221;), mom will abort with a request that you pass
+PREFIX_CHAPTER_NUMBER a digit representing the current chapter
+number.
</p>
<p>
-By default, subheads are flush left. In
-<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPESET</kbd></a>,
-they are set bold, slightly larger than paragraph text. In
-<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPEWRITE</kbd></a>,
-they are underlined. A single linespace precedes them in both
-printstyles, and a tiny space adjustment raises them slightly
-above text that comes afterwards for greater clarity in document
-structuring.
+In collated documents, mom automatically increments
+the digit used by PREFIX_CHAPTER_NUMBER by one
+(current chapter digit + 1) every time you invoke <a
+href="rectoverso.html#collate"><kbd>.COLLATE</kbd></a>, even if
+you&#8217;ve (temporarily) turned off the prefixing of chapter
+numbers. Thus, even if you call your chapters &#8220;One&#8221;,
+&#8220;Two&#8221;, &#8220;Three&#8221; instead of &#8220;1&#8221;,
+&#8220;2&#8221;, &#8220;3&#8221;, mom will Do The Right Thing
+with respect to numbering head elements in all collated chapters
+following the first invocation of PREFIX_CHAPTER_NUMBER (assuming,
+of course, that the collated chapters are in incrementing order; if
+not, you must must put
+<br/>
+<span class="pre-in-pp">
+ .PREFIX_CHAPTER_NUMBER &lt;chapter number&gt;
+</span>
+somewhere after the invocation of COLLATE and before the first
+numbered head element of each collated document).
</p>
<p>
-If these defaults don&#8217;t suit you, you can change them with the
-subhead control macros.
+PREFIX_CHAPTER_NUMBER can be disabled by passing it any argument
+other than a digit (eg <b>OFF, QUIT, END, X</b>, etc), although,
+as noted above, mom will keep, and&mdash;in the case of collated
+documents&mdash;increment the chapter number, allowing you to turn
+prefixing of chapter numbers to numbered head elements off and on
+according to your needs or whims.
</p>
-<!-- -SUBHEAD- -->
-
-<div class="macro-id-overline">
-<h3 id="subhead" class="macro-id">SUBHEAD</h3>
-</div>
-
-<div class="box-macro-args">
-Macro: <b>SUBHEAD</b> <kbd class="macro-args">&quot;&lt;text of subhead&gt;&quot; [ &quot;&lt;2nd line&gt;&quot; [ &quot;&lt;3rd line&gt;&quot; ... ] ]</kbd>
-</div>
-
<p>
-The argument to SUBHEAD is the text of the subhead, surrounded by
-double-quotes. If you need additional lines for a subhead, simply
-surround each line with double-quotes.
-</p>
-
-<div class="box-tip">
-<p class="tip">
<span class="note">Note:</span>
-If a subhead falls near the bottom of an output page and mom is
-unable to fit the head <i>plus at least one line of text underneath
-it</i>, she will set the subhead at the top of the next page.
-</p>
-</div>
-
-<div class="defaults-container" style="background-color: #ded4bd; border: none;">
-<h3 id="subhead-control" class="docs defaults">SUBHEAD control macros and defaults</h3>
-
-<p class="defaults">
-In addition to the usual family/font/size/quad control macros, there
-are macros to manage subhead numbering.
+Because PREFIX_CHAPTER_NUMBER takes an (optional) digit representing
+the chapter number, it&#8217;s use need not be restricted to
+<a href="docprocessing.html#doctype">DOCTYPE <kbd>CHAPTER</kbd></a>.
+You can use it with any document type. Furthermore, even if
+your doctype isn&#8217;t <kbd>CHAPTER</kbd>, you can identify
+the document as a chapter for the purposes of numbering head
+elements by invoking the macro,
+<a href="docprocessing.html#chapter"><kbd>.CHAPTER</kbd></a>,
+with a
+<a href="definitions.html#numericargument">numeric argument</a>
+in your document setup.
</p>
-<ol style="margin-top: .5em; padding-bottom: .5em;">
- <li><a href="#subhead-general">Family/font/size/colour/quad</a></li>
- <li><a href="#number-subheads">Numbering</a></li>
- <li><a href="#reset-subhead-number">Reset subhead numbering</a></li>
- <li><a href="#subhead-inlines">Vertical inline escapes inside subheads</a></li>
-</ol>
-</div>
+<div class="rule-short"><hr/></div>
-<h4 id="subhead-general" class="docs" style="margin-top: -1.5em; margin-bottom: .5em;">1. Family/font/size/quad</h4>
+<!-- ==================================================================== -->
-<div class="defaults-container" style="padding-bottom: 8px;">
-<p class="defaults" style="padding-top: 6px;">
-See
-<a href="#control-macro-args">Arguments to the control macros</a>.
-</p>
-<span class="pre defaults" style="padding-bottom: -1em;">
-.SUBHEAD_FAMILY default = prevailing document family; default is Times Roman
-.SUBHEAD_FONT default = bold
-.SUBHEAD_SIZE default = +.5 (point)
-.SUBHEAD_COLOR default = black
-.SUBHEAD_QUAD default = LEFT
-</span>
-</div>
+<h2 id="oldstyle-headings-intro" class="macro-group">Oldstyle headings</h2>
-<h4 id="number-subheads" class="docs" style="margin-top: -1.25em;">2. Number subheads</h4>
+<ul style="margin-left: -.5em;">
+ <li><a href="#oldstyle-headings">Macro: OLDSTYLE_HEADINGS</a></li>
+ <li><a href="#head">Macro: HEAD</a></li>
+ <li><a href="#subhead">Macro: SUBHEAD</a></li>
+ <li><a href="#subsubhead">Macro: SUBSUBHEAD</a></li>
+</ul>
<p>
-If you&#8217;d like your subheads numbered, simply invoke
-<kbd>.NUMBER_SUBHEADS</kbd> with no argument. Mom
-will number all subsequent subheads automatically (in ascending
-order, naturally).
+In versions of mom prior to 2.0, headings were entered by their
+commonly used names, <i>viz.</i> HEAD, SUBHEAD, and SUBSUBHEAD. The
+new
+<a href="#heading-intro">HEADING</a>
+scheme allows for greater flexibility, and permits seamless
+integration with PDF output.
</p>
<p>
-If, in addition to numbering subheads, you also request that
-<a href="#head-intro">heads</a>
-be numbered, the head number will be included in the subhead number
-(separated by a period [dot]).
+Documents created with pre-2.0 versions may still use the oldstyle
+heading names, as may new documents, however there are some
+differences in their behaviour.
</p>
<p>
-Should you wish to stop subhead numbering, invoke
-<kbd>.NUMBER_SUBHEADS</kbd> with any argument (<kbd>OFF, QUIT, END,
-X</kbd>...). Subhead numbering will cease, and the subhead number
-will not be included in the numbering of paraheads.
+Whenever mom encounters an oldstyle heading, she loads the default
+style formerly associated with the oldstyle name. See below for a
+description of the default styles in the sections
+<a href="#head">HEAD</a> (now HEADING 1),
+<a href="#subhead">SUBHEAD</a> (now HEADING 2),
+and
+<a href="#subsubhead">SUBSUBHEAD</a> (now HEADING 3).
+Mom also emits a message to stderr alerting you to what she's doing.
</p>
<p>
-See also
-<a href="#prefix-chapter-number">Prefixing chapter numbers</a>
-if you&#8217;d like chapter numbers prepended to the subhead numbers.
+The control macros formerly associated with oldstyle headings are no
+longer present in mom's macro file, which means that if you
+made changes to mom's default for those headings, you must recreate
+the changes with the
+<a href="#heading-style">HEADING_STYLE</a>
+macro. The entire style need not be recreated, only those
+parameters that differed from mom's defaults. Thus, if your HEADs
+were set flush left, instead of the oldstyle default, centered, but
+otherwise kept mom's settings, you need only do
+<br/>
+<span class="pre-in-pp">
+ .HEADING_STYLE 1 QUAD L
+</span>
</p>
-<h4 id="reset-subhead-number" class="docs" style="margin-top: -.25em;">3. Reset subhead numbering</h4>
-
-<p>
-Should you wish to reset the subhead number to &#8220;1&#8221;,
-invoke
+<div id="parahead" class="box-important">
+<p class="tip-top">
+<span class="important">Important:</span>
+The macro, PARAHEAD, is no longer available. You must create paragraph
+heads using the
+<a href="#heading">HEADING</a>
+macro. Mom will abort with an informational message whenever she
+encounters PARAHEAD. Assuming a heading level of 3 for your
+paraheads, the former defaults for PARAHEAD can be set up like this:
+<br/>
<span class="pre-in-pp">
- .RESET_SUBHEAD_NUMBER
+ .HEADING STYLE 3 FONT BI SIZE -.25 \" For PRINTSTYLE TYPESET
+ .HEADING STYLE 3 FONT I SIZE +0 \" For PRINTSTYLE TYPEWRITE
</span>
-with no argument. If, for some reason, you want mom to use a
-subhead number that is not the next in ascending order (i.e. the
-last subhead number + 1), invoke <kbd>.RESET_SUBHEAD_NUMBER</kbd>
-with the number you want, e.g.
+Equally, the macro NUMBER_PARAHEADS is no longer available. You
+must enable numbering of the correct level for paraheads with
+HEADING_STYLE. Again assuming a heading level of 3 for paraheads,
+it's simply done:
<br/>
<span class="pre-in-pp">
- .RESET_SUBHEAD_NUMBER 4
+ .HEADING_STYLE 3 NUMBER
</span>
-
-Your next subhead will be numbered &#8220;4&#8221; and subsequent
-subheads will be numbered in ascending order from &#8220;4&#8221;.
-</p>
-
-<h4 id="subhead-inlines" class="docs" style="margin-top: -.25em;">4. Vertical inline escapes inside subheads</h4>
-
-<p>
-See
-<a href="#head-inlines">Vertical inline escapes inside heads</a>.
-The information there applies equally to subheads.
</p>
-<div class="rule-short"><hr/></div>
-
-<!-- ==================================================================== -->
-
-<h2 id="parahead-intro" class="macro-group">Paragraph heads</h2>
-
-<ul style="margin-left: -.5em;">
- <li><a href="#parahead">Tag: PARAHEAD</a></li>
- <li><a href="#parahead-control">Parahead control macros</a></li>
-</ul>
-
-<p>
-Paragraph heads (paraheads) should be used any place you want titles
-to introduce paragraphs below heads or subheads. If you wish, mom
-can number paraheads for you.
-</p>
+<h3 id="parahead-usage" class="docs" style="text-transform: none; margin-top: -1em">Correct usage of paraheads</h3>
-<p>
-By default, paraheads are joined to the body of a paragraph,
-slightly indented (provided the paragraph is not a
-&#8220;first&#8221; paragraph as defined in
-<a href="#para-indent-first">Indenting initial paragraphs</a>)
-and separated from the body of the paragraph by a small amount of
-horizontal space. In
-<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPESET</kbd></a>,
-they are set bold italic, slightly larger than paragraph text. In
-<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPEWRITE</kbd></a>,
-they are underlined.
+<p style="margin-top: .5em">
+It is tempting to choose an arbitrary heading level for paraheads,
+since they are sometimes needed out-of-sequence; for example,
+immediately after a main head (level-1) in a document that
+subsequently requires subheads (level-2). In such a circumstance,
+choosing level-3 for all your paraheads might seem to make sense,
+but in fact doesn&#8217;t, since it disrupts the hierarchy of
+both the Table of Contents (if your document has one) and the PDF
+outline.
</p>
<p>
-If these defaults don&#8217;t suit you, you can change them with the
-parahead control macros.
-</p>
-
-<div class="box-tip">
-<p class="tip">
-<span class="tip">Tip:</span>
-If you really need a heading level below subhead (a sub-subhead)
-that isn&#8217;t joined to the body of a paragraph, you can trick
-PARAHEAD into giving you one by creating a paragraph that contains
-only a parahead, like this:
+Correct use of the <kbd>PARAHEAD</kbd> option to HEADING under such
+circumstances requires always assigning <kbd>PARAHEAD</kbd> to
+the next logical level in the heading hierarchy. For example, if
+there are no headings before the parahead, it should be assigned to
+level-1. If subsequently there is a main head to be followed by
+more paraheads, the main head should be level-1, and the paraheads
+level-2. This will almost certainly require assigning new style
+parameters to level-1 (with
+<a href="#heading-style">HEADING_STYLE</a>)
+and to the level now being used for paraheads. The following
+example demonstrates.
<br/>
<span class="pre-in-pp">
+ .HEADING_STYLE 1 FONT BI SIZE +.25 \" parahead style, level-1
+ .PP
+ .HEADING 1 PARAHEAD &lt;parahead&gt;
+ &lt;paragraph text&gt;
.PP
- .PARAHEAD "My Sub-Subhead"
+ .HEADING 1 PARAHEAD &lt;parahead&gt;
+ &lt;paragraph text&gt;
+ \# main head style, level-1
+ .HEADING_STYLE 1 FONT B SIZE +3 QUAD CENTER UNDERSCORE .5 2p
+ .HEADING_STYLE 2 FONT BI SIZE +.25 \" parahead style, level-2
+ .HEADING 1 &lt;main head&gt;
.PP
- &lt;text&gt;
+ &lt;paragraph text&gt;
+ .PP
+ .HEADING 2 PARAHEAD &lt;parahead&gt;
+ &lt;paragraph text&gt;
</span>
</p>
</div>
-<!-- -PARAHEAD- -->
+<!-- -OLDSTYLE_HEADINGS - -->
<div class="macro-id-overline">
-<h3 id="parahead" class="macro-id">PARAHEAD</h3>
+<h3 id="oldstyle-headings" class="macro-id">OLDSTYLE HEADINGS</h3>
</div>
<div class="box-macro-args">
-Macro: <b>PARAHEAD</b> <kbd class="macro-args">&quot;&lt;text of parahead&gt;&quot;</kbd>
+Macro: <b>OLDSTYLE_HEADINGS</b>
</div>
<p>
-PARAHEAD must come after
-<a href="#pp">PP</a>
-or it will not work.
-</p>
-
-<p>
-The argument is the text of the parahead, surrounded by
-double-quotes. Because paraheads are joined to the body of a
-paragraph, they accept only one argument (see
-<a href="#head">HEAD</a>
-and
-<a href="#subhead">SUBHEAD</a>).
+OLDSTYLE_HEADINGS requires no argument. It instructs mom to set the
+first three levels of heading to the parameters of her old defaults
+for HEAD, SUBHEAD, and SUBSUBHEAD. Use of OLDSTYLE_HEADINGS will
+also prevent mom from generating the message she issues the first
+time she encounters HEAD, SUBHEAD, and SUBSUBHEAD.
</p>
-<div class="defaults-container" style="background-color: #ded4bd; border: none;">
-<h3 id="parahead-control" class="docs defaults">PARAHEAD control macros and defaults</h3>
-
-<p class="defaults">
-In addition to the family/font/size/colour/indent control macros,
-there are macros to manage parahead numbering.
-</p>
+<!-- -HEAD- -->
-<ol style="margin-top: .5em; padding-bottom: .5em;">
- <li><a href="#parahead-general">Family/font/size/color</a></li>
- <li><a href="#parahead-indent">Indent</a></li>
- <li><a href="#parahead-space">Horizontal space</a></li>
- <li><a href="#number-paraheads">Numbering</a></li>
- <li><a href="#reset-parahead-number">Reset parahead numbering</a></li>
-</ol>
+<div id="head" class="box-macro-args">
+Macro: <b>HEAD</b> <kbd class="macro-args">[ NAMED &lt;id&gt; ] &quot;&lt;text of head&gt;&quot; &quot;&lt;another line&gt;&quot;...</kbd>
</div>
-<h4 id="parahead-general" class="docs" style="margin-top: -1.5em; margin-bottom: .5em;">1. Family/font/size/colour</h4>
-
-<div class="defaults-container" style="padding-bottom: 8px;">
-<p class="defaults" style="padding-top: 6px;">
-See
-<a href="#control-macro-args">Arguments to the control macros</a>.
+<p>
+When invoked for the first time, with or without
+<a href="oldstyle-headings">OLDSTYLE_HEADINGS</a>,
+HEAD sets the parameters for level-1 headings to mom&#8217;s old
+HEAD defaults, then prints the head as a level-1 heading.
+The <kbd>NAMED &lt;id&gt;</kbd> optional argument is explained in
+the description of
+<a href="#heading">HEADING</a>.
</p>
-<span class="pre defaults">
-.PARAHEAD_FAMILY default = prevailing document family; default is Times Roman
-.PARAHEAD_FONT default = bold italic
-.PARAHEAD_SIZE default = +.5 (point)
-.PARAHEAD_COLOR default = black*
-
-*If you colourize paragraph text, paraheads will appear in the same
- colour as the text unless you explicitly tell mom to colour them
- otherwise by invoking .PARAHEAD_COLOR. If you do want paraheads
- that are coloured the same as paragraph text, it&#8217;s generally a good
- idea to invoke .PARAHEAD_COLOR anyway (with the same colour used
- for paragraph text), just to let mom know.
-</span>
-</div>
-<h4 id="parahead-indent" class="docs" style="margin-top: -1.25em;">2. Indent</h4>
+<p>
+If, prior to invoking HEAD, you have given any parameters to level-1
+heads with
+<a href="#heading-style">HEADING STYLE</a>,
+they will be preserved; any you give afterwards will be respected.
+</p>
<p>
-Unlike other control macros that end in
-<a href="#control-indents">_INDENT</a>,
-the argument to the macro that controls indenting of paragraph
-heads (PARAHEAD_INDENT) is not relative to the first-line indent of
-normal paragraphs. In other words, it takes an absolute value, and
-requires a
-<a href="definitions.html#unitofmeasure">unit of measure</a>.
-For example, to set the paragraph head indent to 2-1/2 picas, you
-do:
+The former style defaults for HEAD were:
<br/>
<span class="pre-in-pp">
- .PARAHEAD_INDENT 2.5P
+ FAMILY = prevailing document family
+ FONT = bold (TYPESET); roman (TYPEWRITE)
+ SIZE = +1 (TYPESET); +0 (TYPEWRITE)
+ QUAD = C
+ UNDERSCORE .5 2p
+ CAPS
</span>
</p>
-<p>
-Mom&#8217;s default indent for paragraph heads is 1/2 the first-line
-indent of normal paragraphs (both printstyles). However, as stated
-above, if you choose to change the indent, you must give an absolute
-value (unless you&#8217;re a groff expert and want to manipulate the
-number register <kbd>\n[#PP_INDENT]u</kbd> arithmetically as the
-argument to PARAHEAD_INDENT for an indent that&#8217;s relative to
-PP_INDENT.)
-</p>
-
<div class="box-tip">
<p class="tip">
<span class="note">Note:</span>
-Paragraph heads in &#8220;first paragraphs&#8221;, as defined in
-<a href="#para-indent-first">Indenting initial paragraphs</a>,
-are not indented unless you turn
-<kbd><a href="#indent-first-paras">INDENT_FIRST_PARAS</a></kbd>
-on.
-</p>
-</div>
-
-<h4 id="parahead-space" class="docs" style="margin-top: -.25em;">3. Horizontal space</h4>
-
-<p>
-The default amount of horizontal space between a parahead and the
-text that begins the body of a paragraph is 2/3 of an
-<a href="definitions.html#em">em</a>
-for
-<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPESET</kbd></a>)
-and 1
-<a href="definitions.html#figurespace">figure space</a>
-for
-<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPEWRITE</kbd></a>).
-</p>
-
-<p>
-The default for <kbd>TYPEWRITE</kbd> is fixed, but if the default
-for <kbd>TYPESET</kbd> doesn&#8217;t suit you, you can change it
-with the macro, PARAHEAD_SPACE.
-</p>
-<p>
-PARAHEAD_SPACE takes just one argument: the amount of space you
-want, with a
-<a href="definitions.html#unitofmeasure">unit of measure</a>
-appended. Thus, if you want the horizontal space between a parahead
-and the start of paragraph text to be 6
-<a href="definitions.html#picaspoints">points</a>,
-you&#8217;d do:
+The macro, NUMBER_HEADS, from pre-2.0 versions of mom, can still be
+used, though it is now a wrapper for
<br/>
<span class="pre-in-pp">
- .PARAHEAD_SPACE 6p
+ .HEADING_STYLE 1 NUMBER
</span>
+Mom will alert you to this on stderr.
</p>
+</div>
-<h4 id="number-paraheads" class="docs" style="margin-top: -1.25em;">4. Numbering</h4>
-
-<p>
-If you&#8217;d like your paraheads numbered, simply invoke
-<kbd>.NUMBER_PARAHEADS</kbd> with no argument. Mom
-will number all subsequent paraheads automatically (in ascending
-order, naturally).
-</p>
-
-<p>
-If, in addition to numbering paraheads, you also request that
-<a href="#head-intro">heads</a>
-and
-<a href="#subhead-intro">subheads</a>
-be numbered, the head and/or subhead number will be included in the
-parahead number (separated by a period [dot]).
-</p>
+<!-- -SUBHEAD- -->
-<p>
-Should you wish to stop parahead numbering, invoke
-<kbd>.NUMBER_PARAHEADS</kbd> with any argument (<kbd>OFF, QUIT, END,
-X</kbd>...). Parahead numbering will cease.
-</p>
+<div id="subhead" class="box-macro-args">
+Macro: <b>SUBHEAD</b> <kbd class="macro-args">[ NAMED &lt;id&gt; ] &quot;&lt;text of head&gt;&quot; &quot;&lt;another line&gt;&quot;...</kbd>
+</div>
<p>
-See also
-<a href="#prefix-chapter-number">Prefixing chapter numbers</a>
-if you&#8217;d like chapter numbers prepended to the paragraph head
-numbers.
+When invoked for the first time, with or without
+<a href="oldstyle-headings">OLDSTYLE_HEADINGS</a>,
+SUBHEAD sets the parameters for level-2 headings to mom&#8217;s old
+SUBHEAD defaults, then prints the subhead as a level-2 heading.
+The <kbd>NAMED &lt;id&gt;</kbd> optional argument is explained in
+the description of
+<a href="#heading">HEADING</a>.
</p>
-<h4 id="reset-parahead-number" class="docs" style="margin-top: -.25em;">5. Reset paragraph head numbering</h4>
-
<p>
-Should you wish to reset the parahead number to &#8220;1&#8221;,
-invoke
+The former style defaults for SUBHEAD were:
+<br/>
<span class="pre-in-pp">
- .RESET_PARAHEAD_NUMBER
+ FAMILY = prevailing document family
+ FONT = bold (TYPESET); italic, ie underlined (TYPEWRITE)
+ SIZE = +.5 (TYPESET); +0 (TYPEWRITE)
+ QUAD = L
+ BASELINE_ADJUST = 1/8 the current leading
</span>
-with no argument. If, for some reason, you want mom to use a
-parahead number that is not the next in ascending order (i.e. the
-last parahead number + 1), invoke <kbd>.RESET_PARAHEAD_NUMBER</kbd>
-with the number you want, e.g.
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+The macro, NUMBER_SUBHEADS, from pre-2.0 versions of mom, can still be
+used, though it is now a wrapper for
<br/>
<span class="pre-in-pp">
- .RESET_PARAHEAD_NUMBER 7
+ .HEADING_STYLE 2 NUMBER
</span>
-Your next parahead will be numbered &#8220;7&#8221; and subsequent
-paraheads will be numbered in ascending order from &#8220;7&#8221;.
+Mom will alert you to this on stderr.
</p>
+</div>
-<!-- -PREFIX_CHAPTER_NUMBER- -->
+<!-- -SUBSUBHEAD- -->
-<div class="examples-container" style="margin-bottom: 1.5em;">
-<div id="prefix-chapter-number" class="macro-id-overline" style="border-top: none;">
-<h3 class="macro-id" style="margin-top: 9px; text-transform: none; font-size: 105%;">Prefixing chapter numbers</h3>
-</div>
+<div id="subsubhead" class="box-macro-args">
+Macro: <b>SUBSUBHEAD</b> <kbd class="macro-args">[ NAMED &lt;id&gt; ] &quot;&lt;text of head&gt;&quot; &quot;&lt;another line&gt;&quot;...</kbd>
-<div class="box-macro-args" style="width: 686px;">
-Macro: <b>PREFIX_CHAPTER_NUMBER</b> <kbd class="macro-args">&lt;none&gt; | &lt;chapter number as digit&gt; | &lt;anything&gt;</kbd>
</div>
<p>
-If you&#8217;ve requested numbering of heads, subheads and/or paragraph
-heads (with
-<a href="#number-heads">NUMBER_HEADS</a>,
-<a href="#number-subheads">NUMBER_SUBHEADS</a>
-and/or
-<a href="#number-paraheads">NUMBER_PARAHEADS</a>)
-and you&#8217;d like mom, in addition, to prefix
-a chapter number to the numbering scheme, you can do so with
-PREFIX_CHAPTER_NUMBER.
+When invoked for the first time, with or without
+<a href="oldstyle-headings">OLDSTYLE_HEADINGS</a>,
+SUBSUBHEAD sets the parameters for level-3 headings to mom&#8217;s old
+SUBSUBHEAD defaults, then prints the subsubhead as a level-3 heading.
+The <kbd>NAMED &lt;id&gt;</kbd> optional argument is explained in
+the description of
+<a href="#heading">HEADING</a>.
</p>
<p>
-After you invoke <kbd>.PREFIX_CHAPTER_NUMBER</kbd>, mom will prepend
-the current chapter number to all subsequent head elements (main
-heads, subheads or paragraph heads) for which you have requested
-numbering. Thus, assuming chapter number twelve (12):
+The former style defaults for SUBSUBHEAD were:
<br/>
<span class="pre-in-pp">
- 1. FIRST MAIN HEAD
- ------------------
-
- 1.1. First Subhead Under Main Head
+ FAMILY = prevailing document family
+ FONT = italic (TYPESET); roman (TYPEWRITE)
+ SIZE = +.5 (TYPESET); +0 (TYPEWRITE)
+ QUAD = L
+ BASELINE_ADJUST = 1/8 the current leading
</span>
-becomes
-<br/>
-<span class="pre-in-pp">
- 12.1. FIRST MAIN HEAD
- ---------------------
-
- 12.1.1. First Subhead Under Main Head
-</span>
-</p>
-
-<p>
-When you invoke <kbd>.PREFIX_CHAPTER_NUMBER</kbd> without an
-argument, mom checks to see whether the argument
-you passed to
-<a href="docprocessing.html#chapter">CHAPTER</a>
-is a digit. If it is, she immediately starts pre-pending the
-current chapter number to numbered head elements. If it isn&#8217;t
-(say you&#8217;ve called your chapter &#8220;One&#8221; instead of
-&#8220;1&#8221;), mom will abort with a request that
-you pass PREFIX_CHAPTER_NUMBER a digit representing
-the current chapter number.
</p>
-<p>
-In collated documents, mom automatically increments
-the digit used by PREFIX_CHAPTER_NUMBER by one
-(current chapter digit + 1) every time you invoke
-<a href="rectoverso.html#collate"><kbd>.COLLATE</kbd></a>,
-even if you&#8217;ve (temporarily) turned off the prefixing of chapter
-numbers. Thus, even if you call your chapters &#8220;One&#8221;,
-&#8220;Two&#8221;, &#8220;Three&#8221; instead of &#8220;1&#8221;,
-&#8220;2&#8221;, &#8220;3&#8221;, mom will Do
-The Right Thing with respect to numbering head elements in
-all collated chapters following the first invocation of
-PREFIX_CHAPTER_NUMBER (assuming, of course,
-that the collated chapters are in incrementing order; if
-not, you <i>must</i> must put
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+The macro, NUMBER_SUBSUBHEADS, from pre-2.0 versions of mom, can still be
+used, though it is now a wrapper for
<br/>
<span class="pre-in-pp">
- .PREFIX_CHAPTER_NUMBER &lt;chapter number&gt;
+ .HEADING_STYLE 3 NUMBER
</span>
-somewhere after the invocation of COLLATE and
-before the first numbered head element of each collated document).
-</p>
-
-<p>
-PREFIX_CHAPTER_NUMBER can be disabled by passing
-it any argument other than a digit (e.g. <b>OFF, QUIT, END,
-X</b>, etc), although, as noted above, mom
-will keep, and&mdash;in the case of collated
-documents&mdash;increment the chapter number, allowing you to turn
-prefixing of
-chapter numbers to numbered head elements off and on according to
-your needs or whims.
-</p>
-
-<p>
-<span class="note">Note:</span>
-Because PREFIX_CHAPTER_NUMBER takes an (optional) digit representing
-the chapter number, it&#8217;s use need not be restricted to
-<a href="docprocessing.html#doctype">DOCTYPE <kbd>CHAPTER</kbd></a>.
-You can use it with any document type. Furthermore, even if
-your doctype isn&#8217;t <kbd>CHAPTER</kbd>, you can identify
-the document as a chapter <i>for the purposes of numbering head
-elements</i> by invoking the macro,
-<a href="docprocessing.html#chapter"><kbd>.CHAPTER</kbd></a>,
-with a
-<a href="definitions.html#numericargument">numeric argument</a>
-in your document setup.
+Mom will alert you to this on stderr.
</p>
</div>
@@ -1843,7 +1765,7 @@ in your document setup.
<p>
Linebreaks (&#8220;author linebreaks&#8221;, &#8220;section
breaks&#8221;) are gaps in the vertical flow of running text that
-indicate a shift in content (e.g. a scene change in story). They
+indicate a shift in content (eg a scene change in story). They
are frequently set off by typographic symbols, sometimes whimsical
in nature.
</p>
@@ -1903,8 +1825,8 @@ and a vertical adjustment factor.
</p>
<p>
-The first argument is any valid groff character (e.g. <kbd>*</kbd>
-[an asterisk], <kbd>\(dg</kbd> [a dagger], <kbd>\f(ZD\N'141\fP</kbd>
+The first argument is any valid groff character (eg <kbd>*</kbd>
+[an asterisk], <kbd>\[dg]</kbd> [a dagger], <kbd>\f[ZD]\N'141\fP</kbd>
[an arbitrary character from Zapf Dingbats], <kbd>\l'4P'</kbd> [a
4-pica long rule]). Mom sets the character centred on the current
line length. (See <kbd>man groff_char</kbd> for a list of all
@@ -1937,7 +1859,7 @@ Mom&#8217;s default for LINEBREAK_CHAR is
<span class="pre-in-pp">
.LINEBREAK_CHAR * 3 -3p
</span>
-i.e. three asterisks, lowered 3 points from their normal vertical
+ie three asterisks, lowered 3 points from their normal vertical
position (for
<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPESET</kbd></a>;
the vertical adjustment is -2 points for
@@ -1947,7 +1869,7 @@ the vertical adjustment is -2 points for
<h4 id="linebreak-color" class="docs" style="margin-top: -.25em; margin-bottom: .5em;">2. Linebreak colour</h4>
<div class="box-macro-args">
-Macro: <b>LINEBREAK_COLOR</b> <kbd class="macro-args">&lt;color name&gt;</kbd>
+Macro: <b>LINEBREAK_COLOR</b> <kbd class="macro-args">&lt;colourname&gt;</kbd>
</div>
<p class="alias" style="margin-bottom: 0;">
<i>Alias:</i> <b>SECTION_COLOR</b>
@@ -1988,7 +1910,7 @@ cited text.)
<p>
Since mom originally came into being to serve the needs of creative
-writers (i.e. novelists, short story writers, etc.&mdash;not
+writers (ie novelists, short story writers, etc.&mdash;not
to cast aspersions on the creativity of mathematicians and
programmers), she sets quotes in italics
<a href="docprocessing.html#printstyle">(PRINTSTYLE <kbd>TYPESET</kbd>)</a>
@@ -1997,12 +1919,12 @@ or underlined
indented from the left margin. Obviously, she&#8217;s thinking
&#8220;quotes from poetry or song lyrics&#8221;, but with the
<a href="#quote-control">QUOTE control macros</a>
-you can change her defaults so QUOTE serves other needs, e.g.
+you can change her defaults so QUOTE serves other needs, eg
entering verbatim snippets of programming code, command line
instructions, and so on. (See the
<a href="#code">CODE</a>
-for a convenience macro to assist in including programming code
-snippets in documents.)
+for a convenience macro to assist in including code snippets in
+documents.)
</p>
<h3 id="quote-spacing" class="docs">QUOTE spacing</h3>
@@ -2016,7 +1938,7 @@ this is always one full linespace. In
<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPESET</kbd></a>,
it&#8217;s 1/2 of the prevailing
<a href="definitions.html#leading">leading</a>
-if the quote fits fully on the page (i.e. with running text above
+if the quote fits fully on the page (ie with running text above
and below it), otherwise it&#8217;s a full linespace either above
or below as is necessary to balance the page to the bottom margin.
This behaviour can be changed with the control macro
@@ -2025,27 +1947,8 @@ This behaviour can be changed with the control macro
<div class="box-tip">
<h2 id="quote-spacing-notes" class="docs" style="padding-top: 9px; font-size: 100%;">Further notes on quote spacing</h2>
-<p class="cefaults">
-As of version 1.3 of mom, handling of the vertical whitespace around
-quotes changed slightly from its original implementation.
-</p>
-
-<p>
-In versions of mom prior to 1.3, it was not possible to alter the
-<a href="definitions.html#leading">leading</a>
-of quotes and blockquotes (which was the same as the document
-leading), ensuring that the vertical whitespace remained consistent,
-as described above.
-</p>
-<p>
-As of version 1.3, it became possible to change the
-leading of quotes and blockquotes with <kbd>.QUOTE_AUTOLEAD</kbd> and
-<kbd>BLOCKQUOTE_AUTOLEAD</kbd>, with the following changes in
-mom&#8217;s behaviour:
-</p>
-
-<p>
+<p clas"defaults">
If your quote (or blockquote) leading differs from the document
leading, mom attempts to observe the same rules for vertical
whitespace outlined above; however, she will also insert a small,
@@ -2061,15 +1964,19 @@ equalized whitespace at marked places is a limitation of groff,
which, by and large, processes text on a line-per-line basis.)
</p>
+<h3 id="no-shim" class="docs">Disable shimming of quotes and blockquotes</h3>
+
<p>
-If you don&#8217;t want the behaviour described above (i.e. you
-don&#8217;t want mom shimming [possibly irregularly linespaced]
-quotes or blockquotes), issue the macro
+If you don&#8217;t want the behaviour described above (ie you
+don&#8217;t want mom shimming
+quotes and blockquotes), issue the macro
<br/>
<span class="pre-in-pp">
.NO_SHIM
</span>
-prior to invoking <kbd>.QUOTE</kbd> or <kbd>.BLOCKQUOTE</kbd>.
+in the style sheet section of your document (ie after PRINTSTYLE but
+before START), which will disable shimming globally, or on a
+per-instance basis prior to <kbd>.QUOTE</kbd> or <kbd>.BLOCKQUOTE</kbd>.
</p>
<p>
@@ -2079,6 +1986,13 @@ behaviour in this matter, invoke <kbd>.NO_SHIM&nbsp;OFF</kbd> (or
<kbd>QUIT, END, X</kbd>, etc).
</p>
+<p>
+Please note that <kbd>NO_SHIM</kbd> disables shimming before
+headings, and the
+<a href="docprocessing.html#shim">SHIM</a>
+macro itself.
+</p>
+
<p class="tip-bottom">
If you don&#8217;t provide mom with a QUOTE_AUTOLEAD, quotes are
leaded at the default for normal running text, meaning that multiple
@@ -2100,7 +2014,7 @@ Macro: <b>QUOTE</b> <kbd class="macro-args">toggle</kbd>
QUOTE is a toggle macro. To begin a section
of quoted text, invoke it with no argument, then type in your
quote. When you&#8217;re finished, invoke <kbd>.QUOTE</kbd> with any
-argument (e.g. <kbd>OFF, END, X, Q</kbd>...) to turn it off. Example:
+argument (eg <kbd>OFF, END, X, Q</kbd>...) to turn it off. Example:
<br/>
<span class="pre-in-pp">
.QUOTE
@@ -2120,7 +2034,6 @@ argument (e.g. <kbd>OFF, END, X, Q</kbd>...) to turn it off. Example:
<li><a href="#quote-general">Family/font/size/leading/colour/indent</a></li>
<li><a href="#always-fullspace-quotes">Spacing above and below quotes (typeset only)</a></li>
<li><a href="#underline-quotes">Underlining quotes (typewrite only)</a></li>
- <li><a href="#break-quote">Manually break a footnoted quote that crosses pages/columns (deprecated)</a></li>
</ol>
</div>
@@ -2134,7 +2047,7 @@ See
<span class="pre defaults">
.QUOTE_FAMILY default = prevailing document family; default is Times Roman
.QUOTE_FONT default = italic; underlined in TYPEWRITE
-.QUOTE_SIZE default = +0 (i.e. same size as paragraph text)
+.QUOTE_SIZE default = +0 (ie same size as paragraph text)
.QUOTE_AUTOLEAD default = none; leading of quotes is the same as paragraphs
.QUOTE_COLOR default = black
.QUOTE_INDENT (see below, "Quote indent")
@@ -2144,45 +2057,37 @@ See
<h4 id="quote-indent" class="docs" style="margin-top: -1.5em;">Quote indent</h4>
<p>
-Prior to version 1.4-b, mom allowed only the passing of an integer
-to the macro, <kbd>.QUOTE_INDENT</kbd>. The integer represented the
-amount by which to multiply the argument passed to
-<kbd><a href="#para-indent">PARA_INDENT</a></kbd>
-to arrive at an indent for quotes (and blockquotes).
+<kbd>QUOTE_INDENT</kbd> takes one of two kinds of argument: an integer
+representing the amount by which to multiply the argument passed to
+<a href="#para-indent"><kbd>.PARA_INDENT</kbd></a>
+(by default, 2
+<a href="definitions.html#em">ems</a>
+for TYPESET, 3
+<a href="definitions.html#picaspoints">picas</a>
+for TYPEWRITE) to arrive at the quote indent, or a distance with a
+<a href="definitions.html#unitofmesaure">unit of measure</a>
+appended. Both result in quotes being indented equally from the
+left and right margins.
</p>
<p>
-As of version 1.4-b, you can now append a
-<a href="definitions.html#unitofmeasure">unit of measure</a>
-to the argument passed to <kbd>.QUOTE_INDENT</kbd>, thus
-setting an absolute indent, relative to nothing. The old
-behaviour is still respected, though; in other words, if you
-pass <kbd>.QUOTE_INDENT</kbd> an integer with no unit of measure
-appended, the integer represents the amount by which to multiply
-<kbd>.PARA_INDENT</kbd> to arrive at an indent for quotes (and
-blockquotes).
+The default value for QUOTE_INDENT is 3 (for
+<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPESET</kbd></a>)
+and 1 (for
+<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPEWRITE</kbd></a>).
</p>
<div class="box-tip">
-<p class="tip">
+<p class="tip-top">
<span class="note">Note:</span>
-If your PARA_INDENT is 0 (i.e. no indenting of the first line of
+If your PARA_INDENT is 0 (ie no indenting of the first line of
paragraphs), you <i>must</i> set a QUOTE_INDENT yourself, with a
unit of measure appended to the argument. Mom has no default for
QUOTE_INDENT if paragraph first lines are not being indented.
</p>
-</div>
-
-<p>
-The default value for QUOTE_INDENT is 3 (for
-<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPESET</kbd></a>)
-and 1 (for
-<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPEWRITE</kbd></a>).
-</p>
-<div class="box-tip">
-<p class="tip">
-<span class="note">Note:</span>
+<p class="tip-bottom">
+<span class="note">Additional note:</span>
QUOTE_INDENT also sets the indent for
<a href="#blockquote">blockquotes</a>.
</p>
@@ -2224,53 +2129,16 @@ quotes.
</p>
<p>
-If you not only wish that mom not underline
-quotes, but also that she set them in italic, you must follow each
-instance of QUOTE with the typesetting macro
+If you not only wish that mom not underline quotes, but also that
+she set them in italic, you must follow each instance of QUOTE with
+the typesetting macro
<a href="typesetting.html#font">FT I</a>.
-Furthermore, since mom underlines all instances of
-italics by default in <b>PRINTSTYLE TYPEWRITE</b>, you
-must also make sure that ITALIC_MEANS_ITALIC is
-enabled (see
+Furthermore, since mom underlines all instances of italics by
+default in <b>PRINTSTYLE TYPEWRITE</b>, you must also make sure that
+ITALIC_MEANS_ITALIC is enabled (see
<a href="docprocessing.html#typewrite-control">PRINTSTYLE TYPEWRITE control macros</a>).
</p>
-<h4 id="break-quote" class="docs">4. Manually break a footnoted quote that crosses pages/columns (deprecated)</h4>
-
-<div class="box-tip">
-<p class="tip">
-<i>As of version 1.1.9, the macro</i> BREAK_QUOTE <i>became obsolete
-(or, at least, should have become obsolete.) It remains here for
-backward compatibility with documents created prior to 1.1.9, and
-just in case despite my efforts to make it obsolete you still
-encounter the problem it&#8217;s supposed to fix. Should you find
-yourself having to use</i> BREAK_QUOTE <i>while running</i> mom
-1.1.9 <i>or higher, please notify me immediately.</i>
-</p>
-</div>
-
-<p style="margin-top: -.5em;">
-Exceptionally, a quote or blockquote containing a footnote may
-cross a page or column. When this happens, the footnote marker may
-not be correct for its position relative to other footnotes on the
-page, and the footnote itself may appear on the wrong page or at the
-bottom of the wrong column. When this happens, study your output to
-determine the precise point at which the quote breaks (or at which
-you want it to break), and add
-<span class="pre-in-pp">
- .BREAK_QUOTE
-</span>
-on a line by itself afterwards. No other intervention is required,
-and the footnote(s) will be marked correctly and appear on the
-correct page.
-</p>
-
-<p>
-<kbd>.BREAK_QUOTE</kbd> may be used with both quotes and
-blockquotes, and hence is aliased as <kbd>.BREAK_BLOCKQUOTE</kbd>,
-<kbd>BREAK_CITATION</kbd> and <kbd>BREAK_CITE</kbd>.
-</p>
-
<div class="rule-short"><hr/></div>
<!-- ==================================================================== -->
@@ -2326,7 +2194,7 @@ Macro: <b>BLOCKQUOTE</b> <kbd class="macro-args">toggle</kbd>
BLOCKQUOTE is a toggle macro. To begin a cited passage, invoke
the tag with no argument, then type in your blockquote. When
you&#8217;re finished, invoke <kbd>.BLOCKQUOTE</kbd> with any
-argument (e.g. <kbd>OFF, END, X, Q</kbd>...) to turn it off.
+argument (eg <kbd>OFF, END, X, Q</kbd>...) to turn it off.
Example:
<br/>
<span class="pre-in-pp">
@@ -2358,7 +2226,6 @@ tag, as well as in any of the control macros that begin or end with
<ol style="margin-top: .5em; padding-bottom: .5em;">
<li><a href="#blockquote-general">Family/font/size/leading/colour/quad/indent</a></li>
<li><a href="#bq-always-fullspace-quotes">Spacing above and below (typeset only)</a></li>
- <li><a href="#break-quote">Manually break a footnoted blockquote that crosses pages/columns</a></li>
</ol>
</div>
@@ -2383,48 +2250,45 @@ See
<h4 id="blockquote-indent" class="docs" style="margin-top: -1.5em;">Blockquote indent</h4>
<p>
-Prior to version 1.4-b, mom allowed only the passing of an integer
-to the macro, BLOCKQUOTE_INDENT. The integer represented the amount
-by which to multiply the argument passed to
-<kbd><a href="#para-indent">PARA_INDENT</a></kbd>
-to arrive at an indent for blockquotes (and quotes).
-</p>
-
-<p>
-As of version 1.4-b, you can append a
-<a href="definitions.html#unitofmeasure">unit of measure</a>
-to the argument passed to <kbd>.BLOCKQUOTE_INDENT</kbd>, thus
-setting an absolute indent, relative to nothing. The old
-behaviour is still respected, though. In other words, if you pass
-<kbd>.BLOCKQUOTE_INDENT</kbd> an integer with no unit of measure
-appended, the integer represents the amount by which to multiply
-<kbd>.PARA_INDENT</kbd> to arrive at an indent for blockquotes (and
-quotes).
+<kbd>BLOCKQUOTE_INDENT</kbd> takes one of two kinds of argument: an
+integer representing the amount by which to multiply the argument
+passed to
+<a href="#para-indent"><kbd>.PARA_INDENT</kbd></a>
+(by default, 2
+<a href="definitions.html#em">ems</a>
+for TYPESET, 3
+<a href="definitions.html#picaspoints">picas</a>
+for TYPEWRITE) to arrive at the blockquote indent, or a distance with a
+<a href="definitions.html#unitofmesaure">unit of measure</a>
+appended. Both result in blockquotes being indented equally from
+the left and right margins.
</p>
<p>
-The default value for <kbd>.BLOCKQUOTE_INDENT</kbd> is 3 (for
+The default value for BLOCKQUOTE_INDENT is 3 (for
<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPESET</kbd></a>)
-and 2 (for PRINTSTYLE
+and 1 (for
<a href="docprocessing.html#printstyle">PRINTSTYLE <kbd>TYPEWRITE</kbd></a>).
</p>
<div class="box-tip">
<p class="tip-top">
<span class="note">Note:</span>
-If your PARA_INDENT is 0 (i.e. no indenting of the first line of
-paragraphs), you must set a BLOCKQUOTE_INDENT yourself, with a
-unit of measure appended to the argument. Mom has no default for
+If your PARA_INDENT is 0 (ie no indenting of the first line of
+paragraphs), you <i>must</i> set a BLOCKQUOTE_INDENT yourself, with
+a unit of measure appended to the argument. Mom has no default for
BLOCKQUOTE_INDENT if paragraph first lines are not being indented.
</p>
<p class="tip-bottom">
-<span class="additional-note">Additional note:</span>
+<span class="note">Additional note:</span>
BLOCKQUOTE_INDENT also sets the indent for
-<a href="#quote">QUOTES</a>.
+<a href="#quote">quotes</a>.
</p>
</div>
+
+
<h4 id="bq-always-fullspace-quotes" class="docs">2. Spacing above and below blockquotes (typeset only)</h4>
<p>
@@ -2497,7 +2361,7 @@ underlining for the duration of CODE.
<p>
Passing any argument other than <kbd>BR</kbd>, <kbd>BREAK</kbd>
-or <kbd>SPREAD</kbd> to CODE (e.g. <kbd>OFF, QUIT, END, X,</kbd>
+or <kbd>SPREAD</kbd> to CODE (eg <kbd>OFF, QUIT, END, X,</kbd>
etc.) turns CODE off and returns the family, font, smartquotes
and (if applicable) underlining of quotes to their former state.
If you&#8217;ve used the inline escape, <kbd>\*[CODE]</kbd>, to
@@ -2524,7 +2388,7 @@ the escape character with something else.
<kbd>.CODE</kbd> does not cause a line break when
you&#8217;re in a
<a href="definitions.html#filled">fill mode</a>
-(i.e.
+(ie
<a href="typesetting.html#justify">JUSTIFY</a>
or
<a href="typesetting.html#quad">QUAD</a>
@@ -2539,12 +2403,12 @@ it as well, invoke <kbd>.CODE</kbd> with the argument,
you want a break afterwards, you must supply it manually with
<a href="typesetting.html#br">BR</a>
unless what follows immediately is a macro that automatically causes
-a break (e.g.
+a break (eg
<a href="#pp">PP</a>).
</p>
<p>
-In all likelihood, if you want the situation described above (i.e. a
+In all likelihood, if you want the situation described above (ie a
break before and after CODE), what you probably want is to use
<a href="quote">QUOTE</a>
in conjunction with CODE, like this:
@@ -2552,7 +2416,7 @@ in conjunction with CODE, like this:
<span class="pre-in-pp">
.QUOTE
.CODE
- $ echo "Hello, world" | sed -e 's/Hello,/Goodbye, cruel'
+ $ echo "Hello, world" | sed -e 's/Hello,/Goodbye, cruel/'
.CODE OFF
.QUOTE OFF
</span>
@@ -2575,7 +2439,7 @@ a bit of code into a line, not creating a distinct code block.
<h3 id="code-control" class="docs defaults">CODE control macros and defaults</h3>
<ol style="margin-top: .5em; padding-bottom: .5em;">
- <li><a href="#code-general">Family/Font/Color</a></li>
+ <li><a href="#code-general">Family/Font/Colour</a></li>
<li><a href="#code-size">Size</a></li>
</ol>
</div>
@@ -2707,7 +2571,7 @@ Macro: <b>LIST</b> <kbd class="macro-args">[ BULLET | DASH | DIGIT | ALPHA | alp
</div>
<p>
-Invoked by itself (i.e. with no argument), LIST
+Invoked by itself (ie with no argument), LIST
initializes a list (with bullets as the default enumerator).
Afterwards, each block of input text preceded by
<kbd><a href="#item">.ITEM</a></kbd>,
@@ -2722,7 +2586,7 @@ Every time you invoke <kbd>.LIST</kbd> to start a list (as opposed to
you must supply an enumerator (and optionally, a separator) for the
list, unless you want mom&#8217;s default enumerator, which is a
bullet. Within nested lists, mom stores the enumerator, separator
-and indent for any list you return <i>backwards</i> to (i.e. with
+and indent for any list you return <i>backwards</i> to (ie with
<kbd>.LIST OFF</kbd>), but does not store any information for lists
you move <i>forward</i> to.
</p>
@@ -2746,7 +2610,7 @@ uppercase letters), <kbd>alpha</kbd> (for lowercase letters),
<p>
The arguments, <kbd>ROMAN&lt;n&gt;</kbd> and
<kbd>roman&lt;n&gt;</kbd>, are special. You must append to them
-a digit (arabic, e.g. "1" or "9" or "17") saying how many items a
+a digit (arabic, eg "1" or "9" or "17") saying how many items a
particular roman-numeralled LIST is going to have. Mom requires this
information in order to align roman numerals sensibly, and will
abort&mdash;with a message &mdash; if you don&#8217;t provide it.
@@ -2849,7 +2713,7 @@ separator.
<h3 class="docs">The third argument &ndash; prefix style</h3>
<p>
-Additionally, you may give a prefix (i.e. a character
+Additionally, you may give a prefix (ie a character
that comes <i>before</i> the enumerator) when your
enumerator style for a particular list is <kbd>DIGIT</kbd>,
<kbd>ALPHA</kbd>, <kbd>alpha</kbd>, <kbd>ROMAN&lt;n&gt;</kbd> or
@@ -2893,7 +2757,7 @@ which would produce
Any single argument to <kbd>LIST</kbd> other than
<kbd>BULLET</kbd>, <kbd>DASH</kbd>, <kbd>DIGIT</kbd>,
<kbd>ALPHA</kbd>, <kbd>alpha</kbd>, <kbd>ROMAN&lt;n&gt;</kbd>,
-<kbd>roman&lt;n&gt;</kbd> or <kbd>USER</kbd> (e.g.
+<kbd>roman&lt;n&gt;</kbd> or <kbd>USER</kbd> (eg
<kbd>LIST&nbsp;OFF</kbd> or <kbd>LIST&nbsp;BACK</kbd>) takes you out
of the current list.
</p>
@@ -2906,7 +2770,7 @@ prior to setting the list are fully restored.
<p>
If you are in a nested list, mom moves you back one list-level
-(i.e. does not take you out of the list structure) and restores the
+(ie does not take you out of the list structure) and restores the
enumerator, separator and indent appropriate to that level.
</p>
@@ -3162,7 +3026,7 @@ lines up properly.
<p>
If you&#8217;d like the roman numerals to line
-up flush right (i.e. be padded "left"), simply
+up flush right (ie be padded "left"), simply
invoke <kbd>.PAD_LIST_DIGITS&nbsp;LEFT</kbd> after
<kbd>.LIST&nbsp;ROMAN&lt;n&gt;</kbd> or
<kbd>.LIST&nbsp;roman&lt;n&gt;</kbd> and before <kbd>.ITEM</kbd>.
@@ -3256,7 +3120,7 @@ you must, at a minimum, tell it what line number you want the
<a href="definitions.html#outputline">output line</a>
to have. The optional arguments which <kbd>lines to number</kbd>
and <kbd>gutter</kbd> allow you to state which lines should
-be numbered (e.g. every five or every ten lines), and the gutter to
+be numbered (eg every five or every ten lines), and the gutter to
place between line numbers and
<a href="definitions.html#running">running text</a>.
</p>
@@ -3647,7 +3511,7 @@ You just type, for example,
.FOOTNOTE
&lt;footnote about who the hell is Schelling&gt;
.FOOTNOTE OFF
- were generally the points of discussion presenting the most
+ were generally the points of discussion presenting the most
of beauty to the imaginative Morella.
</span>
and be done with it.
@@ -3709,7 +3573,7 @@ always flush with the document&#8217;s bottom margin.
<p>
If mom sees that a portion of a footnote cannot be fit on its page,
she carries that portion over to the next page. If an entire
-footnote can&#8217;t be fit on its page (i.e. FOOTNOTE has been
+footnote can&#8217;t be fit on its page (ie FOOTNOTE has been
called too close to the bottom), she defers the footnote to the next
page, but sets it with the appropriate marker from the previous
page.
@@ -3726,7 +3590,7 @@ page if it allows her to complete the cited text on one page.
<p>
In the unfortunate happenstance that a deferred footnote is the
-only footnote on its page (i.e. it&#8217;s marked in the document
+only footnote on its page (ie it&#8217;s marked in the document
body with a star) and the page it&#8217;s deferred to has its own
footnotes, mom separates the deferred footnote from the page&#8217;s
proper footnote(s) with a blank line. This avoids the confusion
@@ -3748,7 +3612,7 @@ they&#8217;ll know the entry belongs to the previous page).
</p>
<p>
-Very exceptionally, two footnotes may have to be deferred (e.g. one
+Very exceptionally, two footnotes may have to be deferred (eg one
occurs on the second to last line of a page, and another on the last
line). In such a circumstance, mom does not add
a blank after the second deferred footnote. If you&#8217;d like a blank
@@ -3784,17 +3648,6 @@ adjusting the type on the offending page so as to circumvent the
problem.
</p>
-<div class="box-tip">
-<p class="tip">
-<span class="note">Note:</span>
-Exceptionally, you may encounter problems
-with footnotes inside quotes and blockquotes that cross a page or
-column. See
-<a href="#break-quote">BREAK_QUOTE</a>
-for a solution.
-</p>
-</div>
-
<h3 id="fn-and-punct" class="docs">Footnote markers and punctuation in the running text</h3>
<ol style="margin-left: -1.25em;">
@@ -3993,7 +3846,7 @@ See <span style="font-style: normal"><a href="#footnote-note">HYPER-IMPORTANT NO
<p>
FOOTNOTE is a toggle macro, therefore invoking it on a line by
itself allows you to enter a footnote in the body of a document.
-Invoking it with any argument other than INDENT (i.e. <kbd>OFF,
+Invoking it with any argument other than INDENT (ie <kbd>OFF,
QUIT, END, X...</kbd>) tells mom you&#8217;re finished.
</p>
@@ -4044,7 +3897,7 @@ modes
or
<a href="typesetting.html#quad">QUAD</a>),
the line <i>after</i> a <kbd>.FOOTNOTE&nbsp;OFF</kbd> should be
-entered as if there were no interruption in the input text, i.e.
+entered as if there were no interruption in the input text, ie
the line should begin with a literal space or punctuation mark (see
explanation and examples
<a href="#fn-and-punct">here</a>).
@@ -4234,12 +4087,12 @@ footnotes either by single line numbers, or line ranges. If
what you want is a single line number, you need only invoke
<kbd>.FOOTNOTE</kbd>, <i>without the terminating</i> <kbd>\c</kbd>,
at the appropriate place in running text. Input lines after the
-footnote has been terminated (e.g. with <kbd>.FOOTNOTE OFF</kbd>)
+footnote has been terminated (eg with <kbd>.FOOTNOTE OFF</kbd>)
must begin at the left margin.
</p>
<p>
-If you want a range of line numbers (e.g.&nbsp;[5-11]&nbsp;),
+If you want a range of line numbers (eg&nbsp;[5-11]&nbsp;),
insert, directly into the first line of the range you want,
the <a href="definitions.html#inlines">inline escape</a>,
<kbd>\*[FN_MARK]</kbd>. For the terminating line number of the
@@ -4328,7 +4181,7 @@ separator with a space after it, you&#8217;d do
<p style="margin-left: .5em;">
Finally, if your footnote marker style is <kbd>LINE</kbd>, you may
instruct mom to do &#8220;run-on style&#8221; footnotes. Run-on
-footnotes do not treat footnotes as discrete entities, i.e. each
+footnotes do not treat footnotes as discrete entities, ie each
beginning on a new line. Rather, each footnote is separated from
the footnote before it by horizontal space in the running line, so
that the footnotes on any given page form a continuous block, like
@@ -4519,7 +4372,7 @@ except that <kbd>.FOOTNOTE</kbd> has been replaced with
.ENDNOTE
&lt;endnote about who the hell is Schelling&gt;
.ENDNOTE OFF
- were generally the points of discussion presenting the most
+ were generally the points of discussion presenting the most
of beauty to the imaginative Morella.
</span>
</div>
@@ -4575,7 +4428,7 @@ or
<a href="#blockquote-control">blockquote control macros</a>.
However, you must make the changes <i>within</i> each endnote,
prior to invoking <kbd>.QUOTE</kbd> or <kbd>.BLOCKQUOTE</kbd>,
-and undo them prior to terminating the endnote (i.e. before
+and undo them prior to terminating the endnote (ie before
<kbd>.ENDNOTE&nbsp;OFF</kbd>), otherwise the changes will affect
subsequent quotes and blockquotes that appear in the document body
as well.
@@ -4659,7 +4512,7 @@ See <span style="font-style: normal"><a href="#endnote-note">HYPER-IMPORTANT NOT
<p>
ENDNOTE is a toggle macro, therefore invoking it on a line by itself
allows you to enter an endnote in the body of a document. Invoking
-it with any other argument (i.e. <kbd>OFF, QUIT, END, X...</kbd>)
+it with any other argument (ie <kbd>OFF, QUIT, END, X...</kbd>)
tells mom that you&#8217;ve finished the endnote.
</p>
@@ -4699,7 +4552,7 @@ modes
or
<a href="typesetting.html#quad">QUAD</a>,
the line after <kbd>.ENDNOTE&nbsp;OFF</kbd> should be
-entered as if there were no interruption in the input text, i.e.
+entered as if there were no interruption in the input text, ie
the line should begin with a literal space or punctuation mark (see
explanation and examples for footnotes, which apply equally to
endnotes,
@@ -4721,7 +4574,7 @@ for a more complete explanation. The examples are for
<p class="tip-bottom">
If your ENDNOTE_MARKER_STYLE is LINE, do not use the <kbd>\c</kbd>
escape, and enter the line after <kbd>.ENDNOTE OFF</kbd> normally,
-i.e. at your text editor&#8217;s left margin.
+ie at your text editor&#8217;s left margin.
</p>
</div>
@@ -4738,13 +4591,13 @@ Macro: <b>ENDNOTES</b>
<p>
Unlike footnotes, which mom automatically outputs at the bottom
of pages, endnotes must be explicitly output by you, the
-user. ENDNOTES, by itself (i.e. without any argument), is the macro
+user. ENDNOTES, by itself (ie without any argument), is the macro
to do this.
</p>
<p>
Typically, you&#8217;ll use ENDNOTES at the end of a document. If
-it&#8217;s a single (i.e. not collated) document, mom will print
+it&#8217;s a single (ie not collated) document, mom will print
the endnotes pertaining to it. If it&#8217;s a collated document,
mom will print all the endnotes contained within all sections of
the document (typically chapters), appropriately identified and
@@ -4800,7 +4653,7 @@ appearance of endnotes pages, set them up prior to
<li><a href="#endnote-spacing">Spacing between endnotes</a></li>
<li><a href="#singlespace-endnotes">Singlespace endnotes (TYPEWRITE only)</a></li>
<li><a href="#endnote-para-indent">Paragraph indenting</a></li>
- <li><a href="#endnote-para-space">Paragraph spacing</a></li>
+ <li><a href="#endnote-para-space">Inter-paragraph spacing</a></li>
<li><a href="#endnotes-no-columns">Turning off column mode during endnotes output</a></li>
</ul></li>
<li><a href="#endnotes-pagination"><b>Pagination of endnotes</b></a>
@@ -4979,7 +4832,7 @@ Macro: <b>ENDNOTE_SPACING</b> <kbd class="macro-args">&lt;space to insert betwee
<p>
If you'd like some whitespace between endnotes, just invoke
-ENDNOTE_SPACING with the amount of space you want, e.g.
+ENDNOTE_SPACING with the amount of space you want, eg
<br/>
<span class="pre-in-pp">
.ENDNOTE_SPACING 6p
@@ -5065,7 +4918,7 @@ Only subsequent paragraphs are affected by ENDNOTE_PARA_INDENT.
<!-- -ENDNOTE_PARA_SPACE- -->
-<h5 id="endnote-para-space" class="docs" style="margin-top: -.5em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Paragraph spacing</h5>
+<h5 id="endnote-para-space" class="docs" style="margin-top: -.5em; margin-bottom: .5em; margin-left: .5em;">&bull;&nbsp;Inter-paragraph spacing</h5>
<div class="box-macro-args">
Macro: <b>ENDNOTE_PARA_SPACE</b> <kbd class="macro-args">&lt;toggle&gt;</kbd>
@@ -5143,7 +4996,7 @@ Macro: <b>ENDNOTES_FIRST_PAGENUMBER</b> <kbd class="macro-args">&lt;page # that
<p>
Use this macro with caution. If all endnotes for several
<a href="rectoverso.html#collate">collated</a>
-documents are to be output at once, i.e. not at the end of each
+documents are to be output at once, ie not at the end of each
separate doc, ENDNOTES_FIRST_PAGENUMBER tells mom what page number
to put on the first page of the endnotes.
</p>
@@ -5336,10 +5189,11 @@ See
<a href="#control-macro-args">Arguments to the control macros</a>.
</p>
<span class="pre defaults">
-.ENDNOTE_STRING_FAMILY default = prevailing document family; default is Times Roman
+.ENDNOTE_STRING_FAMILY default = prevailing document family
.ENDNOTE_STRING_FONT default = bold
.ENDNOTE_STRING_SIZE* default = +1
.ENDNOTE_STRING_QUAD default = centred
+.ENDNOTE_STRING_COLOR default = black
*Relative to the size of the endnotes text (set with ENDNOTE_PT_SIZE)
</span>
@@ -5406,7 +5260,7 @@ Invoked without an argument, <kbd>.ENDNOTE_STRING_UNDERSCORE</kbd>
will place a single rule underneath the endnotes page title. Invoked
with the argument, <kbd>DOUBLE</kbd>, ENDNOTE_STRING_UNDERSCORE will
double-underscore the title. Invoked with any other non-numeric
-argument, (e.g. <kbd>OFF, NO, X</kbd>, etc.) the macro disables
+argument, (eg <kbd>OFF, NO, X</kbd>, etc.) the macro disables
underscoring of the title.
</p>
@@ -5503,7 +5357,7 @@ with the identifying title you want, surrounded by double-quotes.
If you don&#8217;t want any identifying title, invoke
<kbd>.ENDNOTE_TITLE</kbd> with a blank argument, either two
double-quotes side by side (<kbd>&quot;&quot;</kbd>) or no argument
-at all. This is particularly useful if you have a single (i.e.
+at all. This is particularly useful if you have a single (ie
non-collated) document and find having the document&#8217;s title
included in the endnotes redundant.
</p>
@@ -5553,7 +5407,7 @@ Invoked without an argument, <kbd>.ENDNOTE_TITLE_UNDERSCORE</kbd>
will place a single rule underneath the document identification
string. Invoked with the argument <kbd>DOUBLE</kbd>,
ENDNOTE_TITLE_UNDERSCORE will double-underscore the string. Invoked
-with any other non-numeric argument, (e.g. <kbd>OFF, NO, X</kbd>,
+with any other non-numeric argument, (eg <kbd>OFF, NO, X</kbd>,
etc.) the macro disables underscoring of the string.
</p>
@@ -5625,7 +5479,7 @@ endnotes either by single line numbers or by line ranges. If
what you want is a single line number, you need only invoke
<kbd>.ENDNOTE</kbd> at the appropriate place in running
text <i>without the terminating</i> <kbd>\c</kbd>. Input lines
-after the endnote has been terminated (e.g. with <kbd>.ENDNOTE
+after the endnote has been terminated (eg with <kbd>.ENDNOTE
OFF</kbd>) must begin at the left margin.
</p>
@@ -5639,7 +5493,7 @@ nothing to prevent you from doing so.)
</p>
<p id="en-mark">
-If you want a range of line numbers (e.g.&nbsp;[5-11]&nbsp;),
+If you want a range of line numbers (eg&nbsp;[5-11]&nbsp;),
insert, directly into the first line of the range you want, the
<a href="definitions.html#inlines">inline escape</a>,
<kbd>\*[EN-MARK]</kbd>. For the terminating line number of the
@@ -5716,7 +5570,7 @@ If you need less space (the total number of endnotes is less than 10) or
more (the total number of endnotes is greater than 99), use the
macro,
<a href="docelement.html#endnote-numbers-align">ENDNOTE_NUMBERS_ALIGN</a>,
-to set the desired amount of reserved space, e.g.
+to set the desired amount of reserved space, eg
<br/>
<span class="pre-in-pp">
.ENDNOTE_NUMBERS_ALIGN RIGHT 1
@@ -5934,7 +5788,7 @@ for examples.
<ul style="margin-left: -.5em;">
<li><a href="#margin-notes-vertical">Adjusting the vertical position of margin notes</a></li>
</ul></li>
- <li><a href="#mn-init">Macro: <b>MN_INIT</b></a>&mdash;initialize margin notes</li>
+ <li><a href="#mn-init">Macro: <b>MN_INIT</b></a> &ndash; set margin notes parameters</li>
<li><a href="#mn">Tag: MN</a></li>
</ul>
@@ -5964,6 +5818,8 @@ things like
<a href="definitions.html#family">family</a>
and
<a href="definitions.html#leading">leading</a>.
+MN_INIT may be called before or after
+<a href="docprocessing.html#start">START</a>.
</p>
<p>
@@ -6049,14 +5905,14 @@ page.
<p>
Adjustments to the vertical position of margin notes must be done
-inside the margin note (i.e. after <kbd>.MN</kbd>), at the top,
+inside the margin note (ie after <kbd>.MN</kbd>), at the top,
before entering text. The commands to use are
<kbd>\!<a href="typesetting.html#ald">.ALD</a></kbd>
(to lower the margin note) and
<kbd>\!<a href="typesetting.html#rld">.RLD</a></kbd>
(to raise it).
-The <kbd>\!</kbd> <i>must</i> precede the macros, or they
+The <kbd>\!</kbd> must precede the macros, or they
won&#8217;t have any effect.
</p>
@@ -6067,45 +5923,57 @@ won&#8217;t have any effect.
</div>
<div class="box-macro-args">
-Macro: <b>MN_INIT</b> <kbd class="macro-args">&lt;arguments (see list)&gt;</kbd>
+Macro: <b>MN_INIT</b> <kbd class="macro-args">&lt;arguments&gt; (see list)</kbd>
</div>
<h4 style="margin-top: .75em; margin-left: .5em; font-style: normal; font-weight: bold: font-size: 105%; color: #6f614a;">Argument list:</h4>
<span class="pre" style="margin-top: -1.5em; margin-left: .5em;">
-[ RAGGED | SYMMETRIC ]
-&lt;left-width&gt;
-&lt;right-width&gt;
-&lt;gutter&gt;
-&lt;family+font&gt;
-&lt;point-size&gt;
-&lt;lead&gt;
-&lt;colour&gt;
-&lt;hyphenation-flags&gt;
+RAGGED | SYMMETRIC
+&lt;L_WIDTH&gt; &lt;value&gt;
+&lt;R_WIDTH&gt; &lt;value&gt;
+&lt;GUTTER&gt; &lt;value&gt;
+&lt;FONTSTYLE&gt; &lt;value&gt;
+&lt;SIZE&gt; &lt;value&gt;
+&lt;LEAD&gt; &lt;value&gt;
+&lt;COLOR&gt; &lt;value&gt;
+&lt;HY&gt; &lt;value&gt;
</span>
<p style="margin-top: 1.25em;">
Before you enter your first margin note, you must initialize
-<i>all</i> the parameters associated with margin notes with MN_INIT.
+the style parameters associated with margin notes using MN_INIT.
If you forget to do so, mom will issue a warning and abort.
</p>
<p>
-The argument list is quite long; an explanation of each argument
-follows. Any argument whose value you want to be the default must
-be entered as <kbd>&quot;&quot;</kbd> (i.e. two double-quotes with
-no space between them). Defaults for each argument are given in the
-explanations below.
+The arguments may be entered in any order, and since the list is
+long, use of the backslash character ( <kbd>\</kbd> ) to put each on
+a separate line is recommended, eg.
+<br/>
+<span class="pre-in-pp">
+ .MN_INIT \
+ SYMMETRIC \
+ L_WIDTH 4P \
+ SIZE 8 \
+ LEAD 9 \
+ HY 14
+</span>
+All arguments are optional, but since mom requires you to run
+MN_INIT before entering margin notes, you should, at a minimum, set
+the <kbd>RAGGED</kbd> or <kbd>SYMMETRIC</kbd> parameter.
+You will almost certainly want to set <kbd>L_WIDTH</kbd>, <kbd>R_WIDTH</kbd>,
+<kbd>SIZE</kbd> and <kbd>LEAD</kbd> as well.
</p>
-<h4 class="docs arg-list">Argument 1:&nbsp;&nbsp;<kbd style="color: #302419;">[ RAGGED | SYMMETRIC ]</kbd></h4>
+<h4 class="docs arg-list"><kbd>RAGGED | SYMMETRIC</kbd></h4>
<p>
-If the first argument is <kbd>RAGGED</kbd>, both left and
-right margin notes will be flush left. If the first argument
-is <kbd>SYMMETRIC</kbd> left margin notes will be set flush
-<i>right</i>, and right margin notes will be set flush
-<i>left</i>. The effect is something like this:
+If the argument <kbd>RAGGED</kbd> is given, both left and
+right margin notes will be flush left. If the argument
+<kbd>SYMMETRIC</kbd> is given, left margin notes will be set flush
+<i>right</i>, and right margin notes flush <i>left</i>. The effect
+is something like this:
<br/>
<span class="pre-in-pp">
A left This is a meaningless batch A right
@@ -6117,13 +5985,13 @@ is <kbd>SYMMETRIC</kbd> left margin notes will be set flush
</p>
<p>
-If the argument is omitted, or given as <kbd>&quot;&quot;</kbd>,
-both left and right margin notes will be set justified. (Justified
-is usually not a good idea, since the narrow measure of margin notes
-makes pleasing justification a near impossibility.)
+If the argument is omitted, both left and right margin notes will
+be set justified. (Justified is usually not a good idea, since the
+narrow measure of margin notes makes pleasing justification a near
+impossibility.)
</p>
-<h4 class="docs arg-list">Argument 2:&nbsp;&nbsp;<kbd style="color: #302419;">&lt;left-width&gt;</kbd></h4>
+<h4 class="docs arg-list"><kbd>L_WIDTH &lt;value&gt;</kbd></h4>
<p>
The width of left margin notes. A
@@ -6134,7 +6002,7 @@ certainly not what you want, so you should give a value for this
argument if using left margin notes.
</p>
-<h4 class="docs arg-list">Argument 3:&nbsp;&nbsp;<kbd style="color: #302419;">&lt;right-width&gt;</kbd></h4>
+<h4 class="docs arg-list"><kbd>R_WIDTH &lt;value&gt;</kbd></h4>
<p>
The width of right margin notes. A
@@ -6145,7 +6013,7 @@ almost certainly not what you want, so you should give a value for
this argument if using right margin notes.
</p>
-<h4 class="docs arg-list">Argument 4:&nbsp;&nbsp;<kbd style="color: #302419;">&lt;gutter&gt;</kbd></h4>
+<h4 class="docs arg-list"><kbd>GUTTER &lt;value&gt;</kbd></h4>
<p>
The
@@ -6159,17 +6027,17 @@ both left and right margin notes. The default is 1
<a href="definitions.html#em">em</a>.
</p>
-<h4 class="docs arg-list">Argument 5:&nbsp;&nbsp;<kbd style="color: #302419;">&lt;font&gt;</kbd></h4>
+<h4 class="docs arg-list"><kbd>FONTSTYLE &lt;value&gt;</kbd></h4>
<p>
The family+font for margin notes. Yes, that&#8217;s right: the
family <i>plus</i> font combo. For example, if you want Times
-Roman Medium, the argument must be TR. If you want Palatino
-Medium Italic, the argument must be PI. The default is the same
+Roman Medium, the argument must be <kbd>TR</kbd>. If you want Palatino
+Medium Italic, the argument must be <kbd>PI</kbd>. The default is the same
family+font combo used for a document&#8217;s paragraph text.
</p>
-<h4 class="docs arg-list">Argument 6:&nbsp;&nbsp;<kbd style="color: #302419;">&lt;point size&gt;</kbd></h4>
+<h4 class="docs arg-list"><kbd>SIZE &lt;value&gt;</kbd></h4>
<p>
The point size of type for margin notes. There is no need to append a
@@ -6182,24 +6050,19 @@ The default is for margin notes to use the same point size of type
as is used in document paragraphs.
</p>
-<h4 class="docs arg-list">Argument 7:&nbsp;&nbsp;<kbd style="color: #302419;">&lt;lead&gt;</kbd></h4>
+<h4 class="docs arg-list"><kbd>LEAD &lt;value&gt;</kbd></h4>
<p>
The
<a href="definitions.html#leading">leading</a>
-of margin notes. <kbd>&lt;lead&gt;</kbd> uses
+of margin notes. <kbd>&lt;LEAD&gt;</kbd> takes
<a href="definitions.html#picaspoints">points</a>
as its unit of measure, so don&#8217;t tack a unit of measure onto
-the end of the argument. The default lead is the same leading
-as is used for paragraph text (i.e. the document&#8217;s base
-leading). If you want the default, you may, for convenience
-and clarity, give the word, <kbd>DOC</kbd>, to this argument,
-instead of <kbd>&quot;&quot;</kbd> (two double-quotes). Like the
-double-quotes, it indicates that the leading should be the same as
-the document&#8217;s base leading.
+the end of the argument. The default lead is the same as paragraph
+text (ie the document&#8217;s base leading).
</p>
-<h4 class="docs arg-list">Argument 8:&nbsp;&nbsp;<kbd style="color: #302419;">&lt;colour&gt;</kbd></h4>
+<h4 class="docs arg-list"><kbd>COLOR &lt;value&gt;</kbd></h4>
<p>
The colour of margin notes. The colour must be pre-initialized
@@ -6210,13 +6073,14 @@ or
The default is black.
</p>
-<h4 class="docs arg-list">Argument 9:&nbsp;&nbsp;<kbd style="color: #302419;">&lt;hyphenation-flags&gt;</kbd></h4>
+<h4 class="docs arg-list"><kbd>HY &lt;value&gt;</kbd></h4>
<p>
-A number telling groff how you want margin notes
-hyphenated.
+<kbd>&lt;value&gt;</kbd> is a digit telling groff how you want margin
+notes hyphenated.
<br/>
<span class="pre-in-pp">
+ 0 = do not hyphenate
1 = hyphenate without restrictions
2 = do not hyphenate the last word on the page
4 = do not hyphenate the last two characters of a word
@@ -6225,7 +6089,7 @@ hyphenated.
The values can be added together, so, for example, if you want
neither the first two nor the last two characters of words
hyphenated, the hyphenation-flag would be 12. The default value is
-14 (i.e. 2+4+8).
+14 (ie 2+4+8).
</p>
<!-- -MN- -->
@@ -6265,16 +6129,17 @@ etc) exits the current margin note.
<ul style="margin-left: -1.25em;">
<li><a href="#finis-string">Changing the FINIS string</a></li>
<li><a href="#finis-string-caps">Automatic capitalization of the FINIS string</a></li>
- <li><a href="#finis-color">Changing the FINIS color</a></li>
+ <li><a href="#finis-color">Changing the FINIS colour</a></li>
</ul></li>
</ul>
<p>
-The use of FINIS is optional. If you invoke it (at the end of a
-document before
-<kbd><a href="tables-of-contents.html#toc">.TOC</a></kbd>
+The use of FINIS is optional. If you invoke it at the end of a
+document (before
+<kbd><a href="#endnotes">.ENDNOTES</a></kbd>,
+<kbd><a href="refer.html#bibliography">.BIBLIOGRAPHY</a></kbd>
or
-<kbd><a href="#endnotes">.ENDNOTES</a></kbd>),
+<kbd><a href="tables-of-contents.html#toc">.TOC</a></kbd>)
mom deposits the word, <b>END</b>, centred after a blank line,
beneath the last line of the document. <b>END</b> is enclosed
between
@@ -6283,8 +6148,11 @@ like this:
<br/>
<span class="pre-in-pp">
...and they all lived happily ever after.
+
&mdash; END &mdash;
</span>
+If there is insufficient room for FINIS on the last page of a
+document, mom will alert you on stderr.
</p>
<p>
@@ -6303,10 +6171,11 @@ Macro: <b>FINIS</b>
<p>
The use of FINIS is optional, but if you use it, it should be the
-last macro you invoke in a document (before
-<kbd><a href="#endnotes">.ENDNOTES</a></kbd>
+last macro you invoke in a document before
+<kbd><a href="#endnotes">.ENDNOTES</a></kbd>,
+<kbd><a href="refer.html#bibliography">.BIBLIOGRAPHY</a></kbd>
or
-<kbd><a href="tables-of-contents.html#toc">.TOC</a></kbd>).
+<kbd><a href="tables-of-contents.html#toc">.TOC</a></kbd>.
See
<a href="#finis-intro">above</a>
for a description of how FINIS behaves.
@@ -6330,7 +6199,9 @@ two lines of your document file, like this:
<!-- -FINIS STRING- -->
-<h3 id="finis-string" class="docs">Changing the FINIS string</h3>
+<h3 id="finis-control" class="docs" style="margin-bottom: -1em">Finis contol macros</h3>
+
+<h4 id="finis-string" class="docs">Changing the FINIS string</h4>
<p>
By default, FINIS prints the word, END, between
@@ -6352,7 +6223,7 @@ Double-quotes must enclose the macro&#8217;s argument.
<div class="box-tip">
<p class="tip">
<span class="note">Note:</span>
-If you pass FINIS_STRING a blank string, i.e.
+If you pass FINIS_STRING a blank string, ie
<br/>
<span class="pre-in-pp">
.FINIS_STRING ""
@@ -6367,7 +6238,7 @@ it&#8217;s a short, dashed line composed of four hyphens.)
<!-- -FINIS STRING CAPS- -->
-<h3 id="finis-string-caps" class="docs">Automatic capitalization of the FINIS string</h3>
+<h4 id="finis-string-caps" class="docs">Automatic capitalization of the FINIS string</h4>
<p>
By default, mom sets the string you pass to FINIS all-caps.
@@ -6379,21 +6250,21 @@ this:
<span class="pre-in-pp">
.FINIS_STRING_CAPS OFF
</span>
-<kbd>OFF</kbd>, above, could be anything, e.g. <kbd>NO</kbd> or
+<kbd>OFF</kbd>, above, could be anything, eg <kbd>NO</kbd> or
<kbd>X</kbd>.
</p>
<!-- -FINIS COLOR- -->
-<h3 id="finis-color" class="docs">Changing the FINIS colour</h3>
+<h4 id="finis-color" class="docs">Changing the FINIS colour</h4>
<p>
Invoking the control macro, <kbd>.FINIS_COLOR</kbd>, with a
-pre-defined (or &#8220;initalized&#8221;) color changes the colour
+pre-defined (or &#8220;initalized&#8221;) colour changes the colour
of both the FINIS string and the em-dashes that surround it. If you
use the
<a href="definitions.html#inline">inline escape</a>,
-<a href="color.html#color-inline"><kbd>\*[&lt;colorname&gt;]</kbd></a>,
+<a href="color.html#color-inline"><kbd>\*[&lt;colourname&gt;]</kbd></a>,
in the argument passed to FINIS, only the text will be in the
new colour; the em-dashes will be in the default document colour
(usually black).
diff --git a/contrib/mom/momdoc/docprocessing.html b/contrib/mom/momdoc/docprocessing.html
index 5896d1c..1c36d6c 100644
--- a/contrib/mom/momdoc/docprocessing.html
+++ b/contrib/mom/momdoc/docprocessing.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2010, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -54,10 +56,11 @@ FDL in the main directory of the groff source package.
<div id="docprocessing-mini-toc" style="font-size: 90%; line-height: 150%; margin-top: .5em;">
<div class="mini-toc-col-1" style="margin-left: 0;">
<h3 class="toc toc-docproc-header" style="margin-top: 1em;"><a class="header-link" href="#docprocessing-intro">Introduction</a></h3>
-<h3 class="toc toc-docproc-header" style="margin-top: .5em;"><a class="header-link" href="#setup">Document setup</a></h3>
+<h3 class="toc toc-docproc-header" style="margin-top: .5em;"><a
+class="header-link" href="#setup">Preliminary document setup</a></h3>
<ul class="toc-docproc" style="margin-top: .5em;">
<li><a href="#docprocessing-tut"><b>Tutorial &ndash; Setting up a mom document</b></a></li>
- <li><a href="#reference-macros"><b>The reference macros</b></a>
+ <li><a href="#reference-macros"><b>The reference macros (metadata)</b></a>
<ul class="toc-docproc">
<li><a href="#title">TITLE</a></li>
<li><a href="#doc-title">DOCTITLE</a></li>
@@ -71,8 +74,9 @@ FDL in the main directory of the groff source package.
<li><a href="#misc">MISC</a></li>
<li><a href="#covertitle">COVERTITLE</a></li>
<li><a href="#doc-covertitle">DOC_COVERTITLE</a></li>
+ <li><a href="#pdftitle">PDF_TITLE</a></li>
</ul></li>
- <li><a href="#docstyle-macros"><b>The docstyle macros</b></a>
+ <li><a href="#docstyle-macros"><b>The docstyle macros (templates)</b></a>
<ul class="toc-docproc">
<li><a href="#doctype">DOCTYPE</a></li>
<li><a href="#printstyle">PRINTSTYLE</a></li>
@@ -98,7 +102,10 @@ FDL in the main directory of the groff source package.
<li><a href="#doc-lead-adjust"><b>Adjust linespacing to fill pages</b></a>
<ul class="toc-docproc">
<li><a href="#doc-lead-adjust">DOC_LEAD_ADJUST</a></li>
- <li><a href="#shim">SHIM</a> &ndash; the macro to get document leading back on track</li>
+ <li><a href="#shim">SHIM</a> &ndash; get document leading back on track
+ <ul>
+ <li><a href="#automatic-shimming">Automatic shimming (headings, etc)</a></li>
+ </ul></li>
</ul></li>
<li><a href="#docheader"><b>Managing the document header</b></a>
<ul class="toc-docproc">
@@ -134,6 +141,7 @@ FDL in the main directory of the groff source package.
<li><a href="#doc-quad">DOC_QUAD</a></li>
</ul></li>
</ul>
+<h3 class="toc toc-docproc-header"><a class="header-link" href="#terminating">Terminating a document</a></h3>
</div>
</div>
@@ -145,7 +153,7 @@ FDL in the main directory of the groff source package.
<p>
Document processing with mom uses markup tags to identify document elements
-such as heads, paragraphs, and so on. The tags are, of course,
+such as headings, paragraphs, blockquotes, and so on. The tags are, of course,
macros, but with sensible, readable names that make them easy
to grasp and easy to remember. (And don&#8217;t forget: if you
don&#8217;t like the &#8220;official&#8221; name of a tag &mdash;
@@ -162,12 +170,13 @@ macros that control how they look and behave.
<p>
Setting up a mom doc is a simple, four-part procedure. You
-begin by entering information about the document itself (title,
+begin by entering metadata about the document itself (title,
subtitle, author, etc.). Next, you tell mom what kind of document
-you&#8217;re creating (e.g. chapter, letter, abstract, etc...) and
+you&#8217;re creating (eg chapter, letter, abstract, etc...) and
what kind of output you want (typeset, typewritten, draft-style,
-etc). Thirdly, you make as many or as few changes to mom&#8217;s
-default behaviour as you wish. Lastly, you invoke the
+etc) &mdash; essentially, templates. Thirdly, you make as many
+or as few changes to the templates as you wish; in other words,
+create a style sheet. Lastly, you invoke the
<kbd><a href="#start">START</a></kbd>
macro. Voilà! You&#8217;re ready to write.
</p>
@@ -193,7 +202,7 @@ documentation, so just in case:
visually 1-inch
</li>
<li>pages are numbered; the number appears centred, at the
- bottom, surrounded by hyphens ( e.g. -6- )
+ bottom, surrounded by hyphens ( eg -6- )
</li>
<li>the first page of a document begins with a
<a href="definitions.html#docheader">document header</a>
@@ -212,7 +221,7 @@ documentation, so just in case:
Mom takes evenly-aligned bottom margins in
<a href="definitions.html#running">running text</a>
very seriously. Only under a very few (exceptional) circumstances
-will she allow a bottom margin to &#8220;hang&#8221; (i.e. to fall
+will she allow a bottom margin to &#8220;hang&#8221; (ie to fall
short).
</p>
@@ -220,7 +229,7 @@ short).
In order to ensure even bottom margins, mom uses the
&#8220;base&#8221; document
<a href="definitions.html#leading">leading</a>
-in effect <i>at the start of running text on each page</i> (i.e.
+in effect <i>at the start of running text on each page</i> (ie
the leading used in paragraphs) to calculate the spacing of every
document element. Prior to invoking
<a href="#start">START</a>,
@@ -289,28 +298,29 @@ leading back on track.
</p>
<p>
-For example, say you want to insert a picture into a document with
-the special groff macro, PSPIC (see <kbd>man groff-tmac</kbd> for
-usage).
+For example, say you want to insert an image into a document with
+<a href="images.html#pdf-image">PDF_IMAGE</a>
+or
+<a href="images.html#pspic">PSPIC</a>.
</p>
<p>
-Pictures aren&#8217;t usually conveniently sized in multiples of
-document leading, which means that when you insert the picture, you
-disrupt mom&#8217;s ordered placement of baselines on the page.
-This will certainly result in a bottom margin that doesn&#8217;t
-match the bottom margins of your document&#8217;s other pages.
+Images and graphics aren&#8217;t usually conveniently sized in
+multiples of the document leading, which means that when you insert
+the picture, you disrupt mom&#8217;s ordered placement of baselines
+on the page. This will certainly result in a bottom margin that
+doesn&#8217;t match the bottom margins of your document&#8217;s
+other pages.
</p>
<p>
-The solution is to insert SHIM after the picture,
-like this:
+The solution is to insert SHIM after the image, like this:
<br/>
<span class="pre-in-pp">
- &lt;some lines of text&gt;
- .PSPIC &lt;full path to picture&gt;
+ &lt;text&gt;
+ .PDF_IMAGE &lt;args&gt; <span style="font-family: arial,sans-serif; font-weight: normal;">or</span> .PSPIC &lt;args&gt;
.SHIM
- &lt;more lines of text&gt;
+ &lt;text&gt;
</span>
</p>
@@ -323,32 +333,79 @@ flow of output lines with the picture.
</p>
<p>
-And say, on previewing the above example, you find that the picture
+And say, on previewing the above example, you find the image
doesn&#8217;t centre nicely between the lines of text, you can
-always do
+adjust the image position either by passing a baseline adjustment
+to PDF_IMAGE, or by using
+<a href="typesetting.html#ald">ALD</a>
+or
+<a href="typesetting.html#rld">RLD</a>
+before PSPIC. To demonstrate,
<br/>
<span class="pre-in-pp">
- &lt;some lines of text&gt;
+ &lt;text&gt;
+ .PDF_IMAGE &lt;args&gt; -3p
+ .SHIM
+ &lt;text&gt;
+</span>
+and
+<span class="pre-in-pp">
+ &lt;text&gt;
.RLD 3p
- .PSPIC &lt;full path to picture&gt;
+ .PSPIC &lt;args&gt;
.SHIM
- &lt;more lines of text&gt;
+ &lt;text&gt;
</span>
-to raise the picture slightly (reverse lead 3 points; see
-<a href="typesetting.html#rld">RLD</a>),
-and still have SHIM ensure that text underneath falls exactly where
-it&#8217;s supposed to.
+both raise an image slightly within the space allotted for it while
+ensuring that text underneath falls exactly where should.
+</p>
+
+<h4 id="automatic-shimming" class="docs">Automatic shimming of headings, quotes, blockquotes, PDF images, and floats</h4>
+
+<p style="margin-bottom: -1em">
+By default, mom automatically applies shimming
+</p>
+<ul>
+ <li><i>before</i> headings</li>
+ <li><i>around</i> quotes and blockquotes</li>
+ <li><i>after</i> PDF images and floats</li>
+</ul>
+
+<p>
+In documents where paragraphs are not spaced, automatic shimming is
+almost always desirable. In documents where paragraphs are spaced
+by an amount less than the document leading, or which have numerous
+graphics, headings, and quotes, you may want to disable shimming,
+either globally or on a tag-by-tag basis.
+</p>
+
+<p id="disable-shim">
+<span style="font-weight: bold; font-style: italic; font-size: 95%">To disable
+automatic shimming</span>, invoke the macro, <kbd>.NO_SHIM</kbd>,
+either in the style sheet section of your document (ie after
+<a href="#printstyle">PRINTSTYLE</a>
+and before
+<a href="#start">START</a>),
+or just before
+<a href="docelement.html#heading">HEADING</a>,
+<a href="docelement.html#quote">QUOTE</a>,
+<a href="docelement.html#blockquote">BLOCKQUOTE</a>,
+<a href="images.html#pdf-image">PDF_IMAGE</a>
+or
+<a href="images.html#float">FLOAT</a>.
</p>
<div class="box-tip">
<p class="tip">
<span class="note">Note:</span>
-For information on disabling the automatic shimming of quotes and
-blockquotes during document processing, see
-<a href="docelement.html#no-shim">here</a>.
+<kbd>.NO_SHIM</kbd> also disables the SHIM macro itself.
</p>
</div>
+<p>To re-enable automatic shimming and the SHIM macro itself, use
+<kbd>.NO_SHIM OFF</kbd> (or <kbd>QUIT, END, X</kbd>, etc).
+</p>
+
<div class="rule-short"><hr/></div>
<!-- ==================================================================== -->
@@ -374,9 +431,9 @@ produces a beautifully typeset 8.5x11 document, with a
at the top of page 1,
<a href="definitions.html#header">page headers</a>
with the title and author on subsequent pages, and page numbers at
-the bottom of each page. In the course of the document, heads,
-subheads, citations, quotes, epigraphs, and so on, all come out
-looking neat, trim, and professional.
+the bottom of each page. In the course of the document, headings,
+citations, quotes, epigraphs, and so on, all come out looking neat,
+trim, and professional.
</p>
<p>
@@ -387,8 +444,8 @@ setup. Joe wants the document
</p>
<ul style="margin-top: -.5em; margin-bottom: -.5em;">
<li>to be draft 7, revision 39;</li>
- <li>to use the &#8220;default&#8221; style of document formatting:</li>
- <li>to print as draft-style output (instead of &#8220;final&#8221; copy output);</li>
+ <li>to use the DEFAULT template;</li>
+ <li>to print as draft-style output (instead of final-copy output);</li>
<li>to be typeset, in Helvetica, 12 on 14,
<a href="definitions.html#rag">rag-right</a>;
</li>
@@ -411,27 +468,27 @@ examples, not beauty.
<p style="margin-bottom: -.5em;">
The first step in setting up any document is giving mom some
-reference information. The reference macros are:
+reference information (metadata). The reference macros are:
</p>
<div style="width: 50%; float: left;">
<ul>
<li>TITLE</li>
- <li>DOCTITLE</li>
- <li>COVERTITLE</li>
- <li>DOC_COVERTITLE</li>
<li>SUBTITLE</li>
<li>AUTHOR</li>
- <li>CHAPTER &ndash; the chapter number</li>
+ <li>CHAPTER &ndash; chapter number</li>
+ <li>CHAPTER_TITLE &ndash; chapter name</li>
+ <li>DRAFT &ndash; the draft number</li>
+ <li>REVISION &ndash; the revision number</li>
</ul>
</div>
<div>
<ul>
- <li>DRAFT &ndash; the draft number</li>
- <li>REVISION &ndash; the revision number</li>
<li>COPYRIGHT &ndash; only used on cover pages</li>
<li>MISC &ndash; only used on cover pages</li>
- <li>COVER_TITLE &ndash; only on cover pages; only if needed</li>
- <li>DOC_COVER_TITLE &ndash; only on document cover pages; only if needed</li>
+ <li>DOCTITLE</li>
+ <li>COVERTITLE</li>
+ <li>DOC_COVERTITLE</li>
+ <li>PDF_TITLE</li>
</ul>
</div>
@@ -460,17 +517,17 @@ tell her how you want your document formatted. What kind of
document is it? Should it be typeset or typewritten? Is this a
final copy (for the world to see) or just a draft? Mom calls
the macros that answer these questions &#8220;the docstyle
-macros.&#8221; They are:
+macros.&#8221;, and they're essentially templates.
</p>
<ul style="margin-top: -.5em; margin-bottom: -.5em;">
- <li>DOCTYPE&mdash;the type of document (default, chapter, user-defined, letter)</li>
<li>PRINTSTYLE&mdash;typeset or typewritten</li>
+ <li>DOCTYPE&mdash;the type of document (default, chapter, user-defined, letter)</li>
<li>COPYSTYLE &mdash;draft or final copy</li>
</ul>
<p>
Mom has defaults for DOCTYPE and COPYSTYLE; if they&#8217;re what
-you want, you don&#8217;t need to include them here. However,
+you want, you don&#8217;t need to include them. However,
PRINTSTYLE has no default and must be present in every formatted
document. If you omit it, mom won&#8217;t process the document
AND she&#8217;ll complain (both to stderr and as a single printed
@@ -501,17 +558,20 @@ separated for easy reading in a text editor.
<h4 class="docs" style="margin-top: -.5em; margin-bottom: -.5em;">Step 3</h4>
<p>
-This step&mdash;completely optional&mdash;is where you, the
-user, take charge. Mom has defaults for <i>everything</i>, but
-who&#8217;s ever satisfied with defaults? Use any of the
+This step&mdash;completely optional&mdash;is where you, the user,
+take charge. Mom has reasonable defaults for every document element
+and tag, but who&#8217;s ever satisfied with defaults? Use any of
+the
<a href="typesetting.html#macros-typesetting">typesetting macros</a>
here to change mom&#8217;s document defaults (paper size, margins,
-family, point size, line space, rag, etc), or any of the document
-processing macros that set/change/control the appearance of document
-elements. Think of this as the &#8220;style-sheet &#8221; section
-of a document. And please note: you MUST give mom a
+family, point size, line space, rag, etc), or use any of the
+document processing
+<a href="definitions.html#controlmacro">control macros</a>.
+This is the style-sheet section of a document, and
+must come after the
<a href="#printstyle">PRINTSTYLE</a>
-directive <i>before</i> making any such changes.
+directive. Failure to observe this condition will result in
+PRINTSTYLE overriding your changes.
</p>
<p>
@@ -539,7 +599,7 @@ here. The setup for Joe Blow&#8217;s story now looks like this:
.FAMILY H
.PT_SIZE 12
.LS 14
- .QUAD LEFT \"i.e. rag right
+ .QUAD LEFT \"ie rag right
.FOOTERS
.LINEBREAK_CHAR *
</span>
@@ -551,8 +611,7 @@ here. The setup for Joe Blow&#8217;s story now looks like this:
The final step in setting up a document is telling mom to start
document processing. It&#8217;s a no-brainer, just the single
macro, START. Other than PRINTSTYLE, it&#8217;s the only macro
-required for document processing (although I can&#8217;t guarantee
-you&#8217;ll like the results of using just the two).
+required for document processing.
</p>
<p>
@@ -571,7 +630,7 @@ Here&#8217;s the complete setup for <i>My Pulitzer Winner</i>:
.FAMILY H
.PT_SIZE 12
.LS 14
- .QUAD LEFT \"i.e. rag right
+ .QUAD LEFT \"ie rag right
.FOOTERS
.LINEBREAK_CHAR *
\#
@@ -622,7 +681,7 @@ her otherwise.
</p>
<p>
-BUT... to judge from the number of drafts already,
+But... to judge from the number of drafts already,
J. Blow may very well decide his &#8220;final&#8221; version still
isn&#8217;t up to snuff. Hence, he might as well leave in the
superfluous macros. That way, when draft 7, rev. 62 becomes draft
@@ -634,11 +693,10 @@ superfluous macros. That way, when draft 7, rev. 62 becomes draft
<!-- ======================================================================== -->
-<h2 id="reference-macros" class="macro-group">The reference macros</h2>
+<h2 id="reference-macros" class="macro-group">The reference macros (metadata)</h2>
<p>
-The reference macros give mom the meta-information she needs to
-generate
+The reference macros give mom the metadata she needs to generate
<a href="definitions.html#docheader">docheaders</a>,
<a href="definitions.html#header">page headers</a>,
and
@@ -672,6 +730,7 @@ processing macros.
<li><a href="#misc">MISC</a></li>
<li><a href="#covertitle">COVERTITLE</a> &ndash; frontispiece, title page, etc</li>
<li><a href="#doc-covertitle">DOC_COVERTITLE</a> &ndash; book cover, collated document cover, etc</li>
+ <li><a href="#pdftitle">PDF_TITLE</a> &ndash; window title for PDF viewers</li>
</ul>
</div>
@@ -759,16 +818,27 @@ different authors, you need DOCTITLE.
<p>
DOCTITLE tells mom the title of the complete document (as opposed to
-the title of each article or entitled section).
+the title of each article or entitled section), and appears
+</p>
+
+<ol style="list-style-type: lower-alpha">
+ <li>as the window title in PDF viewers (eg Okular or Evince)</li>
+ <li>in the initial rightmost position of page headers in the document</li>
+</ol>
+
+<p>
+Moreover, DOCTITLE does not appear in the
+<a href="definitions.html#pdfoutline">PDF outline </a>,
+as its presence in window title would make it redundant.
</p>
<p>
The doctitle string can be caps or caps/lower-case; it&#8217;s up to
you. In
<a href="#printstyle">PRINTSTYLE TYPESET</a>,
-by default, the doctitle appears in the rightmost position of
-<a href="definitions.html#header">page headers</a>,
-all in caps unless you turn that feature off (see
+by default, the doctitle in
+<a href="definitions.html#header">page headers</a>
+is all in caps, unless you turn that feature off (see
<a href="headfootpage.html#_caps">HEADER_&lt;POSITION&gt;_CAPS</a>).
In
<a href="#printstyle">PRINTSTYLE TYPEWRITE</a>,
@@ -870,7 +940,7 @@ Macro: <b>AUTHOR</b> <kbd class="macro-args">[COVER | DOC_COVER] &quot;&lt;autho
</p>
<p>
-Each author string can hold as many names as you like, e.g.
+Each author string can hold as many names as you like, eg
<br/>
<span class="pre-in-pp" style="margin-bottom: -1em;">
.AUTHOR "Joe Blow"
@@ -1043,7 +1113,7 @@ page headers.
<p>
The style of the chapter title can be altered by
<a href="docelement.html#docelement-control">control macros</a>,
-e.g. CHAPTER_TITLE_FAMILY, CHAPTER_TITLE_FONT, etc. The default
+eg CHAPTER_TITLE_FAMILY, CHAPTER_TITLE_FONT, etc. The default
family, font and point size are Times Roman, Bold Italic, 4 points
larger than
<a href="definitions.html#running">running text</a>.
@@ -1074,7 +1144,7 @@ possible to do either
</p>
<p>
-Mom prints the argument to <kbd>.DRAFT</kbd> (i.e. the draft number)
+Mom prints the argument to <kbd>.DRAFT</kbd> (ie the draft number)
beside the word &#8220;Draft&#8221; in the middle part of
<a href="definitions.html#header">page headers</a>.
</p>
@@ -1380,7 +1450,7 @@ Macro: <b>DOC_COVERTITLE</b> <kbd class="macro-args">&quot;&lt;user defined docu
<p>
The arguments passed to COVERTITLE or DOC_COVERTITLE are only
used on cover or doc cover pages, and then only if the argument
-COVERTITLE is passed to
+COVERTITLE or DOC_COVERTITLE is passed to
<a href="cover.html#cover">COVER</a>
or
<a href="cover.html#doc-cover">DOC_COVER</a>.
@@ -1400,6 +1470,24 @@ line, permitting you to create multi-line titles on your cover
and/or doc cover pages.
</p>
+<div class="macro-id-overline">
+<h3 class="macro-id">PDF Title</h3>
+</div>
+
+<div id="pdftitle" class="box-macro-args">
+Macro: <b>PDF_TITLE</b> <kbd class="macro-args">&quot;&lt;pdf viewer window title&gt;&quot; </kbd>
+</div>
+<p class="requires">
+&bull;&nbsp;Arguments must be enclosed in double-quotes
+</p>
+
+<p>
+Except for
+<a href="#doctitle">DOCTITLE</a>,
+mom does not, by default, provide PDF viewers with a document title.
+You may set one, if you like, with PDF_TITLE.
+</p>
+
<div class="rule-short"><hr/></div>
<!-- ======================================================================== -->
@@ -1488,16 +1576,6 @@ reference macro but supply a
mom prints only the chapter title.
</p>
-<div class="box-tip">
-<p class="tip">
-<span class="note">Note:</span>
-For backward compatibility with pre-1.1.5 versions of mom, you can
-also supply a chapter title by omitting the CHAPTER reference macro
-and supplying a chapter title with
-<a href="#chapter-string">CHAPTER_STRING</a>.)
-</p>
-</div>
-
<p>
The page headers in DOCTYPE <kbd>CHAPTER</kbd> contain the author,
the title of the book (which you gave with
@@ -1510,7 +1588,7 @@ the page header.
<p>
<kbd>NAMED</kbd> takes an additional argument: a name for this
-particular kind of document (e.g. outline, synopsis, abstract,
+particular kind of document (eg outline, synopsis, abstract,
memorandum), enclosed in double-quotes. <kbd>NAMED</kbd> is
identical to <kbd>DEFAULT</kbd> except that mom prints the argument
to <kbd>NAMED</kbd> beneath the
@@ -1552,8 +1630,7 @@ for the difference between &#8220;doc cover&#8221; and
</p>
<p>
-Formerly, this underlining was carved in stone. As of version 1.5
-of mom, you can use the macro DOCTYPE_UNDERLINE to set the weight of
+You can use the macro DOCTYPE_UNDERLINE to set the weight of
the underline and its distance from where the doctype-name appears
in the docheader (doc covers and covers handle underlining of the
doctype-name differently; see
@@ -1588,9 +1665,9 @@ Mom&#8217;s default gap for named-doctype underlining is 2 points.
</p>
<p>
-As an example, supposed you want the doctype-name underlined in the
-docheader with a 2-point rule separated from the head by 3 points.
-The way to accomplish it is:
+As an example, suppose you want the doctype-name underlined in the
+docheader with a 2-point rule separated from the doctype-name by 3
+points. The way to accomplish it is:
<br/>
<span class="pre-in-pp">
.DOCTYPE_UNDERLINE 2 3p
@@ -1599,7 +1676,7 @@ If you wanted the same thing, but were content with mom&#8217;s
default gap of 2 points,
<br/>
<span class="pre-in-pp">
- .DOCTYPE_UNDERLINE 4
+ .DOCTYPE_UNDERLINE 2
</span>
would do the trick.
</p>
@@ -1657,9 +1734,10 @@ page with a nasty message.
</p>
<p class="tip-bottom">
-Furthermore, PRINTSTYLE must come before any changes to mom&#8217;s
-default typestyle parameters. (This applies primarily to, but is by
-no means restricted to, PRINTSTYLE <kbd>TYPESET</kbd>.) PRINTSTYLE
+<span class="important">Just as important:</span>
+PRINTSTYLE <b>must precede any and all page and style parameters
+associated with a document.</b> This applies primarily to, but is by
+no means restricted to, PRINTSTYLE <kbd>TYPESET</kbd>. PRINTSTYLE
sets up complete templates that include default papersize, margins,
family, fonts, point sizes, and so on. Therefore, changes to any
aspect of document style must come afterwards.
@@ -1792,7 +1870,7 @@ Courier, you can change it with
<kbd>.TYPEWRITER_FAM</kbd>). Since groff ships with only the
Courier family, you will have to install any other monospace family
yourself. See
-<a href="appendices.html#fonts">Adding PostScript fonts to
+<a href="appendices.html#fonts">Adding fonts to
groff</a>.
</p>
@@ -1823,7 +1901,7 @@ for pseudo-italics.
<p id="printstyle-italics">
If you&#8217;d prefer that mom were less bloody-minded
-about pretending to be a typewriter (i.e. you&#8217;d like italics and
+about pretending to be a typewriter (ie you&#8217;d like italics and
pseudo-italics to come out as italics), use the control macros
<br/>
<span class="pre-in-pp">
@@ -1843,7 +1921,7 @@ the sense of these macros in the midst of a document,
underlining of italics and pseudo-italics.
</p>
-<p>
+<p id="underline-quotes">
Additionally, by default, mom underlines
<a href="definitions.html#quotes">quotes</a>
(but not
@@ -1992,7 +2070,7 @@ Macro: <b>START</b>
<p>
START takes no arguments. It simply instructs mom to begin document
-processing. If you don&#8217;t want document processing (i.e. you
+processing. If you don&#8217;t want document processing (ie you
only want the
<a href="typesetting.html#macros-typesetting">typesetting macros</a>),
don&#8217;t use START.
@@ -2008,10 +2086,11 @@ command.
<!-- ======================================================================== -->
-<h2 id="style-before-start" class="macro-group">Establishing type and formatting parameters before START</h2>
+<h2 id="style-before-start" class="macro-group">Establishing typestyle and formatting parameters before START</h2>
<p>
-In the third (optional) part of setting up a document (see
+In the third (optional) part of setting up a document (the
+stylesheet; see
<a href="#docprocessing-tut">Tutorial &ndash; Setting up a mom document</a>),
you can use the
<a href="typesetting.html">typesetting macros</a>
@@ -2022,7 +2101,7 @@ and justification style.
</p>
<p>
-Two additional style concerns have to be addressed here (i.e. in
+Two additional style concerns have to be addressed here (ie in
macros before
<a href="#start">START</a>):
changes to the
@@ -2116,10 +2195,10 @@ below have the following meanings:
<span class="pre">
L_MARGIN Left margin of pages, including headers/footers
R_MARGIN Right margin of pages, including headers/footers
- T_MARGIN The point at which running text (i.e. not
+ T_MARGIN The point at which running text (ie not
headers/footers or page numbers) starts on each
page
- B_MARGIN* The point at which running text (i.e. not
+ B_MARGIN* The point at which running text (ie not
(see note) headers/footers or page numbers) ends on each page
PAGE If you use PAGE, its final four arguments have the
@@ -2131,7 +2210,7 @@ below have the following meanings:
FAMILY The family of all type in the document
PT_SIZE The point size of type in paragraphs; mom uses
this to calculate automatic point size changes
- (e.g. for heads, footnotes, quotes, headers, etc)
+ (eg for heads, footnotes, quotes, headers, etc)
LS/AUTOLEAD** The leading used in paragraphs; all leading and
spacing of running text is calculated from this
@@ -2467,7 +2546,7 @@ argument.
This starts the document 1.5 inches from the top of the page PLUS
whatever spacing adjustment mom has to make in order to ensure that
the first baseline of running text falls on a &#8220;valid&#8221;
-baseline (i.e. one that ensures that the bottom margin of the first
+baseline (ie one that ensures that the bottom margin of the first
page falls where it should). The distance is measured from the top
edge of the paper to the
<a href="definitions.html#baseline">baseline</a>
@@ -2707,7 +2786,9 @@ of each docheader element separately:
<p>
Simply pass the appropriate macro the font you want. <kbd>R, B,
I</kbd> and <kbd>BI</kbd> have the same meaning as they do for
-<a href="typesetting.html#font">FT</a>.
+<a href="typesetting.html#font">FT</a>. You may also use any of the
+<a href="appendices.html#style-extensions">style extensions</a>
+provided by mom.
</p>
<h4 id="change-size" class="docs">6. Adjust the size of individual docheader elements</h4>
@@ -2731,19 +2812,19 @@ Fractional point sizes are allowed.
<br/>
&nbsp;&nbsp;&nbsp;default = +3.5 (+4 if docheader title is &quot;Chapter &lt;n&gt;&quot;)
</li>
- <li>Macro: <b>.CHAPTER_TITLE_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
+ <li>Macro: <b>CHAPTER_TITLE_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
<br/>
&nbsp;&nbsp;&nbsp;default = +4
</li>
- <li>Macro: <b>.SUBTITLE_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
+ <li>Macro: <b>SUBTITLE_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
<br/>
&nbsp;&nbsp;&nbsp;default = +0
</li>
- <li>Macro: <b>.AUTHOR_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
+ <li>Macro: <b>AUTHOR_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
<br/>
&nbsp;&nbsp;&nbsp;default = +0
</li>
- <li>Macro: <b>.DOCTYPE_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
+ <li>Macro: <b>DOCTYPE_SIZE</b> <kbd class="macro-args">&lt;+/-points&gt;</kbd>
(if <a href="#doctype">DOCTYPE</a> is <kbd>NAMED</kbd>)
<br/>
&nbsp;&nbsp;&nbsp;default = +3
@@ -3279,7 +3360,7 @@ first.
<p>
If you need the space, you must use the macro, ADD_SPACE, in
-conjuction with
+conjunction with
<a href="typesetting.html#newpage">NEWPAGE</a>.
</p>
@@ -3301,7 +3382,7 @@ Macro: <b>ADD_SPACE</b> <kbd class="macro-args">&lt;amount of space&gt;</kbd>
ADD_SPACE takes as its single argument the distance
you want mom to advance from the normal
baseline position at the top of any page after the first
-(i.e. the one on which the docheader is normally printed). A
+(ie the one on which the docheader is normally printed). A
<a href="definitions.html#unitofmeasure">unit of measure</a> is
required.
</p>
@@ -3330,6 +3411,7 @@ macro immediately after ADD_SPACE.
</p>
<!-- *** -->
+
<h2 id="intro-doc-param" class="macro-group">Changing basic type and formatting parameters after START</h2>
<p>
@@ -3378,7 +3460,7 @@ Macro: <b>DOC_LEFT_MARGIN</b> <kbd class="macro-args">&lt;left margin&gt;</kbd>
<a href="typesetting.html#l-margin">L_MARGIN</a>
</li>
<li>changes all left margins to the new value</li>
- <li>the line length remains the same (i.e. the right margin
+ <li>the line length remains the same (ie the right margin
shifts when you change the left margin)
</li>
</ul>
@@ -3484,7 +3566,7 @@ Macro: <b>DOC_FAMILY</b> <kbd class="macro-args">&lt;family&gt;</kbd>
<li><a href="docelement.html#endnote-intro">endnotes pages</a></li>
<li><a href="docelement.html#toc-intro">table of contents</a></li>
</ul></li>
- <li>any page elements (e.g. headers page numbers, footnotes) whose
+ <li>any page elements (eg headers page numbers, footnotes) whose
families you wish to remain at their old values must be
reset with the appropriate
<a href="docelement.html#docelement-control">control macros</a>
@@ -3606,6 +3688,79 @@ Macro: <b>DOC_QUAD</b> <kbd class="macro-args">L | R | C | J</kbd>
</li>
</ul>
+<h2 id="terminating" class="macro-group">Terminating a document</h2>
+
+<p>
+You need do nothing special to terminate a document. When groff
+finishes processing the last
+<a href="definitions.html#inputline">input line</a>
+of a file, the page is ejected, subject to whatever routines are
+needed to complete it (eg printing footnotes or adding the page
+number).
+</p>
+
+<p>
+It happens sometimes, however, that a last line of
+<a href="definitions.html#running">running text</a>,
+falling on or very near the bottom of the page, tricks groff into
+breaking to a new page before terminating. The result is a blank
+page at the end of the formatted document.
+</p>
+
+<p>
+The situation is rare, generally occurring only when some additional
+macro is required after the input text, eg to exit a
+<a href="docelement.html#list-intro">list</a>
+or terminate a
+<a href="docelement.html#quote">quote</a>.
+To prevent it from ever happening, I recommend getting into the habit
+of following the final input line of all your mom files with
+<a href="typesetting.html#el"><kbd>.EL</kbd></a>.
+Depending on the
+<a href="definitions.html#filled">fill mode</a>
+in effect, you may also have to append the &#8220;join line&#8221;
+<a href="definitions.html#inlines">escape</a>,
+<kbd>\c</kbd>, to the final line.</p>
+
+<p>
+Thus, for normal text at the end of a paragraph, which is in fill
+mode,
+<br/>
+<span class="pre-in-pp">
+ and they all lived happily ever after.
+ .EL
+</span>
+or for ending a
+<a href="docelement.html#list-intro">LIST</a>
+(also in fill mode)
+<span class="pre-in-pp">
+ .ITEM
+ peaches, pears, plums
+ .EL
+ .LIST OFF
+</span>
+whereas, at the end of a
+<a href="docelement.html#quote-intro">QUOTE</a>
+(which is in nofill mode),
+<span class="pre-in-pp">
+ Shall be lifted\[em]nevermore!\c
+ .EL
+ .QUOTE OFF
+</span>
+Notice that the <kbd>.EL</kbd> comes after the last line of input
+text, not any macros following.
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+<a href="inlines.html#b"><kbd>\*[B]</kbd></a>
+cannot be used as a replacement for <kbd>.EL</kbd> when terminating
+a document.
+</p>
+</div>
+
+
<div class="rule-long"><hr/></div>
<!-- Navigation links -->
diff --git a/contrib/mom/momdoc/goodies.html b/contrib/mom/momdoc/goodies.html
index 69d402c..e624a92 100644
--- a/contrib/mom/momdoc/goodies.html
+++ b/contrib/mom/momdoc/goodies.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -48,13 +50,13 @@ nearly indispensable) routines to simplify typesetting.
<div class="mini-toc-col-1">
<ul class="no-enumerator">
<li class="list-head-goodies"><a href="#alias">ALIAS</a> <span class="normal-smaller">&ndash; rename macros</span></li>
-<li class="list-head-goodies"><a href="#silent">SILENT</a> <span class="normal-smaller">&ndash; &#8220;hide&#8221; input lines from output</span></li>
-<li class="list-head-goodies"><a href="#trap">TRAP</a> <span class="normal-smaller">&ndash; suspend/re-invoke traps</span></li>
-<li class="list-head-goodies"><a href="#smartquotes">SMARTQUOTES</a> <span class="normal-smaller">&ndash; convert typewriter doublequotes to proper doublequotes</span></li>
<li class="list-head-goodies"><a href="#caps">CAPS</a> <span class="normal-smaller">&ndash; convert to upper case</span></li>
-<li class="list-head-goodies"><a href="#string">STRING</a> <span class="normal-smaller">&ndash; user-definable strings</span></li>
<li class="list-head-goodies"><a href="#esc-char">ESC_CHAR</a> <span class="normal-smaller">&ndash; change the escape character to something other than a backslash</span></li>
+<li class="list-head-goodies"><a href="#silent">SILENT</a> <span class="normal-smaller">&ndash; hide input lines from output</span></li>
<li class="list-head-goodies"><a href="#sizespecs">SIZESPECS</a> <span class="normal-smaller">&ndash; get cap-height, x-height and descender depth of a font</span></li>
+<li class="list-head-goodies"><a href="#smartquotes">SMARTQUOTES</a> <span class="normal-smaller">&ndash; convert typewriter doublequotes to proper doublequotes</span></li>
+<li class="list-head-goodies"><a href="#string">STRING</a> <span class="normal-smaller">&ndash; user-definable strings</span></li>
+<li class="list-head-goodies"><a href="#trap">TRAP</a> <span class="normal-smaller">&ndash; suspend/re-invoke traps</span></li>
<li class="list-head-goodies no-anchor"><span style="font-size: 90%;">Underscoring/underlining</span>
<ul class="sublist">
<li class="list-head-goodies text-color"><a href="#underscore">UNDERSCORE</a> <span class="normal-smaller">&ndash; single underscore</span>
@@ -70,7 +72,7 @@ nearly indispensable) routines to simplify typesetting.
</ul></li>
<li class="list-head-goodies no-anchor"><span style="font-size: 90%;">Padding</span>
<ul class="sublist">
- <li class="list-head-goodies text-color"><a href="#pad">PAD</a> <span class="normal-smaller">&ndash; insert equalized space into lines</span>
+ <li class="list-head-goodies text-color"><a href="#pad">PAD</a> <span class="normal-smaller">&ndash; insert equalized whitespace into lines</span>
<ul class="sublist sub">
<li class="list-head-goodies text-color"><a href="#pad-marker">PAD_MARKER</a> <span class="normal-sub-sub">&ndash; change/set the marker used with PAD</span></li>
</ul></li>
@@ -167,10 +169,10 @@ precedes the macro when it&#8217;s a
<span class="tip">Tip:</span>
A particularly good candidate for ALIAS is the macro,
<a href="typesetting.html#ps">PT_SIZE</a>.
-A more natural name for it (at least to old-school phototypesetters)
-would simply be PS, but PS conflicts with the <b>eqn</b> equation
-preprocessor and thus mom uses the longer form. However, if
-you&#8217;re not using <b>eqn</b>, you can happily rename PT_SIZE to
+A more natural name for it would simply be PS, but PS conflicts
+with the <b>eqn</b> equation preprocessor and thus mom uses the
+longer form. However, if you&#8217;re not using <b>eqn</b>, you can
+happily rename PT_SIZE to
PS:
<br/>
<span class="pre-in-pp">
@@ -294,9 +296,9 @@ Macro: <b>TRAP</b> <kbd class="macro-args">toggle</kbd>
</div>
<p>
-Traps are vertical positions on the output page at which you or
-mom have instructed groff to start doing something automatically.
-Commonly, this is near the bottom of the page, where automatic
+Traps are vertical positions on the output page at which
+you or mom have instructed groff to start doing something
+automatically. Commonly, this is near the bottom of the page, where
behind-the-scenes processing is needed in order for one page to
finish and another to start.
</p>
@@ -310,7 +312,7 @@ happens, surround just the offending macros and input lines with
...
.TRAP
</span>
-TRAP is a toggle, therefore any argument turns it off (i.e. suspends
+TRAP is a toggle, therefore any argument turns it off (ie suspends
the trap), and no argument turns it (back) on.
</p>
@@ -356,7 +358,7 @@ And you don&#8217;t want to look like an amateur, do you?
If you invoke SMARTQUOTES with one of the optional arguments
(<kbd>,,</kbd> or <kbd>&gt;&gt;</kbd>
or <kbd>&lt;&lt;</kbd>) you can use
-<kbd>&quot;</kbd> (i.e. the inch-mark/doublequotes key)
+<kbd>&quot;</kbd> (ie the inch-mark/doublequotes key)
as &#8220;cheap&#8221; open-and close-quotes when inputting text in
a language other than English, and have mom convert them, on output,
into the chosen open-and close-quote style.
@@ -445,9 +447,8 @@ input with the apostrophe (found at the right-hand end of the
all instances of the apostrophe as an apostrophe, making the symbol
useless as an open-single-quote. For open single quotes, input
the backtick character typically found under the tilde on most
-keyboards. (Pour nous autres, &#8220;backtick&#8221; veut dire
-l&#8217;accent grave.) Here&#8217;s an example of correct input
-copy with single quotes:
+keyboards. Here&#8217;s an example of correct input copy with
+single quotes:
<br/>
<span class="pre-in-pp">
"But she said, `I don&#8217;t want to!'"
@@ -693,7 +694,7 @@ The above places upper edge of the underscore 3 points below the
UNDERSCORE does not work across line breaks in output copy, which is
to say that you can&#8217;t underscore a multi-line passage simply
by putting the text of the whole thing in the string you pass to
-UNDERSCORE. If you need to several lines of type, use
+UNDERSCORE. If you need to underscore several lines of type, use
<a href="#underline">UNDERLINE</a>.
</p>
</div>
@@ -830,11 +831,16 @@ Furthermore, you cannot colorize underlining, and there&#8217;s a
special macro,
<a href="#underline-specs">UNDERLINE_SPECS</a>,
to control the weight and distance from the baseline of the
-underline.
+underline. Lastly, files that use UNDERLINE must be processed with
+<br/>
+<span class="pre-in-pp">
+ pdfmom -Tps filename.mom | ps2pdf - filename.pdf
+</span>
+since groff's native pdf driver does not recognize UNDERLINE.
</p>
<p>
-UNDERLINE is a toggle macro, therefore you invoke it by itself (i.e.
+UNDERLINE is a toggle macro, therefore you invoke it by itself (ie
with no argument) to initiate underlining, and with any argument
(<kbd>OFF, QUIT, X,</kbd> etc) to turn it off.
</p>
@@ -850,13 +856,11 @@ with the escapes
<p class="tip-bottom">
<span class="additional-note">Additional note:</span>
-Neither <kbd>.UNDERLINE</kbd> nor <kbd>\*[UL]</kbd> persist past the
-current document element tag. For example, if you turn underlining
-on in a paragraph
+In document processing, neither <kbd>.UNDERLINE</kbd> nor
+<kbd>\*[UL]</kbd> persist past the current document element tag.
+For example, if you turn underlining on in a paragraph
(<kbd><a href="docelement.html#pp">.PP</a></kbd>),
-your next paragraph will not be underlined (nor your next head,
-subhead, etc), regardless of whether you explicitly turn underlining
-off.
+your next paragraph will not be underlined.
</p>
</div>
@@ -904,12 +908,15 @@ produces the same result as
<span class="pre-in-pp">
Which should I heed? \*[UL]Just do it\*[ULX] or \*[UL]just say no?\*[ULX]
</span>
+In either case, this is a misuse of UNDERLINE.
+<a href="#underscore">UNDERSCORE</a>
+is preferable.
</p>
<!-- -PAD- -->
<div class="macro-id-overline">
-<h3 id="pad" class="macro-id">Insert space into lines</h3>
+<h3 id="pad" class="macro-id">Insert equalized whitespace into lines</h3>
</div>
<div class="box-macro-args">
@@ -981,10 +988,6 @@ rules into the whitespace through the use of string tabs and
mom&#8217;s
<a href="definitions.html#inlines">inline escape</a>
<kbd><a href="inlines.html#inline-rule-mom">\*[RULE]</a></kbd>.
-(Instead of <kbd>\*[RULE]</kbd>, groff&#8217;s line
-drawing function,
-<kbd><a href="inlines.html#inline-linedrawing-groff">\l'&lt;distance&gt;'</a></kbd>
-could be used.)
<br/>
<span class="pre-in-pp">
.LL 30P
@@ -997,14 +1000,10 @@ could be used.)
\*[RULE]
.TQ
</span>
-If you&#8217;re not a typesetter, and if you&#8217;re new to groff,
-the example probably looks like gibberish. My apologies. However,
-remember that typesetting is a craft, and without having studied the
-craft, it takes a while to grasp its concepts.
</p>
<p>
-Basically, what the example does is:
+Here&#8217;s what the example does:
</p>
<ol style="margin-top: -.5em; margin-bottom: -.5em;">
<li>Pads the Date/Signature line with a shorter space for Date
@@ -1126,7 +1125,7 @@ are perfect for this. An example follows.
<br/>
<span class="pre">
.LL 30P
- .PAD "Date\*[ST1]#\*[ST1X]Signature\*[ST2]###\*[ST2X]"
+ .PAD "Date\*[ST1]#\*[ST1X] Signature\*[ST2]###\*[ST2X]" NOBREAK
.EL
.ST 1 J
.ST 2 J
@@ -1178,6 +1177,28 @@ default (a period) to the underscore character, enter
</span>
</p>
+<div class="box-tip">
+<p class="tip">
+<span class="tip">Tip:</span>
+A particularly useful function of LEADER_CHARACTER is that it can be
+used to increase the spacing of mom&#8217;s default leaders. This is
+done by assigning to LEADER_CHARACTER both the period (dot) and a
+space. The technique requires a little low-level groffing:
+<br/>
+<span class="pre-in-pp">
+ .char \[leader] . \"
+ .LEADER_CHARACTER \[leader]
+</span>
+The <kbd>.char</kbd>
+<a href="definitions.html#primitives">primitive</a>
+allows you to define a character called <kbd>leader</kbd>, to which
+you assign a period and a space. The <kbd>\"</kbd>, which, in
+groff, is used to add non-printing comments to a line, is not
+strictly necessary. Its presence here lets you see that
+there&#8217;s a space after the period.
+</p>
+</div>
+
<!-- -DROPCAP- -->
<div class="macro-id-overline">
@@ -1239,7 +1260,7 @@ When using the
DROPCAP only works
</p>
<ul style="margin-top: -1em; margin-bottom: 0;">
- <li>with initial paragraphs (i.e. at the start of the document,
+ <li>with initial paragraphs (ie at the start of the document,
or after
<a href="docelement.html#head">HEAD</a>),</li>
<li>when <kbd>.DROPCAP</kbd> comes immediately after <kbd>.PP</kbd>,</li>
@@ -1401,18 +1422,14 @@ find them useful for other purposes.
Mom does a pretty fine job of making superscripts look good in any
font and at any size. If you&#8217;re fussy, though (and I am),
about precise vertical placement, kerning, weight, size, and so on,
-you may want to roll your own solution. And sorry, there&#8217;s
-no mom equivalent for subscripts. I'm neither a mathematician
-nor a chemist, so I don&#8217;t need them. Of course, anyone who
-wishes to contribute a subscript routine to mom will receive
-blessings not only in this lifetime, but in all lifetimes to come.
+you may want to roll your own solution.
</p>
</div>
<h3 id="sup-raise" class="docs">SUPERSCRIPT RAISE AMOUNT</h3>
<p>
By default, mom raises superscripts 1/3 of an
-<a href="definitions.html#ems">em</a>
+<a href="definitions.html#em">em</a>
above the baseline. If you&#8217;re not happy with this default,
you can change it by invoking SUPERSCRIPT_RAISE_AMOUNT with the
amount you want them raised. A
diff --git a/contrib/mom/momdoc/graphical.html b/contrib/mom/momdoc/graphical.html
index f6c063d..54559a6 100644
--- a/contrib/mom/momdoc/graphical.html
+++ b/contrib/mom/momdoc/graphical.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
diff --git a/contrib/mom/momdoc/headfootpage.html b/contrib/mom/momdoc/headfootpage.html
index d411874..4201cd4 100644
--- a/contrib/mom/momdoc/headfootpage.html
+++ b/contrib/mom/momdoc/headfootpage.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -160,7 +162,7 @@ page element.
<div id="author-note" class="box-tip">
<p class="tip">
<span class="note">Author's note:</span>
-Left to their own devices (i.e. if you&#8217;re happy with the way
+Left to their own devices (ie if you&#8217;re happy with the way
mom does things by default), headers are something you never have to
worry about. You can skip reading this section entirely. But if
you want to change them, be advised that headers have more macros to
@@ -178,10 +180,10 @@ that identifies some aspect of the document as a whole.
</p>
<p>
-&#8221;The left part (&#8220;header-left) lines up with the
+The left part (&#8220;header-left&#8221;) lines up with the
document&#8217;s left margin. The centre part (&#8220;header
-centre&#8220;) is centred on the document&#8217;s line length.
-&#8221;The right part (&#8220;header-right) lines up with the
+centre&#8221;) is centred on the document&#8217;s line length.
+The right part (&#8220;header-right&#8221;) lines up with the
document&#8217;s right margin. Not all parts need contain a string,
and if you don&#8217;t want headers at all, you can turn them off
completely.
@@ -334,7 +336,7 @@ bottom of each page), the vertical spacing and placement of page
numbers, whether at the top or the bottom of the page, is managed
exactly as if the page numbers were headers (or footers), and are
controlled by the same macros. See
-<a href="#pagination">Pagination control</a>.
+<a href="#index-pagination-control">Pagination control</a>.
</p>
<div class="rule-short"><hr/></div>
@@ -423,7 +425,7 @@ Macro: <b>HEADERS</b> <kbd class="macro-args">toggle</kbd>
<a href="definitions.html#header">Page headers</a>
are on by default. If you don&#8217;t want them, turn them off by
invoking <kbd>.HEADERS</kbd> with any argument (<b>OFF, QUIT,
-END, X...</b>), e.g.
+END, X...</b>), eg
<br/>
<span class="pre-in-pp">
.HEADERS OFF
@@ -439,8 +441,7 @@ appear at the bottom of the page.
</p>
<p>
-<b>ADDITIONAL NOTE:</b> If HEADERS
-are OFF, mom&#8217;s normal top
+<b>ADDITIONAL NOTE:</b> If HEADERS are OFF, mom&#8217;s normal top
margin for
<a href="definitions.html#running">running text</a>
(7.5
@@ -451,7 +452,7 @@ to the situation where footers have been explicitly turned on
<kbd><a href="#footers">FOOTERS</a></kbd>).
Explicitly invoking footers moves page numbering to the
top of the page, where its placement and spacing are the same as
-for headers. (I.e. the top margin of running text remains 7.5
+for headers (i.e. the top margin of running text remains 7.5
picas.)
</p>
@@ -470,7 +471,7 @@ Macro: <b>FOOTERS</b> <kbd class="macro-args">toggle</kbd>
are off by default. If you want them instead of
<a href="definitions.html#header">headers</a>
(you can&#8217;t have both), turn them on by invoking
-<kbd>.FOOTERS</kbd> without an argument, e.g.
+<kbd>.FOOTERS</kbd> without an argument, eg
<br/>
<span class="pre-in-pp">
.FOOTERS
@@ -537,8 +538,7 @@ to headers/footers) can be designed to your own specifications.
</ul></li>
<li><a href="#hdrftr-right">HEADER_RIGHT</a></li>
<li><a href="#reserved-strings">Using mom&#8217;s reserved strings in header/footer definitions</a>
- (e.g. <kbd>\E*[$TITLE]</kbd> when you want
- <br/>
+ (eg <kbd>\E*[$TITLE]</kbd> when you want
the title, <kbd>\E*[$AUTHOR]</kbd> when you want the author, etc.)
</li>
<li><a href="#page-number-symbol">Replacing header-left, centre or right with the page number</a></li>
@@ -713,11 +713,12 @@ are:
<span class="pre-in-pp">
\E*[$TITLE] &mdash;the current argument passed to .TITLE
\E*[$DOCTITLE] &mdash;the current argument passed to .DOCTITLE
+ \E*[$DOC_TYPE] &mdash;the NAMED argument passed to .DOCTYPE
\E*[$AUTHOR] &mdash;the current first argument passed to .AUTHOR
\E*[$AUTHOR_1...9] &mdash;the current arguments passed to .AUTHOR
\E*[$AUTHORS] &mdash;a comma-separated concatenated string
of all the current arguments passed to .AUTHOR
- (i.e. a list of authors)
+ (ie a list of authors)
\E*[$CHAPTER_STRING] &mdash;the current argument passed to .CHAPTER_STRING,
if invoked, otherwise, "Chapter"
\E*[$CHAPTER] &mdash;the current argument (typically a number) passed
@@ -937,7 +938,7 @@ to change the colour of the header rule.
Replace HEADER_, above, with FOOTER_ to colourize footers.
</p>
-<div class="box-macro-args">
+<div id="hdrftr-plain" class="box-macro-args">
Macro: <b>HEADER_PLAIN</b>
</div>
@@ -1038,7 +1039,7 @@ or as defined by you with the
simply invoke this macro (using the appropriate position) with no
argument. If you wish to turn capitalization off (say, for the
header-right string that mom capitalizes by default), invoke the
-macro with any argument (e.g. <kbd>OFF, QUIT, END, X</kbd>...).
+macro with any argument (eg <kbd>OFF, QUIT, END, X</kbd>...).
</p>
<p>
@@ -1166,7 +1167,7 @@ you&#8217;d use HEADER_MARGIN to change their baseline placement.
<p class="tip-top">
<span class="important" style="display: block; margin-bottom: -1em;">Important &ndash; FOOTER_MARGIN and bottom margins</span>
<br/>
-Mom requires a footer margin (i.e. the distance from the bottom of
+Mom requires a footer margin (ie the distance from the bottom of
the page at which to place footers) for proper operation, hence she
sets one, even if you don&#8217;t. As stated above, her default
footer margin is 3-picas.
@@ -1176,9 +1177,9 @@ footer margin is 3-picas.
If you use
<a href="typesetting.html#b-margin">B_MARGIN</a>
or
-<a href="typesetting.html#page">PAGE</a>,
+<a href="typesetting.html#page">PAGE</a>
to set a bottom margin for your document (prior to
-<a href="docprocessing.html#start">START</a>)
+<a href="docprocessing.html#start">START</a>),
and the margin&#8217;s too close to mom&#8217;s default
footer margin (or a footer margin you set yourself with
FOOTER_MARGIN), mom will not print your footers; additionally,
@@ -1330,7 +1331,7 @@ Macro: <b>HEADER_RULE</b> <kbd class="macro-args">toggle</kbd>
By default, mom prints a header separator rule underneath headers
(or above footers). If you don&#8217;t want the rule, turn it off by
invoking <kbd>.HEADER_RULE</kbd> with any argument (<kbd>OFF, QUIT,
-END, X...</kbd>), e.g.
+END, X...</kbd>), eg
<br/>
<span class="pre-in-pp">
.HEADER_RULE OFF
@@ -1413,7 +1414,7 @@ to the bottom edge of the rule.) A unit of measure is required, and
decimal fractions are allowed. Please note that HEADER_RULE_GAP has
no effect on
<a href="#hdrftr-gap">HEADER_GAP</a>
-(i.e. HEADER_RULE_GAP is NOT added to HEADER_GAP when mom calculates
+(ie HEADER_RULE_GAP is NOT added to HEADER_GAP when mom calculates
the space between headers and the start of
<a href="definitions.html#running">running text</a>).
</p>
@@ -1575,9 +1576,10 @@ Macro: <b>HEADER_RECTO</b> <kbd class="macro-args">LEFT | CENTER | RIGHT [ CAPS
Macro: <b>HEADER_VERSO</b> <kbd class="macro-args">LEFT | CENTER | RIGHT [ CAPS ] "&lt;header verso string&gt;"</kbd>
</div>
-<div id="userdef-hdrftr" class="box-tip" style="margin-top: 1.5em; outline: 2px dashed #000089; margin-left: 3px; margin-right: 3px;">
+<div id="userdef-hdrftr" class="box-important">
+
<p class="tip">
-<span class="tip" style="display: block; margin-bottom: -1.25em; color: #000056; font-size: 105%;">User-defined single string headers/footers (no recto/verso)</span>
+<span class="tip" style="display: block; margin-bottom: -1.25em; color: #000056; font-size: 100%;">User-defined single string headers/footers (no recto/verso)</span>
<br/>
HEADER_RECTO may be used to create user-defined, single string
headers (or footers, with FOOTER_RECTO), even when recto/verso is
@@ -1692,7 +1694,7 @@ Notice that the quad argument, <kbd>LEFT</kbd>, is used in both
cases. When padding a header, it doesn&#8217;t matter which
quad argument you use, although you must be sure to supply
one. Also note that mom does not interpret the <kbd>#</kbd> in
-<kbd>\*[PAGE#]</kbd> as a padding marker (i.e. as a place to insert
+<kbd>\*[PAGE#]</kbd> as a padding marker (ie as a place to insert
whitespace).
</p>
@@ -1788,8 +1790,8 @@ three-part headers and footers.
<p>
<kbd>L | C | R</kbd> in the arguments to HEADERS_AND_FOOTERS refers
-to whether you want the specific header or footer set flush left,
-centered, or flush right. (You can also use the longer forms,
+to whether you want the specific header or footer part on the left,
+in the middle, or on the right. (You can also use the longer forms,
<kbd>LEFT</kbd>, <kbd>CENTER</kbd> and <kbd>RIGHT</kbd>.) The
string you give afterwards is whatever text you want, including
mom&#8217;s
@@ -1812,7 +1814,7 @@ to the style shown above to keep things manageable.
<p>
If you want to disable having both headers and footers on the same
page, invoke <kbd>.HEADERS_AND_FOOTERS</kbd> with any argument
-you want (e.g. <kbd>OFF, QUIT, END, X...</kbd>). Mom will restore
+you want (eg <kbd>OFF, QUIT, END, X...</kbd>). Mom will restore
her default behaviour of setting automatically generated page
headers, with the page number, centered, at the bottom of the
page. If you would prefer footers instead of headers after turning
@@ -1914,7 +1916,7 @@ with control macros.
<li><a href="#pagenum-style">PAGENUM_STYLE</a> &ndash; digits, roman numerals, etc</li>
<li><a href="#pagenum-on-first-page">PAGENUM_ON_FIRST_PAGE</a> &ndash; applies only when footers are enabled</li>
<li><a href="#draft-with-pagenumber">DRAFT_WITH_PAGENUMBER</a> &ndash; attach draft/revision information to page numbers</li>
- <li><a href="#paginate-control">Pagination control macros and defaults</a></li>
+ <li><a href="#index-paginate-control">Pagination control macros and defaults</a></li>
</ul>
</div>
@@ -1932,7 +1934,7 @@ Macro: <b>PAGINATE</b> <kbd class="macro-args">toggle</kbd>
By default, mom paginates documents (in the bottom margin). If
you&#8217;d prefer she not paginate, turn pagination off by invoking
<kbd>.PAGINATE</kbd> with any argument (<kbd>OFF, NO, QUIT, END,
-X...</kbd>), e.g.
+X...</kbd>), eg
<br/>
<span class="pre-in-pp">
.PAGINATE NO
@@ -2074,7 +2076,7 @@ See
<span class="pre defaults">
.PAGENUM_FAMILY default = prevailing document family; default is Times Roman
.PAGENUM_FONT default = roman
-.PAGENUM_SIZE default = 0 (i.e. same size as paragraph text)
+.PAGENUM_SIZE default = 0 (ie same size as paragraph text)
.PAGENUM_COLOR default = black
</span>
</div>
@@ -2153,7 +2155,7 @@ one blank page, you have to tell mom:
</span>
The optional argument, <kbd>DIVIDER</kbd>, must be given if
you&#8217;re inserting a blank page before the start of any new
-document section (i.e. a new chapter, or endnotes, a bibliography,
+document section (ie a new chapter, or endnotes, a bibliography,
or table of contents). Without the <kbd>DIVIDER</kbd> argument, mom
simply inserts the blank pages and prepares the next page to receive
<a href="definitions.html#running">running text</a>.
diff --git a/contrib/mom/momdoc/images.html b/contrib/mom/momdoc/images.html
index e3af015..1bdddd4 100644
--- a/contrib/mom/momdoc/images.html
+++ b/contrib/mom/momdoc/images.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,12 +15,13 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
- <title>Mom -- Inserting images into mom documents</title>
+ <title>Mom -- Graphics and floats</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
</head>
@@ -37,24 +39,235 @@ FDL in the main directory of the groff source package.
</tr>
</table>
-<h1 class="docs">Inserting images into a document</h1>
+<h1 class="docs">Graphics and floats</h1>
+
+<div style="width: 55%; margin: auto;">
+<ul class="no-enumerator" style="margin-left: -1em;">
+ <li><a href="#images-intro">Introduction to inserting images and graphics</a>
+ <li><a href="#converting">Image conversion and file processing</a>
+ <ul style="margin-left: -.5em; list-style-type: disc;">
+ <li><a href="#pdf">PDF</a></li>
+ <li><a href="#eps">EPS</a></li>
+ </ul></li>
+ <li><a href="#pdf-image">The PDF_IMAGE macro</a></li>
+ <li><a href="#pspic">The PSPIC macro</a></li>
+ <li><a href="#floats-intro">Introduction to floats</a></li>
+ <li><a href="#float">The FLOAT macro</a>
+ <ul style="margin-left: -.5em; list-style-type: disc;">
+ <li><a href="#tbl-with-float">Using tbl with FLOAT</a></li>
+ </ul></li>
+</ul>
+</div>
+
+<div class="rule-medium"><hr/></div>
+
+<h2 id="images-intro" class="docs">Introduction to inserting images and graphics</h2>
+
+<p>
+In order to include images in mom documents, the images must be in
+either PDF (.pdf) or EPS (.eps) format. Each format requires its own
+macro, but both take the same arguments, and in the same order.
+</p>
+
+<p>
+Please note that there are differences in the way the files
+containing PDF and EPS images must be processed, hence documents may
+not contain a mix.
+</p>
+
+<h3 id=converting class="docs">Image conversion and file processing</h3>
+
+<p>
+When your image files are not in PDF or EPS format&mdash;jpgs,
+for example&mdash;you must convert them before including them in
+a mom document. Any utility for converting images may used. The
+ImageMagick suite of programmes, present on most GNU/Linux
+systems, contains <b>convert</b>, which is simple and effective.
+</p>
+
+<h4 id="pdf" class="docs">PDF</h4>
+
+<p>
+Assuming a jpg image, conversion to PDF is done like this:
+<br/>
+<span class="pre-in-pp">
+ convert &lt;image&gt;.jpg &lt;image&gt;.pdf
+</span>
+Any image type supported by <b>convert</b> may be converted this
+way.
+</p>
+
+<p>
+Mom files containing PDF images must be processed using
+groff&#8217;s pdf driver. Use of
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>
+is strongly recommended, which natively invokes the pdf driver.
+<br/>
+<span class="pre-in-pp">
+ pdfmom doc.mom &gt; doc.pdf
+</span>
+</p>
+
+<h4 id="eps" class="docs">EPS</h4>
+
+<p>
+Assuming a jpg image, conversion to EPS is done like this:
+<br/>
+<span class="pre-in-pp">
+ convert &lt;image&gt;.jpg &lt;image&gt;.eps
+</span>
+Any image type supported by <b>convert</b> may be converted this
+way. There have been reports of trouble with PostScript level 2
+images, so don&#8217;t save your images in this format.
+</p>
+
+<p>
+Mom files containing EPS images must be processed using
+groff&#8217;s postscript driver. Use of
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>,
+which can be told to use the postscript driver, is strongly
+recommended.
+<br/>
+<span class="pre-in-pp">
+ pdfmom -Tps doc.mom &gt; doc.pdf
+</span>
+</p>
+
+<!-- -PDF_IMAGE- -->
+
+<div class="macro-id-overline">
+<h3 id="pdf-image" class= "macro-id">PDF_IMAGE</h3>
+</div>
+
+<div class="box-macro-args">
+Macro: <b>PDF_IMAGE</b> <kbd class="macro-args">[ -L | -C | -R | -I &lt;indent&gt; ] \
+<br/>
+&lt;pdf image&gt; &lt;width&gt; &lt;height&gt; \
+<br/>
+[ SCALE &lt;factor&gt; ] [ ADJUST +|-&lt;vertical adjustment&gt; ]</kbd>
+</div>
+<p class="requires">
+&bull;&nbsp;<span style="font-style: normal">
+<kbd>&lt;indent&gt;</kbd>,
+<kbd>&lt;width&gt;</kbd>,
+<kbd>&lt;height&gt;</kbd></span>
+and
+<span style="font-style: normal">
+<kbd>&lt;vertical adjustment&gt;</kbd></span>
+require a
+<a href="definitions.html#unitofmeasure">unit of measure</a>
+</p>
+
+<p>
+Unlike
+<a href="#pspic">PSPIC</a>,
+which it resembles, PDF_IMAGE requires that the pdf image&#8217;s
+dimensions (the bounding box,
+<a href="#bounding-box">see below</a>)
+be supplied each time it&#8217;s called.
+</p>
+
+<p>
+The first optional argument tells mom how to align the image
+horizontally, with <kbd>-L</kbd>, <kbd>-C</kbd>, and <kbd>-R</kbd>
+standing for left, centre and right respectively. If you need more
+precise placement, the <kbd>-I</kbd> argument allows you to give an
+indent from the left margin. Thus, to indent a PDF image 6
+<a href="definitions.html#picaspoints">picas</a>
+from the left margin
+<br/>
+<span class="pre-in-pp">
+ .PDF_IMAGE -I 6P &lt;remaining arguments&gt;
+</span>
+If you omit the first argument, the image will be centred.
+</p>
+
+<p>
+<kbd>&lt;pdf image&gt;</kbd> must be in PDF format, with a .pdf
+extension. If it is not, mom will abort with a message. See <a
+href="#pdf">here</a> for instructions on converting image formats to
+PDF.
+</p>
+
+<p id="bounding-box">
+<kbd>&lt;width&gt;</kbd> and <kbd>&lt;height&gt;</kbd> are the
+dimensions of the image&#8217;s bounding box. The most reliable way
+of getting the bounding box is with the utility, <strong>pdfinfo</strong>:
+<br/>
+<span class="pre-in-pp">
+ pdfinfo &lt;image.pdf&gt; | grep "Page *size"
+</span>
+This will spit out a line that looks like this:
+<br/>
+<span class="pre-in-pp">
+ Page size: width x height pts
+</span>
+<kbd>pts</kbd> means
+<a href="definitions.html#picaspoints">points</a>,
+therefore the unit of measure appended to <kbd>&lt;width&gt;</kbd>
+and <kbd>&lt;height&gt;</kbd> must be <kbd>p</kbd>.
+</p>
<p>
-You can insert images into a document by using the PSPIC
-macro. PSPIC isn&#8217;t actually part of mom; it comes packaged
-with groff itself. Images must be in PostScript format, either
-straight .ps or .eps (Encapsulated PostScript). If you have the
-ImageMagick suite of programmes installed on your system, a simple way
-to convert most image formats to .eps is with <kbd>convert</kbd>, at
-the command line, as in this jpg&nbsp;=>&nbsp;eps example:
+The optional <kbd>SCALE</kbd> argument allows you to scale the image
+by <kbd>&lt;factor&gt;</kbd>. The factor is a percentage of the
+image&#8217;s original dimensions, thus
<br/>
<span class="pre-in-pp">
- convert &lt;filename&gt;.jpg &lt;filename&gt;.eps
+ SCALE 50
</span>
-There have been reports of trouble with PostScript level 2 images,
-so don&#8217;t save your images in this format.
+scales the image to 50 percent of its original size. No percent
+sign or unit of measure should be appended.
</p>
+<p>
+The final optional argument is the vertical adjustment to apply to
+the image. A plus value raises the image
+<span style="font-style: italic">within the space allotted for it</span>;
+a negative value lowers it. The value must have a unit of measure
+appended.
+</p>
+
+<p>
+Remember that mom files with embedded PDF images must be processed
+with
+<br/>
+<span class="pre-in-pp">
+ pdfmom doc.mom &gt; doc.pdf
+</span>
+</p>
+
+<div class="box-tip">
+<p class="tip-top">
+<span class="note">Note:</span>
+Mom automatically applies shimming after PDF_IMAGE. See
+<a href="docprocessing.html#shim">SHIM</a>
+for a discussion of shimming, and how to disable it.
+<p>
+
+<p>
+<span class="note">Additional note:</span>
+Mom treats single, discrete images inserted into a document with
+PDF_IMAGE somewhat like
+<a href="#floats-intro">floats</a>,
+which is to say that if an image doesn&#8217;t fit on the output
+page, she will defer it to the top of the next page while continuing
+to process
+<a href="definitions.html#running">running text</a>.
+<kbd>ADJUST</kbd> is ignored whenever an image is deferred, and a
+message is printed to stderr advising you where the deferment has
+taken place.
+</p>
+
+<p class="tip-bottom">
+However, if more than one image does not fit on the output page,
+mom defers only the first; the remainder are silently ignored.
+Therefore, if you insert several images close together in the text,
+it is highly recommended that you wrap the images in floats, which
+do not have this restriction.
+</p>
+</div>
+
<!-- -PSPIC- -->
<div class="macro-id-overline">
@@ -66,12 +279,19 @@ Macro: <b>PSPIC</b> <kbd class="macro-args">[ -L | -R | -I &lt;n&gt; ] &lt;file&
</div>
<p>
-<kbd>man groff-tmac</kbd> contains the documentation for PSPIC, but
+PSPIC is not actually part of mom, but rather a macro included with
+every groff installation. Although its arguments are identical to
+PDF_IMAGE (except for <kbd>SCALE</kbd> and <kbd>ADJUST</kbd>, which
+are missing), its behaviour is slightly different.
+</p>
+
+<p>
+<kbd>man groff_tmac</kbd> contains the documentation for PSPIC, but
I&#8217;ll repeat it here with a few modifications for clarity.
</p>
<div class="examples-container">
-<h3 id="groff-tmac" class="docs" style="margin-top: .5em;">From groff-tmac</h3>
+<h3 id="groff-tmac" class="docs" style="margin-top: .5em;">From <span style="text-transform: none">groff_tmac</span></h3>
<p style="margin-top: .5em; margin-bottom: .5em;">
<kbd>&lt;file&gt;</kbd> is the name of the file containing the
image; <kbd>width</kbd> and <kbd>height</kbd> give the desired
@@ -82,7 +302,7 @@ attached; the default unit of measure is
<kbd>i</kbd>. PSPIC will scale the graphic
uniformly in the x and y directions so that it is no more than
<kbd>width</kbd> wide and <kbd>height</kbd> high. By default, the
-graphic will be horizontally centered. The <kbd>-L</kbd> and
+graphic will be horizontally centred. The <kbd>-L</kbd> and
<kbd>-R</kbd> options cause the graphic to be left-aligned and
right-aligned, respectively. The <kbd>-I</kbd> option causes
the graphic to be indented by <kbd>&lt;n&gt;</kbd>; the default unit of
@@ -92,13 +312,27 @@ measure is <kbd>m</kbd>
</div>
<p>
-Unless you&#8217;re a PostScript whiz and have futzed around with
-bounding boxes and whatnot, it&#8217;s unlikely that your image will
-occupy an easily predictable and precise amount of space on the
-page. This is particularly significant when it comes to the amount
-of vertical space occupied by the image. A certain amount of
-manual tweaking of the vertical placement of the image will
-probably be required, via the
+It is not necessary to pass PSPIC the
+<kbd>&lt;width&gt;</kbd> and <kbd>&lt;height&gt;</kbd> arguments unless
+you are scaling the image, in which case you will most likely need
+the original dimensions of the EPS image&#8217;s bounding box.
+These can be found with
+<span class="pre-in-pp">
+ gs -q -dBATCH -dNOPAUSE -sDEVICE=bbox &lt;image file&gt;.pdf 2&gt;&amp;1 \
+ | grep "%%BoundingBox" | cut -d " " -f4,5
+</span>
+The two digits returned are in
+<a href="definitions.html#picaspoints">points</a>,
+therefore the
+<a href="definitions.html#unitofmeasure">unit of measure</a>
+<kbd>p</kbd> must be appended to them.
+</p>
+
+<p>
+Because PSPIC lacks the <kbd>ADJUST</kbd> option offered by
+<a href="#pdf-image">PDF_IMAGE</a>
+a certain amount of manual tweaking of the vertical placement of the
+image will probably be required, typically by using the
<a href="typesetting.html#ald">ALD</a>
and
<a href="typesetting.html#rld">RLD</a>
@@ -106,14 +340,199 @@ macros.
</p>
<p>
-Additionally, images inserted into
+Additionally, EPS images inserted into
<a href="definitions.html#running">running text</a>
will almost certainly disrupt the baseline placement of running
text. In order to get mom back on track after
invoking <kbd>.PSPIC</kbd>, I strongly recommend using the
<a href="docprocessing.html#shim">SHIM</a>
macro so that the bottom margin of running text falls where it
-should.
+should. Please note that with PDF_IMAGE, this is not necessary.
+</p>
+
+<p>
+Remember that mom files with embedded EPS images must be processed
+with
+<br/>
+<span class="pre-in-pp">
+ pdfmom -Tps doc.mom &gt; doc.pdf
+</span>
+</p>
+
+<div class="rule-medium"><hr/></div>
+
+<h2 id="floats-intro" class="docs">Introduction to floats</h2>
+
+<p>
+Images and graphics (including those created with
+<strong>tbl</strong> and <strong>pic</strong>) sometimes do not
+fit on the output page of a PDF or PostScript document at the
+place they&#8217;re inserted in the input file. It&#8217;s
+necessary, therefore, to defer them to the next page while carrying
+on with
+<a href="definitions.html#running">running text</a>.
+</p>
+
+<p>
+Whenever you need this functionality (tables, for example, generally
+need only appear near related text, not at a precise location), mom
+provides the FLOAT macro.
+</p>
+
+<p>
+Floats are usually used for images and graphics, but can contain
+anything you like, including text. Whatever&#8217;s in the
+float will be kept together as a block, output immediately if
+there&#8217;s room, or deferred to the top of the next output page
+when there isn&#8217;t; running text continues to the bottom of the
+previous page without interruption.
+</p>
+
+<p>
+In the case of a float that doesn&#8217;t fit being followed by
+one that does, the second is output in position and the first is
+deferred. In the case of two or more that don&#8217;t fit, they are
+output in order on the next page.
+</p>
+
+<p>
+A key distinction between a float and a
+<a href="docelement.html#quote">QUOTE</a>
+or
+<a href="docelement.html#blockquote">BLOCKQUOTE</a>
+is that while a float keeps everything together and defers output if
+necessary, quotes and blockquotes are output immediately, and may
+start on one page and finish on the next.
+</p>
+
+<p>
+Floats always deposit a break before they begin, which means the
+line beforehand will not be
+<a href="definitions.html#filled">filled</a>.
+Floats, therefore, cannot be inserted in the middle of a paragraph
+without studying the output file and determining where to break or
+<a href="typesetting.html#spread">spread</a>
+the line before the float.
+</p>
+
+<p id="float-spacing">
+Floats begin on the baseline immediately below the running text
+preceding them. No additional whitespace surrounds them, above or
+below. Running text below a float is, however,
+<a href="docprocessing.html#shim">shimmed</a>,
+unless shimming has been disabled with <kbd>.NO_SHIM</kbd>. This
+usually results in a small amount of extra whitespace after the
+float. The <kbd>ADJUST</kbd> argument to FLOAT allows you to
+fine-tune the vertical centering.
+</p>
+
+<p>
+If you&#8217;d like more space around a float, you must add it
+manually, for example with
+<a href="typesetting.html#ald">ALD</a>
+or
+<a href="typesetting.html#space">SPACE</a>.
+</p>
+
+<!-- -FLOAT- -->
+
+<div class="macro-id-overline">
+<h3 id="float" class= "macro-id">FLOAT</h3>
+</div>
+
+<div class="box-macro-args">
+Macro: <b>FLOAT</b> <kbd class="macro-args">[ FORCE ] [ ADJUST +|-&lt;amount&gt; ] | &lt;anything&gt;</kbd>
+</div>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+FLOAT is intended for use with the document processing macros only.
+</p>
+</div>
+
+<p style="margin-top: -.5em">
+To begin a float, simply invoke <kbd>.FLOAT</kbd> and follow it with
+whatever you want the float to contain. When you&#8217;re done,
+invoke <kbd>.FLOAT&nbsp;OFF</kbd> (or <kbd>QUIT, END, X</kbd>, etc).
+</p>
+
+<p>
+The optional <kbd>FORCE</kbd> argument instructs mom to output
+the float exactly where it occurs in the input file. With
+<kbd>FORCE</kbd>, mom immediately breaks to a new page to output
+the float if it does not fit on the current page. While this is
+somewhat contrary to the notion of floats (ie that running text
+should continue to fill the page), there are circumstances where it
+may be desirable.
+</p>
+
+<p>
+The <kbd>ADJUST</kbd> argument tells mom to raise
+(<kbd>+</kbd>) or lower (<kbd>-</kbd>) the float <i>within the space
+allotted to it</i> by the specified amount.
+<kbd>&lt;amount&gt;</kbd> must have a
+<a href="definitions.html#unitofmeasure">unit of measure</a>
+appended. <kbd>ADJUST</kbd> gives you precise control over
+the vertical centering of floats, allowing you to compensate for
+unequal spacing that may result of from the automatic shimming of
+floats (or the absence thereof). See
+<a href="docprocessing.html#shim">SHIM</a>
+for a discussion of automatic shimming.
+</p>
+
+<p>
+<kbd>ADJUST</kbd> is ignored whenever a float is deferred to
+the following page.
+</p>
+
+<div class="box-tip">
+<p class="tip-top">
+<span class="note">Note:</span>
+Floats use
+<a href="definitions.html#filled">no-fill mode</a>,
+with each input line beginning at the left margin. If this is not
+what you want, you must specify the preferred horizontal alignment
+<i>within the float</i> (eg
+<a href="typesetting.html#lrc">CENTER</a>
+or
+<a href="typesetting.html#lrc">RIGHT</a>).
+</p>
+
+<p class="tip-bottom">
+Furthermore, if you want text
+<a href="definitions.html#filled">filled</a>,
+you must specify
+<a href="typesetting.html#quad"><kbd>.QUAD&nbsp;L|R|C</kbd></a>
+or
+<a href="typesetting.html#justify"><kbd>.JUSTIFY</kbd></a>&mdash;again,
+within the float.
+</p>
+</div>
+
+<h4 id="tbl-with-float" class="docs">Using tbl with FLOAT</h4>
+
+<p>
+Unboxed tables created with <strong>tbl</strong> (see <kbd>man
+tbl(1)</kbd>) may be put in a float with the usual start and end
+macros, <kbd>.TS</kbd> and <kbd>.TE</kbd>.
+</p>
+
+<p>
+Boxed tables don&#8217;t play nice with FLOAT, and require that you
+pass the argument <kbd>BOXED</kbd> to <kbd>.TS</kbd>, otherwise mom
+cannot guarantee the vertical spacing of the float will be
+<a href="#float-spacing">as described</a>.
+<br/>
+<span class="pre-in-pp">
+ .FLOAT
+ .TS BOXED
+ &lt;tbl commands&gt;
+ .TE
+ .FLOAT OFF
+</span>
+You may put text (or anything else you like) above or below the
+table; mom will ensure the float is spaced correctly.
</p>
<div class="rule-long"><hr/></div>
diff --git a/contrib/mom/momdoc/inlines.html b/contrib/mom/momdoc/inlines.html
index 1349abc..eb128f2 100644
--- a/contrib/mom/momdoc/inlines.html
+++ b/contrib/mom/momdoc/inlines.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
@@ -210,7 +212,7 @@ and/or
HEADERS or FOOTERS, or in the strings passed to
<a href="headfootpage.html#headers-and-footers">HEADERS_AND_FOOTERS</a>,
you must enter the inlines beginning with <kbd>\E*</kbd>
-rather than just <kbd>\*</kbd>, e.g. <kbd>\E*[BD]</kbd>.
+rather than just <kbd>\*</kbd>, eg <kbd>\E*[BD]</kbd>.
</p>
</div>
@@ -376,7 +378,7 @@ For backward compatibility, the forms
\*[BU1]...\*[BU36]&nbsp;Move backward 1...36 <a href="definitions.html#kernunit">kern units</a>
\*[FU1]...\*[FU36]&nbsp;Move forward 1...36 <a href="definitions.html#kernunit">kern units</a>
</span>
-also exist (i.e. with no space before the number of kern units desired,
+also exist (ie with no space before the number of kern units desired,
up to a limit of 36).
</p>
@@ -395,9 +397,9 @@ and/or
HEADERS or FOOTERS, or in the strings passed to
<a href="headfootpage.html#headers-and-footers">HEADERS_AND_FOOTERS</a>,
you <i>must</i> use the forms <kbd>\E*[BU&lt;n&gt;]</kbd>
-and <kbd>\E*[FU&lt;n&gt;]</kbd> (i.e. with no space), and enter the
+and <kbd>\E*[FU&lt;n&gt;]</kbd> (ie with no space), and enter the
inline beginning with <kbd>\E*</kbd> rather than just <kbd>\*</kbd>,
-e.g. <kbd>\E*[BU4]</kbd>.
+eg <kbd>\E*[BU4]</kbd>.
</p>
<p class="tip-bottom">
@@ -455,7 +457,7 @@ For backward compatibility, the forms
\*[BP.25]...\*[BP12.75]&nbsp;Move backward .25...12.75 points
\*[FP.25]...\*[FP12.75]&nbsp;Move forward .25...12.75 points
</span>
-also exist (i.e. with no space before the digit and points being
+also exist (ie with no space before the digit and points being
the unit of measure, hence no unit of measure required). Both
accept quarter points, so it&#8217;s possible to do, for example,
<kbd>\*[FP.5]</kbd> or <kbd>\*[BP1.25]</kbd> up to a limit
@@ -478,9 +480,9 @@ and/or
HEADERS or FOOTERS, or in the strings passed to
<a href="headfootpage.html#headers-and-footers">HEADERS_AND_FOOTERS</a>,
you <i>must</i> use the forms <kbd>\E*[BP&lt;n&gt;]</kbd>
-and <kbd>\E*[FP&lt;n&gt;]</kbd> (i.e. with no space), and enter the
+and <kbd>\E*[FP&lt;n&gt;]</kbd> (ie with no space), and enter the
inline beginning with <kbd>\E*</kbd> rather than just <kbd>\*</kbd>,
-e.g. <kbd>\E*[BP.755]</kbd>.
+eg <kbd>\E*[BP.755]</kbd>.
</p>
</div>
@@ -546,9 +548,9 @@ and/or
HEADERS or FOOTERS, or in the strings passed to
<a href="headfootpage.html#headers-and-footers">HEADERS_AND_FOOTERS</a>,
you <i>must</i> use the forms <kbd>\E*[ALD&lt;n&gt;]</kbd>
-and <kbd>\E*[RLD&lt;n&gt;]</kbd> (i.e. with no space), and enter the
+and <kbd>\E*[RLD&lt;n&gt;]</kbd> (ie with no space), and enter the
inline beginning with <kbd>\E*</kbd> rather than just <kbd>\*</kbd>,
-e.g. <kbd>\E*[ALD.5]</kbd>.
+eg <kbd>\E*[ALD.5]</kbd>.
</p>
</div>
@@ -557,19 +559,11 @@ e.g. <kbd>\E*[ALD.5]</kbd>.
<h3 id="inline-b-mom" class="docs">Terminate a line without advancing on the page</h3>
<p>
Sometimes, you want mom to break a line but not advance on the page.
-See
-<a href="typesetting.html#el-example">here</a>
-for an example of when you might want to do this.
-</p>
-
-<p>
-In versions of mom prior to 1.2-f, this was accomplished through the
-use of the
+This can be accomplished with the macro,
<a href="typesetting.html#el">EL</a>
-macro. As of 1.2-f, you can, if you prefer, accomplish the same
-thing by using the inline escape, <kbd>\*[B]</kbd>. Simply attach
-the escape to the end of any input line. Using the example given in
-the document entry for EL, you'd use <kbd>\*[B]</kbd> like this:
+or with the escape, <kbd>\*[B]</kbd>. Simply attach <kbd>\*[B]</kbd>
+to the end of any input line. Using the example given in the
+document entry for EL, you'd use <kbd>\*[B]</kbd> like this:
<br/>
<span class="pre-in-pp">
.LEFT
@@ -587,25 +581,18 @@ the document entry for EL, you'd use <kbd>\*[B]</kbd> like this:
<h3 id="tb-plus-mom" class="docs">Call the next sequential tab without advancing on the page</h3>
<p>
-Sometimes, you want mom to move to the next tab in sequence (e.g.
+Sometimes, you want mom to move to the next tab in sequence (eg
from TAB 1 to TAB 2, or TAB 8 to TAB 9) without mom advancing on the
page. (See the NOTE
<a href="typesetting.html#note-tn">here</a>
if you&#8217;re not clear how mom manages tabs and linebreaks.)
-</p>
-
-<p>
-In versions of mom prior to 1.2-f, this was accomplished through the
-use of
-<a href="typesetting.html#tn">TN</a>.
-As of 1.2-f, you can, if you prefer, accomplish the same thing by
-using the inline escape, <kbd>\*[TB+]</kbd>. Simply attach the
-escape to the end of any input line in a tab, like this:
+To do so, simply attach the escape <kbd>\*[TB+]</kbd> to the end of
+the input line in previous tab, like this:
<br/>
<span class="pre-in-pp">
.TAB 1
- Some text\*[TB+] \" This line is in tab 1
- Some more text \" This line is in tab 2, on the same baseline as tab 1
+ Some text\*[TB+] \" In tab 1
+ Some more text \" In tab 2, same baseline.
</span>
<kbd>\*[TB+]</kbd> works reliably regardless of the current
@@ -908,7 +895,7 @@ used <kbd>\v</kbd> with the minus sign) or too low (if you used
<p>
In the context of mom, the string width inline
<kbd>\w'&lt;string&gt;'</kbd> primarily serves to let you establish the
-horizontal measure of something (e.g. indents) based on the length
+horizontal measure of something (eg indents) based on the length
of a bit of text. For example, if you want a left indent the length
of the word &#8220;Examples:&#8221; plus a space, you can set it with
the <kbd>\w</kbd> inline escape:
@@ -1016,7 +1003,7 @@ meaning of some of these characters, consult the
</p>
<p>
-For a complete list of special characters and glyphs (i.e. just
+For a complete list of special characters and glyphs (ie just
about anything you'd ever want to appear on the printed page,
including mathematical symbols, accented characters, unusual
ligatures and letters unique to various European languages), consult
@@ -1033,26 +1020,28 @@ ligatures and letters unique to various European languages), consult
Zero-width character \&amp;
Discretionary hyphen \%
Backslash \\ or \e
- Plus&#47;minus (arithmetic) \(+-
- Subtract (arithmetic) \(mi
- Multiply (arithmetic) \(mu
- Divide (arithmetic) \(di
- Em-dash \(em
- En-dash \(en
- Left double-quote \(lq
- Right double-quote \(rq
- Bullet \(bu
- Ballot box \(sq
- One-quarter \(14
- One-half \(12
- Three-quarters \(34
- Degree sign \(de
- Dagger \(dg
- Foot mark \(fm
- Cent sign \(ct
- Registered trademark \(rg
- Copyright \(co
- Section symbol \(se
+ Plus&#47;minus (arithmetic) \[+-]
+ Subtract (arithmetic) \[mi]
+ Multiply (arithmetic) \[mu]
+ Divide (arithmetic) \[di]
+ Em-dash \[em]
+ En-dash \[en]
+ Left double-quote \[lq]
+ Right double-quote \[rq]
+ Open (left) single-quote \[oq]
+ Close (right) single-quote \[oq]
+ Bullet \[bu]
+ Ballot box \[sq]
+ One-quarter \[14]
+ One-half \[12]
+ Three-quarters \[34]
+ Degree sign \[de]
+ Dagger \[dg]
+ Foot mark \[fm]
+ Cent sign \[ct]
+ Registered trademark \[rg]
+ Copyright \[co]
+ Section symbol \[se]
</span>
<br/>
diff --git a/contrib/mom/momdoc/intro.html b/contrib/mom/momdoc/intro.html
index 34dd571..205b24a 100644
--- a/contrib/mom/momdoc/intro.html
+++ b/contrib/mom/momdoc/intro.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009,
+2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -57,61 +59,42 @@ FDL in the main directory of the groff source package.
<p>
Mom (&#8220;my own macros&#8221;, &#8220;my other macros&#8221;,
-&#8220;maximum overdrive macros&#8221;...) is a macro set for
-groff, designed to format documents for PostScript output.
-She&#8217;s aimed at three kinds of users:
+&#8220;maximum overdrive macros&#8221;...) is a macro set for groff,
+designed to format documents in Portable Document Format (.pdf) and
+PostScript (.ps). She&#8217;s aimed at three kinds of users:
</p>
<ol style="margin-top: -.5em; margin-bottom: -.5em;">
<li>Typesetters who suspect groff might be &#8220;the right
- tool for the job&#8221; but who are
- frustrated/intimidated by groff&#8217;s terse, geeky,
+ tool for the job&#8221; but who are frustrated,
+ intimidated, or puzzled by groff&#8217;s terse,
not-always-typographically-intuitive
<a href="definitions.html#primitives">primitives</a>;
</li>
- <li>Non-scientific writers (novelists, short story writers,
- journalists, students) who just want their work to
- look good;
+ <li>Non-technical writers who need to format their work easily,
+ with a minimum of clutter;
</li>
- <li>Newbies to computer typesetting, document processing or
- groff who need a well-documented macro set to help them get
- started.
+ <li>Newcomers to groff, typesetting, or document processing
+ who need a well-documented macro set to get them started.
</li>
</ol>
<p>
-As might be inferred from the above, mom is two macro packages in
-one: a set of typesetting macros, and a set of document formatting
-macros. The typesetting macros govern the physical aspects
-of page layout and provide sane, comprehensible control over
-typographic refinements. The document formatting macros let you
-focus on a document&#8217;s content and logical structure without
-worrying about typesetting or page layout at all.
-</p>
-
-<p>
-Because mom provides both typesetting and document formatting
-macros, it&#8217;s safe to say she blurs the distinction
-between document processing and document design. While
-her basic document style come with pretty spiffy defaults
-(okay&mdash;change &#8220;spiffy&#8221; to &#8220;typographically
-professional&#8221;), you can easily control how all the various
-document elements look: titles, page headers and footers, page
-numbering, heads, subheads, footnotes and so on can be made to
-come out exactly the way you want. And should you need precise
-typographic control over elements in a document that fall outside
-the range of mom&#8217;s document element tags, you don&#8217;t
-have to read up on groff
-<a href="definitions.html#primitives">primitives</a>
-in order to accomplish what you want; the typesetting macros take
-care of that.
+Mom is actually two macro packages in one: a very complete set
+of typesetting macros, and an equally thorough set of document
+formatting macros. The typesetting macros afford fine-grained
+control over all visible aspects of page layout and design (margins,
+fonts, sizes, kerning, etc), while the document formatting macros
+focus on the logical structure of a document (titles, headings,
+paragraphs, lists, etc) and call on groff to render logical
+structure into pleasing type.
</p>
<h2 id="intro-typesetting" class="docs">Typesetting with mom</h2>
<p>
Mom&#8217;s typesetting macros control the basic parameters
-of type: margins, line length, type family, font, point size,
+of type: margins, line lengths, type family, font, point size,
linespacing, and so on. In addition, they allow you to move
around on the page horizontally and vertically, and to set up
tabs, indents, and columns. Finally, they let you adjust such
@@ -120,63 +103,41 @@ spacing, hyphenation, and kerning.
</p>
<p>
-In terms of typographic control, these macros resemble
-the commands used on dedicated typesetting computers like
-Compugraphics and Linotronics. Most of them simply give access
-to groff&#8217;s typesetting primitives in a way that&#8217;s
-consistent and easy to use. A few of them (tabs and indents,
-for example) handle fundamental typesetting requirements in ways
-radically different from groff primitives.
+The typesetting macros also provide the means to create horizontal
+and vertical rules, rectangles (boxes, frames), and ellipses
+(circles).
</p>
<p>
-With mom&#8217;s typesetting macros, you can, if you wish, create
-individual output pages that you design from the ground up.
-Provided you have not signalled to mom that you want document
-processing (via the
+In terms of typographic control, the typesetting macros provide
+access to groff&#8217;s primitives in a way that&#8217;s consistent,
+sensible, and easy to use. With them, you can create individual
+pages designed from the ground up. Provided you have not signalled
+to mom that you want document processing (via the
<kbd><a href="docprocessing.html#start">START</a></kbd>
-macro; see below), every macro is a literal command that remains
-in effect until you modify it or turn it off. This means that if
-you want to create flyers, surveys, tabulated forms, curricula
-vitae and so on, you may do so in the good old-fashioned way: one
-step at a time with complete control over every element on the
-page.
+macro; see below), every typesetting macro is a literal command
+that remains in effect until you modify it or turn it off. This
+means that if you want to create flyers, surveys, tabulated forms,
+curricula vitae and so on, you may do so in the good old-fashioned
+way: one step at a time with complete control over every element on
+the page.
</p>
<p>
-Years of reading various mailing lists dealing with computer
-typesetting (groff, TeX, and friends) have convinced me that no
-program can ever replace the human eye and human input when it
-comes to high quality typesetting. As of this writing, a thread
-on the subject of &#8220;micro typography&#8221; in groff has been
-going on for nearly a month. The reason for the lengthy thread
-is obvious; words and punctuation on the printed page are too
+Years of experience have convinced me that no program can ever
+replace the human eye and human input when it comes to high quality
+typesetting. Words and punctuation on the printed page are too
variable, too fluid, to be rendered flawlessly by any algorithm,
-no matter how clever. (For whatever it&#8217;s worth, a similar
-problem exists with engraving musical scores by computer.)
-</p>
-
-<p>
-Mom does not try to solve the problems posed by things like
-hanging punctuation, left-margin adjustments for upper case
-letters like T and W, and so on. She merely tries to provide
-tools that allow knowledgeable typesetters to come up with
-solutions to these problems in ways that are easier and more
-intuitive than manipulating groff at the
-<a href="definitions.html#primitives">primitive</a>
-level. As a professional typesetter of more than two decades, and
-a writer, I have encountered few situations that cannot be handled
-by mom&#8217;s typesetting macros.
+no matter how clever.
</p>
<p>
-Author&#8217;s note: One area where groff itself needs serious
-rethinking is in the matter of an algorithm that takes into
-account both word and letter spacing when
-<a href="definitions.html#just">justifying</a>
-lines. At present, only word spacing is adjusted, requiring what
-I consider an unnecessary amount of user intervention whenever
-letter spacing is required.
+Mom, therefore, does not try to guess solutions for issues like
+hanging punctuation, or left-margin adjustments for troublesome
+letters like T, V and W. Rather, she provides tools that allow
+knowledgeable typesetters to handle these typographic challenges in
+ways that are easier and more intuitive than manipulating groff at
+the primitive level.
</p>
<h2 id="intro-docprocessing" class="docs">Document processing with mom</h2>
@@ -186,24 +147,22 @@ Mom&#8217;s document processing macros let you format documents
without having to worry about the typographic details. In this
respect, mom is similar to other groff macro packages, as well as
to html and LaTeX. Where mom differs is in the degree of control
-you have over the look and placement of the various elements of
-a document. For example, if you don&#8217;t want your heads
-underlined, or you want them bigger/smaller, or you&#8217;d prefer
-them to be in a different font, or you&#8217;d rather they were
-flush left instead of centred, you can make the changes easily
-and have them apply to the whole document. Temporary and one-off
-changes are easy, too.
+you have over the look and placement of the various elements of a
+document. For example, if you&#8217;d like your headings underlined,
+or in caps, or centred rather than flush left, you can make the
+changes easily and have them apply to the whole document. Temporary
+and one-off changes are easy, too.
</p>
<p>
-Mom has some nifty features other macro sets don&#8217;t provide.
-For example, you can switch between draft-style and final-copy
-output. If you regularly make submissions to publishers and
-editors who insist on "typewritten, double-spaced," there&#8217;s
-a special macro&mdash;
+Mom has some features other macro sets don&#8217;t provide. For
+example, you can switch between draft-style and final-copy output.
+If you regularly make submissions to publishers and editors who
+insist on "typewritten, double-spaced," there&#8217;s a special
+macro&mdash;
<a href="docprocessing.html#printstyle"><kbd>PRINTSTYLE TYPEWRITE</kbd></a>&mdash;
-that changes typeset documents into ones that would make your
-high-school typing teacher proud. Footnotes, endnotes, tables of
+that changes typeset documents into ones that would make an
+old-school typing teacher proud. Footnotes, endnotes, tables of
contents, multiple columns, nested lists, recto/verso printing and
user designable headers and footers are also part of the fun.
</p>
@@ -227,9 +186,9 @@ Unfortunately, in computerland, &#8220;easy,&#8221;
&#8220;comprehensible,&#8221; and &#8220;readable&#8221; often
mean &#8220;you&#8217;re stuck with what you get.&#8221; No
document formatting system can give you exactly what you want all
-the time, every time. Documents, it seems, always need to be
-tweaked, either to satisfy a typographic whim or to clarify some
-aspect of their content.
+the time, every time. Documents always need to be tweaked, either
+to satisfy a typographic whim or to clarify some aspect of their
+content.
</p>
<p>
@@ -239,21 +198,21 @@ me and their offspring) to resort to groff
<a href="definitions.html#primitives">primitives</a>
and
<a href="definitions.html#inlines">inline escapes</a>
-for their special typesetting needs. Not to put too fine a
-point on it, groff primitives tend toward the abstruse, and most
-inline escapes are about as readable in-line as an encrypted
-password. This does not make for happy-camper writers, who either
-find themselves stuck with a document formatting style they
-don&#8217;t really like, or are forced to learn groff from the
-ground up&mdash;a daunting task, to say the least.
+for their special typesetting needs. Not to put too fine a point
+on it, groff primitives tend toward the abstruse, and most inline
+escapes are about as readable as an encrypted password. This does
+not make for happy-camper writers, who either find themselves stuck
+with a formatting style they don&#8217;t like, or are forced to
+learn groff from the ground up&mdash;a daunting task, to say the
+least.
</p>
<p>
-Mom aims to make creating documents a simple matter, but with
-no corresponding loss of user control. The document processing
-macros provide an excellent set of defaults, but if something is
-not to your liking, you can change it. And in combination with
-the typesetting macros, you have all the tools you need to massage
+Mom aims to make creating documents a simple matter, but with no
+corresponding loss of user control. The document processing macros
+provide an initial set of reasonable defaults, but anything that
+is not to your liking can be changed. In combination with the
+typesetting macros, you have all the tools you need to massage
passages and tweak pages until they look utterly professional.
</p>
@@ -266,27 +225,28 @@ rectify this by providing users with a consistent, readable
&#8220;coding&#8221; style. Most of the macros (especially in
the document processing set) have humanly-readable names. Not
only does this speed up learning the macros, it makes the sense
-of what&#8217;s going on in a document, typographically and
-structurally, easier to decipher.
+of what&#8217;s going on in a document easier to decipher,
+typographically and structurally.
</p>
<p>
Mom does not try to be all things to all people. In contrast to
the normal groff philosophy, she does not try to produce output
that looks good no matter where it&#8217;s displayed. She&#8217;s
-designed for printed output, although with
-<a href="docprocessing.html#printstyle"><kbd>PRINTSTYLE TYPEWRITE</kbd></a>
-she produces acceptable terminal copy. She makes no attempt to be
+designed for primarily for PDF or PostScript output, although
+with <a href="docprocessing.html#printstyle"><kbd>PRINTSTYLE
+TYPEWRITE</kbd></a>
+she produces acceptable terminal copy. No attempt is made to be
compatible with older versions of troff.
</p>
<p>
-One special feature in mom&#8217;s design is the attention she
-pays to aligning the bottom margins of every page. Nothing
-screams shoddy in typeset documents louder than bottom margins
-that wander, or, in typesetter jargon, &#8220;hang.&#8221; There
-are, of course, situations where whitespace at the bottom of a
-page may be desirable (for example, you wouldn&#8217;t want a head
+One special feature in mom&#8217;s design is the attention she pays
+to aligning the bottom margins of every page. Nothing screams
+shoddy in typeset documents louder than bottom margins that
+wander, or, in typesetter jargon, &#8220;hang.&#8221; There are,
+of course, situations where whitespace at the bottom of a page
+may be unavoidable (for example, you wouldn&#8217;t want a head
to appear at the bottom of the page without some text underneath
it), but in all cases where hanging bottom margins can be avoided,
mom does avoid them, by clever adjustments to leading (&#8220;line
@@ -298,25 +258,24 @@ page.
<p>
Writing documentation is tough, no doubt about it. One is never
-quite sure of the user&#8217;s level of expertise. Is s/he new
-to the application, new to its underlying protocols and programs,
-new to the operating system, new to computers? At some point, one
-has to decide whom the documentation is for. Making the wrong
-decision can mean the difference between a program that gets used
-and a program that gets tossed.
+quite sure of the user&#8217;s level of expertise. Is s/he new to
+the application, new to its underlying protocols and programs, new
+to the operating system? At some point, one has to decide for whom
+the documentation is intended. Making the wrong choice can mean the
+difference between a program that gets used and a program that gets
+tossed.
</p>
<p>
Mom&#8217;s documentation assumes users know their way around
-their own operating system (basic file management, how to invoke
-commands, how to use a text editor, etc). I use GNU/Linux,
+their own operating system (basic file management, how to use
+the command line, how to use a text editor, etc). I run GNU/Linux,
and while the documentation may exhibit a GNU/Linux bias, mom
-and groff can, in fact, be used on a variety of other popular
-operating systems, including the one from Redmond, Virginia, USA.
+and groff can, in fact, be run on other platforms.
</p>
<p>
-The documentation further assumes they at least know what groff
+The documentation further assumes users at least know what groff
is, even if they don&#8217;t know much about it. Lastly,
it assumes that everyone&mdash;groff newbies and experts
alike&mdash;learns faster from a few well-placed examples than
@@ -329,7 +288,7 @@ scratching, I offer an explanation. And when explanations
aren&#8217;t enough, I offer examples.
</p>
-<h2 id="canonical" class="docs">Canonical reference materials</h2>
+<h3 id="canonical" class="docs">Canonical reference materials</h3>
<p>
The canonical reference materials for groff are
@@ -337,13 +296,12 @@ The canonical reference materials for groff are
is available
<a href="http://www.kohala.com/start/troff/">here</a>)
and the <strong>troff</strong> and <strong>groff_diff</strong>
-manpages. Another excellent source of information (maybe the best)
-is the groff info pages, available by typing
-<kbd>info groff</kbd>
-at the command line (assuming you have the TeXinfo standalone
-browser installed on your system, which is standard for most
-GNU/Linux distributions). And for inputting special characters,
-see <kbd>man groff_char</kbd>.
+manpages. The most complete and up-to-date source of information is
+the groff info pages, available by typing <kbd>info groff</kbd> at
+the command line (assuming you have the TeXinfo standalone browser
+installed on your system, which is standard for most GNU/Linux
+distributions). And for inputting special characters, see <kbd>man
+groff_char</kbd>.
</p>
<p style="margin-top: 24px;">
@@ -355,6 +313,21 @@ I&#8217;m more interested in getting mom users up and running.
<i>Mea culpa.</i>
</p>
+<p>
+Groff has ancillary programmes (pre-processors) for generating
+tables (<strong>tbl</strong>), diagrams (<strong>pic</strong>), and
+equations (<strong>eqn</strong>), which may be used in conjuction
+with mom. The manuals describing their usage are found at:
+<br/>
+<span style="display:block; margin-top: .5em">
+<kbd>&nbsp;&nbsp;tbl</kbd>&nbsp;<a href="http://www.kohala.com/start/troff/v7man/tbl/tbl.ps">http://www.kohala.com/start/troff/v7man/tbl/tbl.ps</a>
+<br/>
+<kbd>&nbsp;&nbsp;pic</kbd>&nbsp;<a href="http://www.kohala.com/start/troff/gpic.raymond.ps">http://www.kohala.com/start/troff/gpic.raymond.ps</a>
+<br/>
+<kbd>&nbsp;&nbsp;eqn</kbd>&nbsp;<a href="http://www.kohala.com/start/troff/v7man/eqn/eqn2e.ps">http://www.kohala.com/start/troff/v7man/eqn/eqn2e.ps</a>
+</span>
+</p>
+
<div class="box-tip">
<p class="tip-top" style="padding-bottom: 9px;">
<b>Note:</b> Mom&#8217;s macro file (om.tmac) is heavily
@@ -366,10 +339,10 @@ addition to what&#8217;s contained in this documentation.
<div class="box-tip">
<p class="tip-top" style="padding-bottom: 9px; text-indent: 0px;">
-<strong>Addendum:</strong> As of version 1.4-a, the main macro
-file, om.tmac, is now stripped of comments when groff is built
-from sources. om.tmac in the sources themselves still contains
-the comments, as do the tarballs posted on mom&#8217;s homepage.
+<strong>Addendum:</strong> The main macro file, om.tmac, is stripped
+of comments when groff is built from sources. om.tmac in the sources
+themselves still contains the comments, as do the tarballs posted on
+mom&#8217;s homepage.
</p>
</div>
@@ -399,16 +372,16 @@ has ever read a manpage. Briefly:
of the argument, not the argument itself.
</li>
<li>If an argument begins with or is surrounded by double-quotes, the
- double quotes MUST be included in the argument.
+ double quotes must be included in the argument.
</li>
<li>If the user has a choice between several arguments, each of the
choices is separated by the pipe character
(<kbd>|</kbd>), which means &#8220;or.&#8221;
</li>
<li>Arguments that are optional are surrounded by square brackets.</li>
- <li><kbd>&lt;off&gt;</kbd> in an argument list means that any
- argument other than those in the argument list turns the
- macro off.
+ <li><kbd>&lt;off&gt;</kbd> or <kbd>&lt;anything&gt;</kbd> in an argument
+ list means that any argument other than those in the argument
+ list turns the macro off.
</li>
</ol>
@@ -417,11 +390,10 @@ has ever read a manpage. Briefly:
<p>
Some macros don&#8217;t require an argument. They simply start
something. When you need to turn them off, the same macro with
-<em>any</em> argument will do the trick. That&#8217;s right:
-<em>any</em> argument (in caps, lowercase or a mixture
-thereof). This permits choosing whatever works for you:
-<kbd>OFF, end, Quit, Q, X</kbd>... Hell, it
-could even be <kbd>I_love_mom</kbd>.
+any argument will do the trick. That&#8217;s right: <em>any</em>
+argument (in caps, lowercase or a mixture thereof). This permits
+choosing whatever works for you: <kbd>OFF, end, Quit, Q, X</kbd>,
+and so on.
</p>
<p>
diff --git a/contrib/mom/momdoc/letters.html b/contrib/mom/momdoc/letters.html
index 95a2e70..6a5b994 100644
--- a/contrib/mom/momdoc/letters.html
+++ b/contrib/mom/momdoc/letters.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -39,6 +41,17 @@ FDL in the main directory of the groff source package.
<h1 class="docs">Writing letters</h1>
+<div style="width: 33%; margin: auto;">
+<ul class="no-enumerator">
+ <li><a href="#letters-intro">Introduction</a>
+ <li><a href="#letters-tutorial">Tutorial</a></li>
+ <li><a href="#letters-defaults">Mom&#8217;s default letter style</a>
+ <li><a href="#index-letters-macros">The letter macros</a>
+</ul>
+</div>
+
+<div class="rule-medium"><hr/></div>
+
<h2 id="letters-intro" class="docs">Introduction</h2>
<p>
@@ -60,7 +73,7 @@ and professional-looking.
</p>
<div class="examples-container" style="margin-top: 1.5em; margin-bottom: 1.5em;">
-<h3 id="tutorial" class="docs">Tutorial &ndash; writing letters</h3>
+<h3 id="letters-tutorial" class="docs">Tutorial &ndash; writing letters</h3>
<p>
Mom letters begin, like all mom-processed documents, with
@@ -91,7 +104,7 @@ After the START macro, you enter headers pertinent to your letter:
the date, the addressee (in business correspondence, typically both
name and address), the addresser (that&#8217;s you; in business
correspondence, typically both name and address), and a greeting
-(in full, e.g. &#8220;Dear Mr. Smith,&#8221; or &#8220;Dear
+(in full, eg &#8220;Dear Mr. Smith,&#8221; or &#8220;Dear
Mr. Smith:&#8221;).
</p>
@@ -113,13 +126,6 @@ to find out how mom formats the headers.
</p>
<p>
-(In pre 1.1.7-a releases of mom, the order of entering headers was
-fixed at the above. This has been changed, although if you do
-follow the above order, mom will continue to behave exactly as she
-did in pre 1.1.7-a.)
-</p>
-
-<p>
Once you&#8217;ve filled in what you need to get a letter started,
simply type the letter, introducing each and every paragraph,
including the first, with the
@@ -210,7 +216,7 @@ for these macros.
</p>
</div>
-<h2 id="letters-defaults" class="docs">Mom&#8217;s default letter style</h2>
+<h2 id="letters-defaults" class="docs">Default letter style</h2>
<p>
In letters, if the order of header macros is
@@ -292,7 +298,7 @@ or
Family Times Roman Courier
Font roman roman
Point size 12 12
- Line space 13.5 12 (i.e. singlespaced)
+ Line space 13.5 12 (ie singlespaced)
Paragraph indent 3 ems 3 picas
Spaced paragraphs yes no
Footers* yes yes
@@ -475,7 +481,7 @@ Macro: <b>CLOSING</b>
<p>
Invoke <kbd>.CLOSING</kbd> on a line by itself after the body of
-the letter, with the closing you&#8217;d like (e.g. &#8220;Yours
+the letter, with the closing you&#8217;d like (eg &#8220;Yours
truly,&#8221;) underneath, like this:
<br/>
<span class="pre-in-pp">
@@ -504,7 +510,7 @@ and must have a
<a href="definitions.html#unitofmeasure">unit of measure</a>
appended to it, unless you want an indent of 0 (zero). Mom&#8217;s
default is one half the width of the letter&#8217;s line length
-(i.e. halfway across the page). If you wanted, instead, an indent of
+(ie halfway across the page). If you wanted, instead, an indent of
6
<a href="definitions.html#picaspoints">picas</a>,
you&#8217;d do it like this:
@@ -536,7 +542,7 @@ wanted to change that to, say, 2 line spaces, you&#8217;d do:
<!-- -NO_SUITE- -->
-<div class="box-macro-args" style="margin-top: 2em;">
+<div id="no-suite" class="box-macro-args" style="margin-top: 2em;">
Macro: <b>NO_SUITE</b>
</div>
diff --git a/contrib/mom/momdoc/macrolist.html b/contrib/mom/momdoc/macrolist.html
index c320d15..7b458e5 100644
--- a/contrib/mom/momdoc/macrolist.html
+++ b/contrib/mom/momdoc/macrolist.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -46,7 +48,6 @@ major user-space macros. The links point to references found
elsewhere in the documentation.
</p>
-
<div class="macro-list-container" style="padding-left: 9px; padding-right: 9px; padding-bottom: 1px;">
<h2 class="docs" style="text-align: center; padding-top: 15px;">Index to the quick reference guide</h2>
<div style="width: 50%; float: left; margin-right: 9px;">
@@ -69,7 +70,7 @@ elsewhere in the documentation.
<li><a href="#qr-15">Colour</a></li>
<li><a href="#qr-16">Dropcaps</a></li>
<li><a href="#qr-17">Utilities</a></li>
- <li><a href="#qr-18">Graphical Objects</a></li>
+ <li><a href="#qr-18">Graphics, images and floats</a></li>
</ul>
<h3 class="docs" style="margin-top: -.5em;">DOCUMENT PROCESSING MACROS</h3>
<ul style="margin-top: .5em; margin-left: 0; padding-left: 0; list-style-type: none;">
@@ -81,32 +82,30 @@ elsewhere in the documentation.
<li><a href="#qr-24">Initiate document processing</a></li>
</ul>
</div>
-<ul style="margin-top: 1.75em; margin-left: 0; padding-left: 0; list-style-type: none;">
+<ul style="margin-top: 2.7em; margin-left: 0; padding-left: 0; list-style-type: none;">
<li><a href="#qr-25">Epigraphs</a></li>
- <li><a href="#qr-26">Main heads</a></li>
- <li><a href="#qr-27">Subheads</a></li>
- <li><a href="#qr-28">Paragraph heads</a></li>
- <li><a href="#qr-19">Reference macros</a></li>
- <li><a href="#qr-29">Paragraphs</a></li>
- <li><a href="#qr-30">Quotes (line for line quotes)</a> </li>
- <li><a href="#qr-31">Blockquotes (cited passages of text)</a></li>
- <li><a href="#qr-32">Code snippets (inserting bits of programming code)</a></li>
- <li><a href="#qr-33">Author linebreaks (section breaks)</a></li>
- <li><a href="#qr-34">Document termination string</a></li>
- <li><a href="#qr-35">Footnotes</a></li>
- <li><a href="#qr-36">Endnotes</a></li>
- <li><a href="#qr-37">Margin notes</a></li>
- <li><a href="#qr-38">Bibliographic references</a></li>
- <li><a href="#qr-39">Tables of contents</a></li>
- <li><a href="#qr-40">Letter (correspondence) macros</a></li>
- <li><a href="#qr-41">Changing global print style parameters after<br/><span style="margin-left: 1.25em;">START</span></a></li>
- <li><a href="#qr-42">Managing a document&#8217;s first-page header<br/><span style="margin-left: 1.25em;">(the &#8220;docheader&#8221;)</span></a></li>
- <li><a href="#qr-43">Managing page headers and footers</a></li>
- <li><a href="#qr-44">Recto/verso page headers and footers</a></li>
- <li><a href="#qr-45">Pagination</a></li>
- <li><a href="#qr-46">Document and section cover (title) pages</a></li>
- <li><a href="#qr-47">Utilities</a></li>
+ <li><a href="#qr-26">Headings</a></li>
+ <li><a href="#qr-30">Paragraphs</a></li>
+ <li><a href="#qr-31">Quotes (line for line quotes)</a> </li>
+ <li><a href="#qr-32">Blockquotes (cited passages of text)</a></li>
+ <li><a href="#qr-33">Code snippets (inserting bits of programming code)</a></li>
+ <li><a href="#qr-34">Author linebreaks (section breaks)</a></li>
+ <li><a href="#qr-35">Document termination string</a></li>
+ <li><a href="#qr-36">Footnotes</a></li>
+ <li><a href="#qr-37">Endnotes</a></li>
+ <li><a href="#qr-38">Margin notes</a></li>
+ <li><a href="#qr-39">Bibliographic references</a></li>
+ <li><a href="#qr-40">Tables of contents</a></li>
+ <li><a href="#qr-41">Letter (correspondence) macros</a></li>
+ <li><a href="#qr-42">Changing global print style parameters after<br/><span style="margin-left: 1.25em;">START</span></a></li>
+ <li><a href="#qr-43">Managing a document&#8217;s first-page header<br/><span style="margin-left: 1.25em;">(the &#8220;docheader&#8221;)</span></a></li>
+ <li><a href="#qr-44">Managing page headers and footers</a></li>
+ <li><a href="#qr-45">Recto/verso page headers and footers</a></li>
+ <li><a href="#qr-46">Pagination</a></li>
+ <li><a href="#qr-47">Document and section cover (title) pages</a></li>
+ <li><a href="#qr-48">Utilities</a></li>
</ul>
+<br/>
</div>
<h2 class="docs">Quick reference guide</h2>
@@ -258,7 +257,7 @@ elsewhere in the documentation.
<th id="qr-6" class="quick-ref" colspan="2" >+++ Hyphenation</th>
</tr>
<tr>
-<td><a href="typesetting.html#hy">HY</a></td><td>-- automatic hyphenation on or off</td>
+<td><a href="typesetting.html#hy">HY</a></td><td>-- automatic hyphenation on/off</td>
</tr>
<tr>
<td><a href="typesetting.html#hy-set">HY_SET</a></td><td>-- set automatic hyphenation parameters</td>
@@ -282,7 +281,7 @@ elsewhere in the documentation.
<th id="qr-8" class="quick-ref" colspan="2" >+++ Kerning, ligatures, smartquotes</th>
</tr>
<tr>
-<td><a href="typesetting.html#kern">KERN</a></td><td>-- automatic character pair kerning on or off</td>
+<td><a href="typesetting.html#kern">KERN</a></td><td>-- automatic character pair kerning on/off</td>
</tr>
<tr>
<td><a href="inlines.html#inline-kerning-mom">\*[BU n]</a></td><td>-- move characters pairs closer together inline</td>
@@ -291,19 +290,19 @@ elsewhere in the documentation.
<td><a href="inlines.html#inline-kerning-mom">\*[FU n]</a></td><td>-- move character pairs further apart inline</td>
</tr>
<tr>
-<td><a href="typesetting.html#rw">RW</a></td><td>-- uniformly reduce space between characters (tighten)</td>
+<td><a href="typesetting.html#rw">RW</a></td><td>-- uniformly tighten space between characters</td>
</tr>
<tr>
-<td><a href="typesetting.html#ew">EW</a></td><td>-- uniformly increase space between characters (loosen)</td>
+<td><a href="typesetting.html#ew">EW</a></td><td>-- uniformly loosen space between characters</td>
</tr>
<tr>
-<td><a href="typesetting.html#br-at-line-kern">BR_AT_LINE_KERN</a></td><td>-- break previous line every time RW or EW is invoked</td>
+<td><a href="typesetting.html#br-at-line-kern">BR_AT_LINE_KERN</a></td><td>-- break previous line when RW or EW is invoked</td>
</tr>
<tr>
-<td><a href="typesetting.html#ligatures">LIGATURES</a></td><td>-- automatic generation of ligatures on or off</td>
+<td><a href="typesetting.html#ligatures">LIGATURES</a></td><td>-- automatic generation of ligatures on/off</td>
</tr>
<tr>
-<td><a href="goodies.html#smartquotes">SMARTQUOTES</a></td><td>-- smartquoting on or off</td>
+<td><a href="goodies.html#smartquotes">SMARTQUOTES</a></td><td>-- smartquoting on/off</td>
</tr>
</table>
@@ -390,10 +389,13 @@ elsewhere in the documentation.
<td><a href="typesetting.html#tq">TQ</a></td><td>-- quit (exit) tabs</td>
</tr>
<tr>
-<td><a href="typesetting.html#inline-st">\*[STn]...\*[STnX]</a></td><td>-- string tabs (mark tab positions inline)</td>
+<td><a href="typesetting.html#inline-st">\*[ST&lt;n&gt;]...</a></td><td>-- string tabs (mark tab positions inline)</td>
+</tr>
+<tr>
+<td><a href="typesetting.html#inline-st">\*[ST&lt;n&gt;X]</a>
</tr>
<tr>
-<td><a href="typesetting.html#tn">TN</a></td><td>-- move to tab &lt;n+1&gt; without advancing on the page</td>
+<td><a href="typesetting.html#tn">TN</a></td><td>-- move to tab&lt;n+1&gt; without advancing on the page</td>
</tr>
<tr>
<td><a href="typesetting.html#st">ST</a></td><td>-- set quad/fill for string tabs</td>
@@ -408,13 +410,16 @@ elsewhere in the documentation.
<td><a href="goodies.html#underscore">UNDERSCORE</a></td><td>-- underscore</td>
</tr>
<tr>
-<td><a href="goodies.html#UNDERSCORE2">UNDERSCORE2</a></td><td>-- double underscore</td>
+<td><a href="goodies.html#underscore2">UNDERSCORE2</a></td><td>-- double underscore</td>
</tr>
<tr>
<td><a href="goodies.html#underline">UNDERLINE</a></td><td>-- underline (fixed width fonts only)</td>
</tr>
<tr>
-<td><a href="goodies.html#ul">\*[UL]...\*[ULX]</a></td><td>-- invoke underling inline (fixed width fonts only)</td>
+<td><a href="goodies.html#ul">\*[UL]...</a></td><td>-- invoke underlining inline (fixed width fonts only)</td>
+</tr>
+<tr>
+<td><a href="goodies.html#ul">\*[ULX]</a></td>
</tr>
</table>
@@ -423,13 +428,13 @@ elsewhere in the documentation.
<th id="qr-13" class="quick-ref" colspan="2" >+++ Superscipts</th>
</tr>
<tr>
-<td><a href="goodies.html#sup">\*[SUP]...\*[SUPX]</a></td><td>-- superscript (inline)</td>
+<td><a href="goodies.html#sup">\*[SUP]...\*[SUPX]</a></td><td>-- superscript</td>
</tr>
<tr>
-<td><a href="goodies.html#sup">\*[CONDSUP]...\*[CONDSUPX]</a></td><td>-- pseudo-condensed superscript (inline)</td>
+<td><a href="goodies.html#sup">\*[CONDSUP]...\*[CONDSUPX]</a></td><td>-- pseudo-condensed superscript</td>
</tr>
<tr>
-<td><a href="goodies.html#sup">\*[EXTSUP]...\*[EXTSUPX]</a></td><td>-- pseudo extended supercript (inline)</td>
+<td><a href="goodies.html#sup">\*[EXTSUP]...\*[EXTSUPX]</a></td><td>-- pseudo extended supercript</td>
</tr>
<tr>
<td><a href="goodies.html#sup-raise">SUPERSCRIPT_RAISE_AMOUNT</a></td><td>-- vertical offset of superscripts</td>
@@ -453,7 +458,7 @@ elsewhere in the documentation.
<td><a href="docelement.html#reset-list">RESET_LIST</a></td><td>-- clear and reset a list&#8217;s enumerator</td>
</tr>
<tr>
-<td><a href="docelement.html#pad-list-digits">PAD_LIST_DIGITS</a></td><td>-- space to leave for digits in a digit-enumerated list</td>
+<td><a href="docelement.html#pad-list-digits">PAD_LIST_DIGITS</a></td><td>-- reserve space for digits</td>
</tr>
</table>
@@ -468,7 +473,7 @@ elsewhere in the documentation.
<td><a href="color.html#color">COLOR</a></td><td>-- begin using an initialized colour</td>
</tr>
<tr>
-<td><a href="color.htmlxcolor">XCOLOR</a></td><td>-- initialize a "named" X colour</td>
+<td><a href="color.html#xcolor">XCOLOR</a></td><td>-- initialize a "named" X colour</td>
</tr>
<tr>
<td><a href="color.html#color-inline">\*[&lt;colorname&gt;]</a></td><td>-- begin using an initialized colour inline</td>
@@ -525,7 +530,7 @@ elsewhere in the documentation.
<td><a href="typesetting.html#newpage">NEWPAGE</a></td><td>-- break to a new page</td>
</tr>
<tr>
-<td><a href="goodies.html#pad">PAD</a></td><td>-- insert equalized regions of whitespace into a line</td>
+<td><a href="goodies.html#pad">PAD</a></td><td>-- insert equalized whitespace into a line</td>
</tr>
<tr>
<td><a href="goodies.html#pad-marker">PAD_MARKER</a></td><td>-- change the pad marker</td>
@@ -534,7 +539,7 @@ elsewhere in the documentation.
<td><a href="inlines.html#inline-rule-mom">\*[RULE]</a></td><td>-- draw a full measure rule</td>
</tr>
<tr>
-<td><a href="goodies.html#sizespecs">SIZESPECS</a></td><td>-- get font's cap-height, x-height and descender depth</td>
+<td><a href="goodies.html#sizespecs">SIZESPECS</a></td><td>-- get cap-height, x-height and descender depth</td>
</tr>
<tr>
<td><a href="goodies.html#silent">SILENT</a></td><td>-- output processing off or on</td>
@@ -546,7 +551,7 @@ elsewhere in the documentation.
<table class="quick-ref">
<tr>
-<th id="qr-18" class="quick-ref" colspan="2" >+++ Graphical objects</th>
+<th id="qr-18" class="quick-ref" colspan="2" >+++ Graphics, images and floats</th>
</tr>
<tr>
<td><a href="graphical.html#drh">DRH</a></td><td>-- draw a horizontal rule</td>
@@ -564,7 +569,15 @@ elsewhere in the documentation.
<td><a href="inlines.html#rule-weight">RULE_WEIGHT</a></td><td>-- set weight of rules drawn with \*[RULE]</td>
</tr>
<tr>
-<td><a href="docelement.html#pspic">PSPIC</a></td><td>-- insert a PostScript image</td>
+<td><a href="images.html#pdf-image">PDF_IMAGE</a></td><td>-- insert a PDF image</td>
+</tr>
+<tr>
+<td><a href="images.html#pspic">PSPIC</a></td><td>-- insert a PostScript image</td>
+</tr>
+<tr>
+<td style="vertical-align: top"><a href="images.html#float">FLOAT</a></td><td>-- keep blocks of input together, output on next page
+<br/>
+&nbsp;&nbsp;&nbsp;if necessary</td>
</tr>
</table>
@@ -578,19 +591,19 @@ elsewhere in the documentation.
<td><a href="docprocessing.html#title">TITLE</a></td><td>-- document title</td>
</tr>
<tr>
-<td><a href="docprocessing.html#doctitle">DOCTITLE</a></td><td>-- overall document title (if different from TITLE)</td>
+<td><a href="docprocessing.html#doc-title">DOCTITLE</a></td><td>-- overall document title (if different from TITLE)</td>
</tr>
<tr>
-<td><a href="docelement.html#endnote-title">ENDNOTE_TITLE</a></td><td>-- document/chapter identification string for endnotes</td>
+<td><a href="docelement.html#endnote-title">ENDNOTE_TITLE</a></td><td>-- document/chapter id string for endnotes</td>
</tr>
<tr>
<td><a href="docprocessing.html#chapter">CHAPTER</a></td><td>-- chapter number</td>
</tr>
<tr>
-<td><a href="docprocessing.html#chapter">CHAPTER_TITLE</a></td><td>-- chapter title</td>
+<td><a href="docprocessing.html#chapter-title">CHAPTER_TITLE</a></td><td>-- chapter title</td>
</tr>
<tr>
-<td><a href="docprocessing.html#draft-string">CHAPTER_STRING</a></td><td>-- what to use in place of &#8220;Chapter&#8221;</td>
+<td><a href="docprocessing.html#chapter-string">CHAPTER_STRING</a></td><td>-- what to use in place of &#8220;Chapter&#8221;</td>
</tr>
<tr>
<td><a href="docprocessing.html#subtitle">SUBTITLE</a></td><td>-- document subtitle</td>
@@ -605,10 +618,10 @@ elsewhere in the documentation.
<td><a href="docprocessing.html#covertitle">COVERTITLE</a></td><td>-- section cover title</td>
</tr>
<tr>
-<td><a href="docprocessing.html#covertitle">COPYRIGHT</a></td><td>-- copyright</td>
+<td><a href="docprocessing.html#copyright">COPYRIGHT</a></td><td>-- copyright</td>
</tr>
<tr>
-<td><a href="docprocessing.html#covertitle">MISC</a></td><td>-- miscellaneous cover information</td>
+<td><a href="docprocessing.html#misc">MISC</a></td><td>-- miscellaneous cover information</td>
</tr>
<tr>
<td><a href="docprocessing.html#draft">DRAFT</a></td><td>-- document&#8217;s draft number</td>
@@ -644,16 +657,13 @@ elsewhere in the documentation.
<th id="qr-21" class="quick-ref" colspan="2" >+++ Line numbering</th>
</tr>
<tr>
-<td><a href="docelement.html#number-lines">NUMBER_LINES</a></td><td>-- automatic line numbering on or off</td>
+<td><a href="docelement.html#number-lines">NUMBER_LINES</a></td><td>-- automatic line numbering on/off</td>
</tr>
<tr>
-<td><a href="docelement.html#number-lines-control">Control macros</a></td>
+<td><a href="docelement.html#number-quote-lines">NUMBER_QUOTE_LINES</a></td><td>-- numbering of QUOTE lines on/off</td>
</tr>
<tr>
-<td><a href="docelement.html#number-quote-lines">&nbsp;NUMBER_QUOTE_LINES</a></td><td>-- numbering of QUOTE lines on or off</td>
-</tr>
-<tr>
-<td><a href="docelement.html#number-blockquote-lines">&nbsp;NUMBER_BLOCKQUOTE_LINES</a></td><td>-- numbering of BLOCKQUOTE lines on or off</td>
+<td><a href="docelement.html#number-blockquote-lines">NUMBER_BLOCKQUOTE_LINES</a></td><td>-- numbering of BLOCKQUOTE lines on/off</td>
</tr>
</table>
@@ -677,19 +687,19 @@ elsewhere in the documentation.
<th id="qr-23" class="quick-ref" colspan="2" >+++ TYPEWRITE control macros</th>
</tr>
<tr>
-<td><a href="docprocessing.html#typewrite-control">UNDERLINE_ITALIC</a></td><td>-- underlining of italics on</td>
+<td><a href="docprocessing.html#typewriter-underlining">UNDERLINE_ITALIC</a></td><td>-- underlining of italics on</td>
</tr>
<tr>
-<td><a href="docprocessing.html#underline-quotes">UNDERLINE_QUOTES</a></td><td>-- underlining of QUOTEs on or off</td>
+<td><a href="docprocessing.html#printstyle-italics">UNDERLINE_QUOTES</a></td><td>-- underlining of QUOTEs on/off</td>
</tr>
<tr>
-<td><a href="docprocessing.html#typewrite-control">ITALIC_MEANS_ITALIC</a></td><td>-- use real italics (not underlining)</td>
+<td><a href="docprocessing.html#printstyle-italics">ITALIC_MEANS_ITALIC</a></td><td>-- use real italics (not underlining)</td>
</tr>
<tr>
-<td><a href="docprocessing.html#typewrite-control">UNDERLINE_SLANT</a></td><td>-- underlining of pseudo-italics on</td>
+<td><a href="docprocessing.html#typewriter-underlining">UNDERLINE_SLANT</a></td><td>-- underlining of pseudo-italics on</td>
</tr>
<tr>
-<td><a href="docprocessing.html#typewrite-control">SLANT_MEANS_SLANT</a></td><td>-- use pseudo italics (not underlining)</td>
+<td><a href="docprocessing.html#typewriter-underlining">SLANT_MEANS_SLANT</a></td><td>-- use pseudo italics (not underlining)</td>
</tr>
</table>
@@ -716,73 +726,23 @@ elsewhere in the documentation.
<table class="quick-ref">
<tr>
-<th id="qr-26" class="quick-ref" colspan="2" >+++ Main heads</th>
-</tr>
-<tr>
-<td><a href="docelement.html#head">HEAD</a></td><td>-- set a main head</td>
+<th id="qr-26" class="quick-ref" colspan="2" >+++ HEADINGS</th>
</tr>
<tr>
-<td><a href="docelement.html#head-general">Control macros</a></td><td>-- change default style of heads</td>
+<td><a href="docelement.html#heading">HEADING</a></td><td>-- hierarchical headings</td>
</tr>
<tr>
-<td><a href="docelement.html#head-space">&nbsp;HEAD_SPACE</a></td><td>-- control vertical space around heads</td>
+<td><a href="docelement.html#heading-control">Control macros</a></td><td>-- style heading levels</td>
</tr>
-<tr>
-<td><a href="docelement.html#number-heads">&nbsp;NUMBER_HEADS</a></td><td>-- number heads</td>
-</tr>
-<tr>
-<td><a href="docelement.html#prefix-chapter-number">&nbsp;PREFIX_CHAPTER_NUMBER</a></td><td>-- prefix chapter number to head numbers</td>
+<td><a href="docelement.html#heading-style">&nbsp;HEADING_STYLE</a></td><td>-- set style parameters for heading levels</td>
</tr>
-<tr>
-<td><a href="docelement.html#reset-head-number">&nbsp;RESET_HEAD_NUMBER</a></td><td>-- reset head number to "1"</td>
+<td><a href="docelement.html#prefix-chapter-number">&nbsp;PREFIX_CHAPTER_NUMBER</a></td><td>-- add chapter number to heading numbering</td>
</tr>
</table>
<table class="quick-ref">
<tr>
-<th id="qr-27" class="quick-ref" colspan="2" >+++ Subheads</th>
-</tr>
-<tr>
-<td><a href="docelement.html#subhead">SUBHEAD</a></td><td>-- set a subhead</td>
-</tr>
-<tr>
-<td><a href="docelement.html#subhead-general">Control macros</a></td><td>-- change default style of subheads</td>
-</tr>
-<tr>
-<td><a href="docelement.html#number-subheads">&nbsp;NUMBER_SUBHEADS</a></td><td>-- number subheads</td>
-</tr>
-<tr>
-<td><a href="docelement.html#prefix-chapter-number">&nbsp;PREFIX_CHAPTER_NUMBER</a></td><td>-- prefix chapter number to subhead numbers</td>
-</tr>
-<tr>
-<td><a href="docelement.html#reset-subhead-number">&nbsp;RESET_SUBHEAD_NUMBER</a></td><td>-- reset subhead number to "1"</td>
-</tr>
-</table>
-
-<table class="quick-ref">
-<tr>
-<th id="qr-28" class="quick-ref" colspan="2" >+++ Paragraph heads</th>
-</tr>
-<tr>
-<td><a href="docelement.html#parahead">PARAHEAD</a></td><td>-- set a paragraph head</td>
-</tr>
-<tr>
-<td><a href="docelement.html#parahead-general">Control macros</a></td><td>-- change default style of paraheads</td>
-</tr>
-<tr>
-<td><a href="docelement.html#number-paraheads">&nbsp;NUMBER_PARAHEADS</a></td><td>-- number paraheads</td>
-</tr>
-<tr>
-<td><a href="docelement.html#prefix-chapter-number">&nbsp;PREFIX_CHAPTER_NUMBER</a></td><td>-- prefix chapter number to parahead numbers</td>
-</tr>
-<tr>
-<td><a href="docelement.html#reset-parahead-number">&nbsp;RESET_PARAHEAD_NUMBER</a></td><td>-- reset parahead number to "1"</td>
-</tr>
-</table>
-
-<table class="quick-ref">
-<tr>
-<th id="qr-29" class="quick-ref" colspan="2" >+++ Paragraphs</th>
+<th id="qr-30" class="quick-ref" colspan="2" >+++ Paragraphs</th>
</tr>
<tr>
<td><a href="docelement.html#pp">PP</a></td><td>-- set a paragraph</td>
@@ -797,16 +757,16 @@ elsewhere in the documentation.
<td><a href="docelement.html#para-indent">&nbsp;PARA_INDENT</a></td><td>-- set the paragraph first-line indent</td>
</tr>
<tr>
-<td><a href="docelement.html#indent-first-paras">&nbsp;INDENT_FIRST_PARAS</a></td><td>-- indenting of paragraph first-lines on or off</td>
+<td><a href="docelement.html#para-indent-first">&nbsp;INDENT_FIRST_PARAS</a></td><td>-- indenting of paragraph first-lines on/off</td>
</tr>
<tr>
-<td><a href="docelement.html#pp-space">&nbsp;PARA_SPACE</a></td><td>-- linespace between paragraphs on or off</td>
+<td><a href="docelement.html#pp-space">&nbsp;PARA_SPACE</a></td><td>-- linespace between paragraphs on/off</td>
</tr>
</table>
<table class="quick-ref">
<tr>
-<th id="qr-30" class="quick-ref" colspan="2" >+++ Quotes (line for line verbatim quotes)</th>
+<th id="qr-31" class="quick-ref" colspan="2" >+++ Quotes (line for line verbatim quotes)</th>
</tr>
<tr>
<td><a href="docelement.html#quote">QUOTE</a></td><td>-- set quoted text line for line </td>
@@ -817,32 +777,26 @@ elsewhere in the documentation.
<tr>
<td><a href="docelement.html#always-fullspace-quotes">&nbsp;ALWAYS_FULLSPACE_QUOTES</a></td><td>-- control vertical space around quotes</td>
</tr>
-<tr>
-<td><a href="docelement.html#break-quote">&nbsp;BREAK_QUOTE</a></td><td>-- deprecated</td>
-</tr>
</table>
<table class="quick-ref">
<tr>
-<th id="qr-31" class="quick-ref" colspan="2" >+++ Blockquotes (cited passages of text)</th>
+<th id="qr-32" class="quick-ref" colspan="2" >+++ Blockquotes (cited passages of text)</th>
</tr>
<tr>
<td><a href="docelement.html#blockquote">BLOCKQUOTE</a></td><td>-- set longer passages of cited text</td>
</tr>
<tr>
-<td><a href="docelement.html#blockquote-general">Control macros</a></td><td>-- change default style of blockquotes</td>
-</tr>
-<tr>
-<td><a href="docelement.html#always-fullspace-quotes">&nbsp;ALWAYS_FULLSPACE_BLOCKQUOTES</a></td><td>-- control vertical space around quotes</td>
+<td><a href="docelement.html#blockquote-general">Control macros</a></td><td>-- change default blockquote style</td>
</tr>
<tr>
-<td><a href="docelement.html#break-quote">&nbsp;BREAK_BLOCKQUOTE</a></td><td>-- deprecated</td>
+<td><a href="docelement.html#always-fullspace-quotes">&nbsp;ALWAYS_FULLSPACE_BLOCKQUOTES</a></td><td>-- control vertical spacing</td>
</tr>
</table>
<table class="quick-ref">
<tr>
-<th id="qr-32" class="quick-ref" colspan="2" >+++ Code snippets</th>
+<th id="qr-33" class="quick-ref" colspan="2" >+++ Code snippets</th>
</tr>
<tr>
<td><a href="docelement.html#code">CODE</a></td><td>-- set a code snippet</td>
@@ -860,7 +814,7 @@ elsewhere in the documentation.
<table class="quick-ref">
<tr>
-<th id="qr-33" class="quick-ref" colspan="2" >+++ Author linebreaks (section breaks)</th>
+<th id="qr-34" class="quick-ref" colspan="2" >+++ Author linebreaks (section breaks)</th>
</tr>
<tr>
<td><a href="docelement.html#linebreak">LINEBREAK</a></td><td>-- insert an author linebreak (section break)</td>
@@ -878,10 +832,10 @@ elsewhere in the documentation.
<table class="quick-ref">
<tr>
-<th id="qr-34" class="quick-ref" colspan="2" >+++ Document termination string</th>
+<th id="qr-35" class="quick-ref" colspan="2" >+++ Document termination string</th>
</tr>
<tr>
-<td><a href="docelement.html#finis">FINIS</a></td><td>-- insert a document termination string (e.g. --END--)</td>
+<td><a href="docelement.html#finis">FINIS</a></td><td>-- insert a document termination string</td>
</tr>
<tr>
<td><a href="docelement.html#finis-control">Control macros</a></td><td>-- change default style finis string</td>
@@ -890,13 +844,16 @@ elsewhere in the documentation.
<td><a href="docelement.html#finis-string">&nbsp;FINIS_STRING</a></td><td>-- set the document termination string</td>
</tr>
<tr>
+<td><a href="docelement.html#finis-string-caps">&nbsp;FINIS_STRING_CAPS</a></td><td>-- capitalization of termination string</td>
+</tr>
+<tr>
<td><a href="docelement.html#finis-color">&nbsp;FINIS_COLOR</a></td><td>-- set the document termination string colour</td>
</tr>
</table>
<table class="quick-ref">
<tr>
-<th id="qr-35" class="quick-ref" colspan="2" >+++ Footnotes</th>
+<th id="qr-36" class="quick-ref" colspan="2" >+++ Footnotes</th>
</tr>
<tr>
<td><a href="docelement.html#footnote">FOOTNOTE</a></td><td>-- set a footnote</td>
@@ -905,7 +862,7 @@ elsewhere in the documentation.
<td><a href="docelement.html#footnote-general">Control macros</a></td><td>-- change default style of footnotes</td>
</tr>
<tr>
-<td><a href="docelement.html#footnote-markers">&nbsp;FOOTNOTE_MARKERS</a></td><td>-- footnote markers on or off</td>
+<td><a href="docelement.html#footnote-markers">&nbsp;FOOTNOTE_MARKERS</a></td><td>-- footnote markers on/off</td>
</tr>
<tr>
<td><a href="docelement.html#footnote-marker-style">&nbsp;FOOTNOTE_MARKER_STYLE</a></td><td>-- type of footnote marker to use</td>
@@ -914,31 +871,29 @@ elsewhere in the documentation.
<td><a href="docelement.html#reset-footnote-number">&nbsp;RESET_FOOTNOTE_NUMBER</a></td><td>-- reset footnote numbering</td>
</tr>
<tr>
-<td><a href="docelement.html#footnote-rule">&nbsp;FOOTNOTE_RULE</a></td><td>-- footnote separator rule on or off</td>
+<td><a href="docelement.html#footnote-rule">&nbsp;FOOTNOTE_RULE</a></td><td>-- footnote separator rule on/off</td>
</tr>
<tr>
-<td><a href="docelement.html#footnote-rule-adj">&nbsp;FOOTNOTE_RULE_ADJ</a></td><td>-- adjust vertical position of footnote rule</td>
+<td><a href="docelement.html#footnote-rule-adj">&nbsp;FOOTNOTE_RULE_ADJ</a></td><td>-- adjust position of footnote rule</td>
</tr>
<tr>
<td><a href="docelement.html#footnote-rule-length">&nbsp;FOOTNOTE_RULE_LENGTH</a></td><td>-- adjust length of footnote rule</td>
</tr>
<tr>
<td style="vertical-align: top;"><a href="docelement.html#footnotes-run-on">&nbsp;FOOTNOTES_RUN_ON</a></td>
- <td>-- instruct footnotes to be continuous (i.e. not to<br />
-&nbsp;&nbsp;&nbsp;begin on a new line; only for use with footnotes<br />
-&nbsp;&nbsp;&nbsp;identified by document line number)</td>
+ <td>-- instruct footnotes to be continuous</td>
</tr>
</table>
<table class="quick-ref">
<tr>
-<th id="qr-36" class="quick-ref" colspan="2" >+++ Endnotes</th>
+<th id="qr-37" class="quick-ref" colspan="2" >+++ Endnotes</th>
</tr>
<tr>
<td><a href="docelement.html#endnote">ENDNOTE</a></td><td>-- set an endnote</td>
</tr>
<tr>
-<td style="vertical-align: top;"><a href="docelement.html#EN-mark">\*[EN-MARK]</a></td>
+<td style="vertical-align: top;"><a href="docelement.html#en-mark">\*[EN-MARK]</a></td>
<td>-- mark initial line of a range of line numbers<br />
&nbsp;&nbsp;&nbsp;(for use with line numbered endnotes)</td>
</tr>
@@ -946,7 +901,7 @@ elsewhere in the documentation.
<td><a href="docelement.html#endnotes">ENDNOTES</a></td><td>-- output endnotes</td>
</tr>
<tr>
-<td><a href="docelement.html#endnote-control">Control macros</a></td><td>-- change just about anything to do with endnotes</td>
+<td><a href="docelement.html#endnote-control">Control macros</a></td><td></td>
</tr>
</table>
@@ -964,7 +919,7 @@ elsewhere in the documentation.
<td><a href="docelement.html#endnotes-main-title">Title control</a></td>
</tr>
<tr>
-<td><a href="docelement.html#endnotes-main-title">Document/section identification control</a></td>
+<td><a href="docelement.html#endnotes-doc-title">Document/section identification control</a></td>
</tr>
<tr>
<td><a href="docelement.html#endnotes-numbering">Identification style</a></td>
@@ -973,7 +928,7 @@ elsewhere in the documentation.
<table class="quick-ref">
<tr>
-<th id="qr-37" class="quick-ref" colspan="2" >+++ Margin notes</th>
+<th id="qr-38" class="quick-ref" colspan="2" >+++ Margin notes</th>
</tr>
<tr>
<td><a href="docelement.html#mn-init">MN_INIT</a></td><td>-- initialize margin notes</td>
@@ -985,7 +940,7 @@ elsewhere in the documentation.
<table class="quick-ref">
<tr>
-<th id="qr-38" class="quick-ref" colspan="2" >+++ Bibliographic references</th>
+<th id="qr-39" class="quick-ref" colspan="2" >+++ Bibliographic references</th>
</tr>
<tr>
<td><a href="refer.html#ref">REF</a></td><td>-- begin a reference</td>
@@ -1009,7 +964,7 @@ elsewhere in the documentation.
<td><a href="refer.html#bibliography">BIBLIOGRAPHY</a></td><td>-- output a bibliography</td>
</tr>
<tr>
-<td><a href="refer.html#biblio-control">Control macros</a></td><td>-- change just about anything to do with bibliographies</td>
+<td><a href="refer.html#biblio-control">Control macros</a></td>
</tr>
</table>
@@ -1030,37 +985,43 @@ elsewhere in the documentation.
<table class="quick-ref">
<tr>
-<th id="qr-39" class="quick-ref" colspan="2" >+++ Tables of contents</th>
+<th id="qr-40" class="quick-ref" colspan="2" >+++ Tables of contents</th>
</tr>
<tr>
-<td><a href="docelement.html#toc">TOC</a></td><td>-- output a table of contents</td>
+<td><a href="tables-of-contents.html#toc">TOC</a></td><td>-- output a table of contents</td>
</tr>
<tr>
-<td><a href="docelement.html#toc-control">Control macros</a></td><td>-- change just about anything to do with tables of contents</td>
+<td><a href="tables-of-contents.html#index-toc-control">Control macros</a></td>
</tr>
</table>
<table class="quick-ref" style="margin-top: -.5em; margin-left: 1em;">
<tr>
-<td><a href="docelement.html#toc-general">General style control</a></td>
+<td><a href="tables-of-contents.html#toc-general">General style control</a></td>
+</tr>
+<tr>
+<td><a href="tables-of-contents.html#toc-pagenumbering">Page numbering</a></td>
+</tr>
+<tr>
+<td><a href="tables-of-contents.html#toc-header">Header string control</a></td>
</tr>
<tr>
-<td><a href="docelement.html#toc-pagenumbering">Page numbering</a></td>
+<td><a href="tables-of-contents.html#toc-style">Entries and reference page numbers style control</a></td>
</tr>
<tr>
-<td><a href="docelement.html#toc-header">Title control</a></td>
+<td><a href="tables-of-contents.html#toc-title-style">TOC_TITLE_STYLE</a></td>
</tr>
<tr>
-<td><a href="docelement.html#toc-style">Changing the style of the different table of contents entry types</a></td>
+<td><a href="tables-of-contents.html#toc-entry-style">TOC_ENTRY_STYLE</a></td>
</tr>
<tr>
-<td><a href="docelement.html#toc-additional">Additional table of contents control macros</a></td>
+<td><a href="tables-of-contents.html#toc-additional">Additional table of contents control macros</a></td>
</tr>
</table>
<table class="quick-ref">
<tr>
-<th id="qr-40" class="quick-ref" colspan="2" >+++ Letter (correspondence) macros</th>
+<th id="qr-41" class="quick-ref" colspan="2" >+++ Letter (correspondence) macros</th>
</tr>
<tr>
<td><a href="letters.html#date">DATE</a></td><td>-- letter&#8217;s date</td>
@@ -1090,7 +1051,7 @@ elsewhere in the documentation.
<table class="quick-ref">
<tr>
-<th id="qr-41" class="quick-ref" colspan="2" >+++ Changing global print style parameters after START</th>
+<th id="qr-42" class="quick-ref" colspan="2" >+++ Changing global print style parameters after START</th>
</tr>
<tr>
<td><a href="docprocessing.html#doc-left-margin">DOC_LEFT_MARGIN</a></td><td>-- left margin of everything on the page</td>
@@ -1117,61 +1078,62 @@ elsewhere in the documentation.
<table class="quick-ref">
<tr>
-<th id="qr-42" class="quick-ref" colspan="2" >+++ Managing a document&#8217;s first-page header</th>
+<th id="qr-43" class="quick-ref" colspan="2" >+++ Managing a document&#8217;s first-page header</th>
</tr>
<tr>
-<td><a href="docprocessing.html#docheader">DOCHEADER</a></td><td>-- document first-page header on or off</td>
+<td><a href="docprocessing.html#docheader">DOCHEADER</a></td><td>-- document first-page header on/off</td>
</tr>
<tr>
-<td><a href="docprocessing.html#docheader-control-index">Control macros</a></td><td>-- change default style of docheader elements</td>
+<td><a href="docprocessing.html#index-docheader-control">Control macros</a></td><td>-- change default style of docheader elements</td>
</tr>
</table>
<table class="quick-ref">
<tr>
-<th id="qr-43" class="quick-ref" colspan="2" >+++ Managing page headers and footers</th>
+<th id="qr-44" class="quick-ref" colspan="2" >+++ Managing page headers and footers</th>
</tr>
<tr>
-<td><a href="headfootpage.html#headers">HEADERS</a></td><td>-- page headers on or off</td>
+<td><a href="headfootpage.html#headers">HEADERS</a></td><td>-- page headers on/off</td>
</tr>
<tr>
-<td><a href="headfootpage.html#footers">FOOTERS</a></td><td>-- page footers on or off</td>
+<td><a href="headfootpage.html#footers">FOOTERS</a></td><td>-- page footers on/off</td>
</tr>
<tr>
-<td style="vertical-align: top;"><a href="headfootpage.html#headers-and-footers">HEADERS_AND_FOOTERS</a></td><td>-- enable generation of both headers and footers</td>
+<td style="vertical-align: top;"><a href="headfootpage.html#headers-and-footers">HEADERS_AND_FOOTERS</a></td><td>-- enable generation of both headers and</br>
+&nbsp;&nbsp;&nbsp;footers</td>
</tr>
<tr>
-<td><a href="headfootpage.html#index-reference">Control macros</a></td>
+<td><a href="headfootpage.html#headfoot-control">Control macros</a></td>
</tr>
</table>
<table class="quick-ref" style="margin-top: -.5em; margin-left: 1em;">
<tr>
-<td><a href="headfootpage.html#strings">Strings</a></td><td>-- left-right-center strings</td>
+<td><a href="headfootpage.html#hdrftr-strings">Strings</a></td><td>-- left-right-center strings</td>
</tr>
<tr>
-<td><a href="headfootpage.html#style">Style</a></td><td>-- change style defaults for headers and/or footers</td>
+<td><a href="headfootpage.html#hdrftr-style">Style</a></td><td>-- change defaults for headers and/or footers</td>
</tr>
<tr>
-<td><a href="headfootpage.html#global">Global</a></td><td>-- global style changes</td>
+<td><a href="headfootpage.html#hdrftr-style-global">Global</a></td><td>-- global style changes</td>
</tr>
<tr>
-<td><a href="headfootpage.html#part-by-part">Part-by-part</a></td><td>-- part-by-part style changes</td>
+<td><a href="headfootpage.html#hdrftr-style-part">Part-by-part</a></td><td>-- part-by-part style changes</td>
</tr>
<tr>
-<td><a href="headfootpage.html#vertical">Vertical placement</a></td><td>-- adjust postion of headers and/or footers</td>
+<td><a href="headfootpage.html#vertical-spacing">Vertical placement</a></td><td>-- adjust position of headers and/or footers</td>
</tr>
<tr>
-<td><a href="headfootpage.html#separator-rule">Separator rule</a></td><td>-- manage the header/footer separator rule</td>
+<td><a href="headfootpage.html#hdrftr-separator">Separator rule</a></td><td>-- manage the header/footer separator rule</td>
</tr>
</table>
<table class="quick-ref">
<tr>
-<th id="qr-44" class="quick-ref" colspan="2" >+++ Recto/verso page headers and footers</th>
+<th id="qr-45" class="quick-ref" colspan="2" >+++ Recto/verso page headers and footers</th>
</tr>
<tr>
-<td><a href="rectoverso.html#recto-verso">RECTO_VERSO</a></td><td>-- recto/verso headers and/or footers on or off</td>
+<td><a href="rectoverso.html#recto-verso">RECTO_VERSO</a></td><td>-- recto/verso headers and/or footers on/off</td>
</tr>
<tr>
<td><a href="rectoverso.html#switch-hdrftr">SWITCH_HEADERS</a></td><td>-- switch recto or verso header</td>
@@ -1180,28 +1142,28 @@ elsewhere in the documentation.
<td><a href="rectoverso.html#switch-hdrftr">SWITCH_FOOTERS</a></td><td>-- switch recto or verso footer</td>
</tr>
<tr>
-<td><a href="headfootpage.html#hdrftr-rectoverso">HEADER_RECTO</a></td><td>-- string that constitutes a recto header</td>
+<td><a href="headfootpage.html#hdrftr-recto">HEADER_RECTO</a></td><td>-- string that constitutes a recto header</td>
</tr>
<tr>
-<td><a href="headfootpage.html#hdrftr-rectoverso">HEADER_VERSO</a></td><td>-- string that constitutes a verso header</td>
+<td><a href="headfootpage.html#hdrftr-verso">HEADER_VERSO</a></td><td>-- string that constitutes a verso header</td>
</tr>
<tr>
-<td><a href="headfootpage.html#hdrftr-rectoverso">FOOTER_RECTO</a></td><td>-- string that constitutes a recto footer</td>
+<td><a href="headfootpage.html#hdrftr-recto">FOOTER_RECTO</a></td><td>-- string that constitutes a recto footer</td>
</tr>
<tr>
-<td><a href="headfootpage.html#hdrftr-rectoverso">FOOTER_VERSO</a></td><td>-- string that constitutes a recto footer</td>
+<td><a href="headfootpage.html#hdrftr-verso">FOOTER_VERSO</a></td><td>-- string that constitutes a recto footer</td>
</tr>
</table>
<table class="quick-ref">
<tr>
-<th id="qr-45" class="quick-ref" colspan="2" >+++ Pagination</th>
+<th id="qr-46" class="quick-ref" colspan="2" >+++ Pagination</th>
</tr>
<tr>
-<td><a href="headfootpage.html#paginate">PAGINATE</a></td><td>-- pagination on or off</td>
+<td><a href="headfootpage.html#index-pagination">PAGINATE</a></td><td>-- pagination on/off</td>
</tr>
<tr>
-<td><a href="headfootpage.html#paginate-control">Control macros</a></td><td>-- change default style for pagination</td>
+<td><a href="headfootpage.html#index-pagination-control">Control macros</a></td><td>-- change default style for pagination</td>
</tr>
<tr>
<td><a href="headfootpage.html#pagenumber">&nbsp;PAGENUMBER</a></td><td>-- user-defined (starting) page number</td>
@@ -1213,14 +1175,13 @@ elsewhere in the documentation.
<td><a href="headfootpage.html#pagenum-on-first-page">&nbsp;PAGENUM_ON_FIRST_PAGE</a></td><td>-- when footers are enabled</td>
</tr>
<tr>
-<td style="vertical-align: top;"><a href="headfootpage.html#draft-with-pagenumber">&nbsp;DRAFT_WITH_PAGENUMBER</a></td><td>-- attach draft/revision information to page<br />
-&nbsp;&nbsp;&nbsp;numbers</td>
+<td style="vertical-align: top;"><a href="headfootpage.html#draft-with-pagenumber">&nbsp;DRAFT_WITH_PAGENUMBER</a></td><td>-- attach draft/revision to page number</td>
</tr>
</table>
<table class="quick-ref">
<tr>
-<th id="qr-46" class="quick-ref" colspan="2" >+++ Document and section cover (title) pages</th>
+<th id="qr-47" class="quick-ref" colspan="2" >+++ Document and section cover (title) pages</th>
</tr>
<tr>
<td><a href="cover.html#cover">COVER</a></td><td>-- information to include in a section cover</td>
@@ -1229,31 +1190,31 @@ elsewhere in the documentation.
<td><a href="cover.html#cover">DOC_COVER</a></td><td>-- information to include in a document cover</td>
</tr>
<tr>
-<td><a href="cover.html#on-off">COVERS</a></td><td>-- printing of section covers on or off</td>
+<td><a href="cover.html#on-off">COVERS</a></td><td>-- printing of section covers on/off</td>
</tr>
<tr>
-<td><a href="cover.html#on-off">DOC_COVERS</a></td><td>-- printing of document covers on or off</td>
+<td><a href="cover.html#on-off">DOC_COVERS</a></td><td>-- printing of document covers on/off</td>
</tr>
<tr>
-<td><a href="cover.html#cover-control-index">Control macros</a></td><td>-- change style defaults for covers</td>
+<td><a href="cover.html#cover-control">Control macros</a></td><td>-- change style defaults for covers</td>
</tr>
</table>
<table class="quick-ref">
<tr>
-<th id="qr-47" class="quick-ref" colspan="2" >+++ Utilities</th>
+<th id="qr-48" class="quick-ref" colspan="2" >+++ Utilities</th>
</tr>
<tr>
<td><a href="docprocessing.html#add-space">ADD_SPACE</a></td><td>-- add space to the top of a page</td>
</tr>
<tr>
-<td><a href="docelement.html#blank-page">BLANKPAGE</a></td><td>-- output one or more blank pages</td>
+<td><a href="headfootpage.html#blank-pages">BLANKPAGE</a></td><td>-- output one or more blank pages</td>
</tr>
<tr>
-<td><a href="docprocessing.html#doc-lead-adjust">DOC_LEAD_ADJUST</a></td><td>-- adjust document linespacing (lead) to fill pages</td>
+<td><a href="docprocessing.html#doc-lead-adjust">DOC_LEAD_ADJUST</a></td><td>-- adjust leading to fill pages</td>
</tr>
<tr>
-<td><a href="rectoverso.html#collate">COLLATE</a></td><td>-- join documents or chapters of a document together</td>
+<td><a href="rectoverso.html#collate">COLLATE</a></td><td>-- join documents (chapters/sections) together</td>
</tr>
<tr>
<td><a href="docprocessing.html#shim">SHIM</a></td><td>-- move vertical position to next valid baseline</td>
diff --git a/contrib/mom/momdoc/rectoverso.html b/contrib/mom/momdoc/rectoverso.html
index 1fbd146..b725e9e 100644
--- a/contrib/mom/momdoc/rectoverso.html
+++ b/contrib/mom/momdoc/rectoverso.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -39,7 +41,7 @@ FDL in the main directory of the groff source package.
<h1 class="docs">Recto/verso printing, collating</h1>
-<div style="width: 37%; margin: auto;">
+<div style="width: 40%; margin: auto;">
<ul class="no-enumerator" style="margin-left: -1em;">
<li><a href="#rectoverso-intro">Introduction to recto/verso printing</a>
<ul style="margin-left: -.5em; list-style-type: disc;">
@@ -85,22 +87,7 @@ aspects of alternating page layout:
</li>
<li>switching the page number position (if page numbers are not centred)</li>
</ul>
-
-<p>
-It is beyond the scope of this documentation to cover the different
-ways in which you can make your printer print on both sides of
-a sheet. A simple but effective method for those of us with
-&#8220;dumb&#8221; printers is to open the document (after
-it&#8217;s been processed into PostScript by groff&mdash;see
-<a href="using.html#using-invoking">How to invoke groff with mom</a>)
-in <b>gv</b> (ghostview), click the &#8220;odd pages&#8221; icon,
-then click &#8220;Print Marked&#8220;. After printing is complete,
-rearrange the sheets appropriately, put them back in your printer,
-and have <b>gv</b> print the &#8220;even pages&#8220;. If you
-prefer to work from the command line, check out the man pages for
-<kbd>pstops</kbd> and <kbd>psbook</kbd>. There are other programs
-out there as well to help with two-sided printing.
-</p>
+<br/>
<div class="macro-list-container">
<h3 id="rectoverso-list" class="macro-list">Recto/verso macros</h3>
@@ -174,7 +161,7 @@ placement of author and title, use SWITCH_HEADERS to reverse it.
SWITCH_HEADERS can also be useful in conjunction with
<a href="#recto-verso">RECTO_VERSO</a>.
The assumption of RECTO_VERSO is that the first page of a document
-(i.e. recto/odd) represents the norm for header-left and header-right,
+(ie recto/odd) represents the norm for header-left and header-right,
meaning that the second (and all subsequent verso/even) pages of the
document will reverse the order of header-left and header-right.
</p>
@@ -211,21 +198,21 @@ together. You need only concatenate chapters into a single file
(most likely with the <kbd>cat</kbd> command), put <kbd>.COLLATE</kbd> at the end of each
concatenated chapter, follow it with the
<a href="docprocessing.html#reference-macros">reference macros</a>
-needed for the new chapter, e.g.
+(metadata) needed for the new chapter, eg
<a href="docprocessing.html#chapter">CHAPTER</a>
or
<a href="docprocessing.html#chapter-string">CHAPTER_STRING</a>,
make any pertinent style changes to the upcoming chapter (unlikely,
but possible), and re-invoke the
<a href="docprocessing.html#start">START</a>
-macro. (Most likely, the reference macros and <kbd>.START</kbd> are
+macro. (Most likely, the metadata and <kbd>.START</kbd> are
already there.) Each chapter will begin on a fresh page and behave
as expected.
</p>
<p>
Even if you always work with monolithic, multi-chapter files, every
-chapter and its associated reference macros plus <kbd>.START</kbd>
+chapter and its associated metadata plus <kbd>.START</kbd>
still needs to be preceded by a <kbd>.COLLATE</kbd> command.
</p>
@@ -244,9 +231,9 @@ PRINTSTYLE&#8217;s already there.
<p id="caution" class="tip">
<b>Two words of caution:</b>
</p>
-<ol style="margin-top: -1.25em; margin-left: -1.25em; padding-bottom: .5em;">
+<ol style="margin-top: -1.25em; padding-bottom: .5em;">
<li>Do not collate documents of differing
- PRINTSTYLES (i.e. don&#8217;t try to
+ PRINTSTYLES (ie don&#8217;t try to
collate a <kbd>TYPESET</kbd> document and <kbd>TYPEWRITE</kbd>
document).
</li>
@@ -294,17 +281,30 @@ that require their own titles, looks like this:
<div class="box-tip">
<p class="tip">
<span class="tip">Tip:</span>
-If the last
-<a href="definitions.html#outputline">output line</a>
-of a document before COLLATE falls too close to the bottom margin
-for running text, mom may output a blank page with only a header
-or footer between collated documents. In order to avoid this, I
-recommend always preceding COLLATE with
-<kbd><a href="typesetting.html#el">.EL</a></kbd>,
-like this
+If the last line of text before <kbd>.COLLATE</kbd>
+falls too close to the bottom margin, or if the line is followed
+by a macro likely to cause a linebreak (eg <kbd>.LIST OFF</kbd> or
+<kbd>.IQ</kbd>), mom may output a superfluous blank page before
+the start of the following document.
+</p>
+
+<p class="tip-bottom">
+In order to avoid this, insert
+<a href="docprocessing.html#EL"><kbd>.EL</kbd></a>
+after the last line of text, before <kbd>.COLLATE</kbd> and/or any
+concluding macros. For example,
+<br/>
+<span class="pre-in-pp">
+ some concluding text.
+ .EL
+ .COLLATE
+</span>
+or
<br/>
<span class="pre-in-pp">
+ some concluding text.
.EL
+ .LIST OFF
.COLLATE
</span>
</p>
diff --git a/contrib/mom/momdoc/refer.html b/contrib/mom/momdoc/refer.html
index e356f4f..d7f7eea 100644
--- a/contrib/mom/momdoc/refer.html
+++ b/contrib/mom/momdoc/refer.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -166,7 +168,7 @@ are separated from each other by a single, blank line. The records
themselves are composed of single lines (&#8220;fields&#8221;) with
no blank lines between them. Each field begins with a percent
sign and a single letter (the &quot;field identifier&quot;)
-e.g. <kbd>%A</kbd> or <kbd>%T</kbd>. The letter identifies
+eg <kbd>%A</kbd> or <kbd>%T</kbd>. The letter identifies
what part of a bibliographic entry the field refers to: Author,
Title, Publisher, Date, etc. After the field identifier comes
a single space, followed by the information appropriate to
@@ -243,7 +245,7 @@ database &lt;full path to database&gt;
</div>
<p style="margin-top: .5em; font-size: 95%; line-height: 120%;">
<kbd>&lt;full&nbsp;path&nbsp;to&nbsp;the&nbsp;database&gt;</kbd>
-means the full path including the filename, e.g.
+means the full path including the filename, eg
<kbd>/home/user/refer/my-database-file</kbd>.
</p>
@@ -251,7 +253,7 @@ means the full path including the filename, e.g.
<p style="margin-top: .5em;">
If you want a bibliography, place this block at the <i>bottom</i> of
-your mom file, prior to invoking
+your mom file, either prior to or immediately after invoking
<a href="#bibliography">BIBLIOGRAPHY</a>.
</p>
@@ -272,7 +274,7 @@ database &lt;full path to database&gt;
<p style="margin-top: .5em; font-size: 95%; line-height: 120%;">
<kbd>&lt;full&nbsp;path&nbsp;to&nbsp;the&nbsp;database&gt;</kbd>
-means the full path including the filename, e.g.
+means the full path including the filename, eg
<kbd>/home/user/refer/my-database</kbd>.
</p>
@@ -644,7 +646,7 @@ are very few rules, and those there are make sense. In a nutshell:
newspaper
%J journal &ndash; when %T contains the title of an article
%e edition &ndash; number or name of an edition
- (e.g. Second, 2nd, Collector's, etc.)
+ (eg Second, 2nd, Collector's, etc.)
%S series &ndash; series name of books or journals
%V volume &ndash; volume number (of books)
%N journal number &ndash; journal or magazine number
@@ -786,7 +788,7 @@ like this:
<p>
Use this only if the author and the editor are not one in the same,
-e.g.
+eg
<br/>
<span class="pre-in-pp">
%A Geoffrey Chaucer
@@ -1065,7 +1067,7 @@ argument.
</p>
<p>
-When FOOTNOTE_REFS is in effect, regular footnotes, (i.e.
+When FOOTNOTE_REFS is in effect, regular footnotes, (ie
those introduced with <kbd>.FOOTNOTE</kbd> and terminated with
<kbd>.FOOTNOTE OFF</kbd>) continue to behave normally.
</p>
@@ -1079,7 +1081,7 @@ at any time.
<p>
By default, FOOTNOTE_REFS sets the
<a href="docelement.html#footnote-marker-style">FOOTNOTE_MARKER_STYLE</a>
-to <kbd>NUMBER</kbd> (i.e. superscript numbers). You may change
+to <kbd>NUMBER</kbd> (ie superscript numbers). You may change
change that if you wish by invoking FOOTNOTE_MARKER_STYLE, with the
argument you want after FOOTNOTE_REFS.
</p>
@@ -1111,7 +1113,7 @@ macro to endnotes.&#8221; You invoke it by itself, with no argument.
<p>
When ENDNOTE_REFS is in effect, mom continues to format regular
-endnotes, (i.e. those introduced with <kbd>.ENDNOTE</kbd> and
+endnotes, (ie those introduced with <kbd>.ENDNOTE</kbd> and
terminated with <kbd>.ENDNOTE OFF</kbd>) in the normal way.
</p>
@@ -1403,7 +1405,7 @@ The two optional arguments, <kbd>&lt;list&nbsp;separator&gt;</kbd>
and <kbd>&lt;list&nbsp;prefix&gt;</kbd> have the same meaning as the
equivalent arguments to
<a href="docelement.html#list">LIST</a>
-(i.e. <kbd>&lt;separator&gt;</kbd> and <kbd>&lt;prefix&gt;</kbd>).
+(ie <kbd>&lt;separator&gt;</kbd> and <kbd>&lt;prefix&gt;</kbd>).
</p>
<p>
@@ -1968,7 +1970,7 @@ Invoked without an argument,
underneath the bibliography&#8217;s first-page title. Invoked with the
argument, <kbd>DOUBLE</kbd>, BIBLIOGRAPHY_STRING_UNDERSCORE will
double-underscore the thtile. Invoked with any other non-numeric
-argument, (e.g. <kbd>OFF, NO, X</kbd>, etc.) the macro disables
+argument, (eg <kbd>OFF, NO, X</kbd>, etc.) the macro disables
underlining of the title.
</p>
diff --git a/contrib/mom/momdoc/reserved.html b/contrib/mom/momdoc/reserved.html
index a2b08b4..b941cb6 100644
--- a/contrib/mom/momdoc/reserved.html
+++ b/contrib/mom/momdoc/reserved.html
@@ -1,19 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- This file is part of groff, the GNU roff type-setting system.
+This file is part of groff, the GNU roff type-setting system.
- Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
- Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3 or
- any later version published by the Free Software Foundation; with the
- Invariant Sections being this comment section, with no Front-Cover
- Texts, and with no Back-Cover Texts.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being this comment section, with no Front-Cover
+Texts, and with no Back-Cover Texts.
- A copy of the Free Documentation License is included as a file called
- FDL in the main directory of the groff source package.
+A copy of the Free Documentation License is included as a file called
+FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -644,6 +646,7 @@ mom uses, along with brief descriptions of their functions.
START Sets doc defaults and prints info collected
with doc info macros
SUBHEAD Subheads
+ SUBSUBHEAD Subsubheads
<span style="display: block; margin-top: -.75em; margin-bottom: -1em;">*Headers/footers</span>
BREAK_QUOTE Manually break a footnoted quote that crosses
@@ -811,6 +814,8 @@ mom uses, along with brief descriptions of their functions.
HDRFTR_VERSO User-defined, single string verso
header/footer
HEADERS Turns headers on or off
+ HEADER_GAP Space between header and running text
+ HEADER_MARGIN Space from top of page to header
HEADERS_AND_FOOTERS Enables and permits the creation of
headers and footers that appear on the
same page
@@ -831,18 +836,23 @@ mom uses, along with brief descriptions of their functions.
endnotes
-Heads-
- HEADER_GAP Space between header and running text
- HEADER_MARGIN Space from top of page to header
HEAD_CAPS Print section titles in caps? (boolean)
HEAD_SPACE Give HEADs 2 line-spaces before. If OFF,
only 1. Default is on.
HEAD_UNDERLINE Underline section titles? (boolean)
NUMBER_HEADS Print head numbers
RESET_HEAD_NUMBER Reset head number
+ HEAD_BASELINE_ADJUST Amount to raise head above baseline
-Subheads-
NUMBER_SUBHEADS Print subhead numbers
RESET_SUBHEAD_NUMBER Reset subhead number
+ SUBHEAD_BASELINE_ADJUST Amount to raise subhead above baseline
+
+-Subsubheads-
+ NUMBER_SUBSUBHEADS Print subhead numbers
+ RESET_SUBSUBHEAD_NUMBER Reset subhead number
+ SUBSUBHEAD_BASELINE_ADJUST Amount to raise subhead above baseline
-Para heads-
NUMBER_PARAHEADS Print parahead numbers
@@ -1019,7 +1029,7 @@ mom uses, along with brief descriptions of their functions.
<span style="display: block; margin-top: -.5em; margin-bottom: -2.5em;">+++DIVERSIONS+++</span>
B_QUOTE Block (indented) quote text
- CLOSING Closing (i.e. Yours truly,)
+ CLOSING_TEXT Closing (i.e. Yours truly,)
EPI_TEXT Epigraph text
END_NOTES Endnotes text
FN_IN_DIVER Footnotes gathered from inside a diversion
@@ -1435,6 +1445,7 @@ mom uses, along with brief descriptions of their functions.
where the footnote is to be deferred to
the next page or column
#GUTTER Width of gutter between columns
+ #H_BASELINE_ADJ Vertical spacing adjustment for heads (default=0)
#HDRFTR_BOTH Are we setting both headers and footers? (boolean)
#HDRFTR_CENTER_CAPS CENTER part of header/footer in caps?
(boolean; default=off)
@@ -1509,27 +1520,27 @@ mom uses, along with brief descriptions of their functions.
line numbering is enabled
#LINES_PER_PAGE # of lines (at DOC_LEAD) that fit on
page after #B_MARGIN is set
- #LN Are line numbers on? (boolean)
- MN-active Are we doing a margin note? (boolean)
- MN-curr Current margin note
- MN-div-&lt;n&gt;-depth Depth of margin note &lt;n&gt;
- MN-hy Hyphenation flag of margin notes
+ #LN Test 1st arg to NUMBER_LINES for digit or string
+ MN-active Are we doing a margin note? (boolean)
+ MN-curr Current margin note
+ MN-div-&lt;n&gt;-depth Depth of margin note &lt;n&gt;
+ MN-hy Hyphenation flag of margin notes
#MNinit Have margin notes been initialized? (boolean)
#MNinit_DEFERRED Did we have to defer a margin note? (boolean)
- MN-last-pos Baseline of previous margin note
- MN-lead-adj Difference between the current DOC_LEAD and the
- leading used in margin notes
- MN-left Number of current left margin note
- MN-left-start Horizontal start position of left margin note
- MN-left-width Width of left margin note
- MN-right Number of current right margin note
- MN-right-start Horizontal start position of right margin note
- MN-right-width Width of right margin note
- MN-sep Gutter between margin notes and running text
- MN-shifted Did we have to shift a margin note down?
- (boolean)
- MN-size Point size of margin notes
- MN-spacing Leading of margin notes
+ MN-last-pos Baseline of previous margin note
+ MN-lead-adj Difference between the current DOC_LEAD and the
+ leading used in margin notes
+ MN-left Number of current left margin note
+ MN-left-start Horizontal start position of left margin note
+ MN-left-width Width of left margin note
+ MN-right Number of current right margin note
+ MN-right-start Horizontal start position of right margin note
+ MN-right-width Width of right margin note
+ MN-sep Gutter between margin notes and running text
+ MN-shifted Did we have to shift a margin note down?
+ (boolean)
+ MN-size Point size of margin notes
+ MN-spacing Leading of margin notes
#MISC_&lt;n&gt; Used to print "next" misc lines in DO_COVER
#MISC_COVER_NUM Number of cover misc items
#MISC_DOCCOVER_NUM Number od doc cover misc items
@@ -1576,9 +1587,10 @@ mom uses, along with brief descriptions of their functions.
#NUMBER_HEAD Are heads numbered? (boolean)
#NUMBER_PH Are paraheads numbered? (boolean)
#NUMBER_SH Are subheads numbered? (boolean)
+ #NUMBER_SSH Are subsubheads numbered? (boolean)
#NUM_COLS Number of columns per page
#NUMBERED If set to 1, lets PARAHEAD know that
- main- and subhead numbers have already been
+ main-, sub-, and subsubhead numbers have already been
prefixed to the parahead string
#NUM_FIELDS Incrementing register used to match
#TOTAL_FIELDS
@@ -1704,8 +1716,6 @@ mom uses, along with brief descriptions of their functions.
#RESTORE_LN_NUM Should we restore line numbering? (boolean)
#RESTORE_OFFSET Page offset at moment footer trap is sprung;
not currently used
- #RESTORE_TOC_PN_PADDING Saves #TOC_PN_PADDING in TOC prior to
- processing $FIRST_DOC_TITLE
#RESTORE_UNDERLINE Instructs CODE OFF to restore underlining of
italics (TYPEWRITE) if underlining was
formerly on
@@ -1763,14 +1773,16 @@ mom uses, along with brief descriptions of their functions.
#SAVED_WEIGHT_ADJ SAVED_UNDERSCORE_WEIGHT/2
#SEP_TYPE Set to 1 if LIST separator is ( or [ or {
#SH_COLOR Colorize subheads? (boolean)
- #SH_LEAD_ADJUST #DOC_LEAD/8 (TYPESET) or /2 (TYPEWRITE)
- (used for subhead spacing)
+ #SH_BASELINE_ADJ #DOC_LEAD/8 (TYPESET) or /5 (TYPEWRITE)
+ (used for subhead vertical spacing)
#SH_NUM Subhead number
#SHIM Amount of lead required to advance to
next valid baseline
#SILENT_BQUOTE_LN "Silently" linenumber blockquotes? (boolean)
#SILENT_QUOTE_LN "Silently" linenumber quotes? (boolean)
#SINGLE_SPACE Is TYPEWRITE in single space mode? (boolean)
+ #SKIP ENTRY If one, don't print the first entry (the
+ document title) in the TOC of uncollated docs.
#SKIP_FOOTER If 1, instructs DO_FOOTER to do nothing
if B_MARGIN falls below FOOTER_MARGIN
#SLANT_MEANS_SLANT For TYPEWRITE. (boolean)
@@ -1786,6 +1798,8 @@ mom uses, along with brief descriptions of their functions.
sometimes reports a fractionally larger
space than is actually available for
footnote text.
+ #SSH_BASELINE_ADJ #DOC_LEAD/8 (TYPESET) or /5 (TYPEWRITE)
+ (used for subsubhead vertical spacing)
#START If 1, signals completion of START
#START_FOR_FOOTERS Toggle set in START; signals to
PRINT_HDRFTR that START has been invoked,
@@ -1793,6 +1807,9 @@ mom uses, along with brief descriptions of their functions.
not to print a footer on page 1
#START_FOR_MNinit If 1, defer processing MN_INIT until #START
#STORED_PP_INDENT Temporarily holds value of #PP_INDENT
+ #SUBHEAD Was subhead the last macro invoked? (boolean)
+ Controls vert. space between SUBHEAD and
+ SUBSUBHEAD
#SUBTITLE_COLOR Colorize subtitle? (boolean)
#SUBTITLE_COVER_NUM Incrementing register used to define strings
$SUBTITLE_COVER_&lt;n&gt;
@@ -2140,8 +2157,7 @@ mom uses, along with brief descriptions of their functions.
$FINIS_COLOR Color of FINIS string
$FINIS_STRING What to print when FINIS macro is
invoked
- $FIRST_DOC_TITLE 1st doc's title captured in COLLATE
- FN_MARK Inline, gets #FN_MARK ( \n[ln] )
+ FN_MARK Inline, gets #FN_MARK ( \n[ln] )
$FN_CLOSE_BRACKET Close bracket for line-number identified
footnotes
$FN_FAM Family used in footnotes
@@ -2388,14 +2404,14 @@ docelement control macros that end in _COLOR.
CITE BLOCKQUOTE
COL_BREAK COL_NEXT
DOC_FAM DOC_FAMILY
- DOC_LLENGTH DOC_LINE_LENGTH
+ DOC_L_LENGTH DOC_LINE_LENGTH
DOC_L_LENGTH DOC_LINE_LENGTH
DOC_L_MARGIN DOC_LEFT_MARGIN
- DOC_LMARGIN DOC_LEFT_MARGIN
+ DOC_L_MARGIN DOC_LEFT_MARGIN
DOC_LS DOC_LEAD
DOC_PS DOC_PT_SIZE
DOC_R_MARGIN DOC_RIGHT_MARGIN
- DOC_RMARGIN DOC_RIGHT_MARGIN
+ DOC_R_MARGIN DOC_RIGHT_MARGIN
ENDNOTE_STRING_UNDERSCORE ENDNOTE_STRING_UNDERLINE
ENDNOTE_TITLE_UNDERSCORE ENDNOTE_TITLE_UNDERLINE
FOOTER_CENTER_CAPS HDRFTR_CENTER_CAPS
diff --git a/contrib/mom/momdoc/stylesheet.css b/contrib/mom/momdoc/stylesheet.css
index 44c2fae..ec056aa 100644
--- a/contrib/mom/momdoc/stylesheet.css
+++ b/contrib/mom/momdoc/stylesheet.css
@@ -33,7 +33,7 @@ a:link.quick { text-decoration: underline; }
h1.docs
{
font-family: arial,sans-serif ;
- font-size: 175% ;
+ font-size: 125% ;
text-align: center ;
color: #002b56 ;
background-color: #e2f1ff ;
@@ -43,7 +43,7 @@ h1.docs
h2.docs
{
margin-bottom: -.25em ;
- font-size: 120% ;
+ font-size: 105% ;
color: #000056 ;
}
h2.macro-group /* ie "Page setup" or "Indents" or "Multi-columns" */
@@ -92,6 +92,7 @@ h3.macro-id
}
h4.docs
{
+ font-size: 95% ;
margin-bottom: -.5em ;
color: #000056 ;
}
@@ -282,7 +283,7 @@ span.pre /* pre-formatted multi-line blocks; indent must be exactly 2 spaces */
margin-bottom: -1.5em ;
font-family: "Lucida Console",monospace ;
font-weight: bolder ;
- font-size: 100% ;
+ font-size: 95% ;
white-space: pre ;
overflow: auto ;
}
@@ -300,7 +301,7 @@ span.pre-in-pp
margin-bottom: -.5em ;
font-family: "Lucida Console",monospace ;
font-weight: bolder ;
- font-size: 100% ;
+ font-size: 95% ;
white-space: pre ;
overflow: auto ;
}
@@ -509,6 +510,7 @@ p.defaults
{
margin-top: .25em ;
margin-left: 6px ;
+ margin-right: 12px ;
margin-bottom: 0 ;
}
#toc-title, #toc-head, #toc-subhead, #toc-parahead
@@ -532,7 +534,7 @@ kbd
{
font-family: "Lucida Console",monospace ;
font-weight: bold ;
- font-size: 100% ;
+ font-size: 95% ;
}
kbd.macro-args
{
@@ -646,8 +648,17 @@ table.quick-ref, th.quick-ref
font-weight: bold ;
text-align: left ;
}
+
td
{
padding: 0 ;
padding-left: .5em ;
}
+
+/* Misc */
+
+span.book-title
+{
+ font-style: italic ;
+}
+
diff --git a/contrib/mom/momdoc/tables-of-contents.html b/contrib/mom/momdoc/tables-of-contents.html
index 82c744b..000f0b7 100644
--- a/contrib/mom/momdoc/tables-of-contents.html
+++ b/contrib/mom/momdoc/tables-of-contents.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -42,14 +44,17 @@ FDL in the main directory of the groff source package.
<div style="width: 68%; margin: auto;">
<ul class="no-enumerator">
<li><a href="#toc-intro">Introduction to tables of contents</a>
+ <li><a href="#toc-appearance">Tables of contents appearance and behaviour</a></li>
+ <li><a href="#pdf-output">PDF output</a>
<ul style="margin-left: -.5em; list-style-type: disc;">
- <li><a href="#toc-behaviour">Tables of contents behaviour</a></li>
- <li><a href="#psselect">Using <kbd>psselect</kbd> to put the table of contents where you want it</a></li>
+ <li><a href="#positioning">Positioning the table of contents</a>
+ <li><a href="#auto-relocate-toc">AUTO_RELOCATE_TOC</a></li>
+ <li><a href="#psselect"><kbd>psselect</kbd></a></li>
</ul></li>
- <li><a href="#toc">Instruct mom to output a table of contents</a></li>
+ <li><a href="#toc">The TOC macro</a></li>
<li><a href="#toc-control-top">Control macros for tables of contents</a>
<ul style="margin-left: -.5em; list-style-type: disc;">
- <li><a href="#index-toc-control">Table of contents control macros and defaults</a></li>
+ <li><a href="#index-toc-control">Table of contents control macros</a></li>
</ul></li>
</ul>
</div>
@@ -67,21 +72,19 @@ Want a table of contents for your document? Easy. Just enter
as the very last macro of your document file. Mom will have picked
up all document titles (in
<a href="rectoverso.html#collate">collated</a>
-documents), all heads, subheads, and paragraph heads, as well as
-any endnotes pages that have been output, and assigned them the
-appropriate page number (and page numbering style). Talk about a
-no-brainer!
+documents) and headings, as well as the endnotes section and
+bibliography, if they exist, and assigned them the appropriate page
+number. Talk about a no-brainer!
</p>
<p>
That said, tables of contents have even more control macros than
endnotes. As always, the reason for so many control macros is so
that if you want to change just about any aspect of the table of
-contents&#8217; typographic appearance, you can. Mom is all about
-simplicity <i>and</i> flexibility.
+contents&#8217; typographic appearance, you can.
</p>
-<h3 id="toc-behaviour" class="docs">Tables of contents behaviour</h3>
+<h2 id="toc-appearance" class="docs">Tables of contents appearance and behaviour</h2>
<p>
When you output a table of contents (with
@@ -108,14 +111,11 @@ pages have both page headers or footers and a page number.
</p>
<p>
-Entries in a table of contents are hierarchically indented, as
-you would expect. By default, each type of entry (e.g. a head
-or a subhead) is set in a different font as well. If any of
-heads, subheads or paragraph heads are numbered in the body of the
-document, they are also numbered in the table of contents. Head,
-subhead and paragraph head numbering in the table of contents is
-<i>not</i> concatenated, as it is in the body of the document,
-because it's visually redundant in a table of contents.
+Entries in a table of contents are hierarchically indented, as you
+would expect, and if headings are numbered in the body of the document,
+you can instruct mom to number them in the table of contents as
+well (see
+<a href="#toc-entry-numbers">TOC_ENTRY_NUMBERS</a>).
</p>
<p>
@@ -140,40 +140,90 @@ can be altered with
<a href="definitions.html#controlmacro">control macros</a>,
as can the family,
<a href="definitions.html#font">font</a>,
-point size and indent of each type of entry (i.e. title, head,
-subhead, paragraph head). Furthermore, the page numbering style
-can be changed, as can the amount of visual space reserved for page
-reference numbers.
+point size and indent of each level of entry. Furthermore, the page
+numbering style can be changed, as can the amount of visual space
+reserved for entry page numbers.
+</p>
+
+<h2 id="pdf-output" class="docs">PDF output</h2>
+
+<p>
+When files containing a table of contents are processed with
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>,
+entries in the table of contents are clickable links when the
+document is viewed at the screen. The colour of the links is the
+last <kbd>.PDF_LINK_COLOR</kbd> in effect, so if you wish another
+colour, it should be set just before issuing <kbd>.TOC</kbd>.
+</p>
+
+<p>
+When preparing files for printing, coloured links in both the table
+of contents and elsewhere in the document may not be desirable.
+You can disable the colour by passing
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>
+the <kbd>-c</kbd> option, like this: <br/>
+<span class="pre-in-pp">
+ pdfmom -c doc.mom &gt; doc.pdf
+</span>
+</p>
+
+<h3 id="positioning" class="docs">Positioning the Table of Contents</h3>
+
+<p>
+Because a table of contents can&#8217;t be generated until the
+end of a document (hence the last macro in the file), it is also
+the last page of the document. While this is desirable for some
+language conventions&mdash;French, for example&mdash;it is not
+desirable for others.
</p>
-<h5 id="psselect" class="docs">Using <kbd>psselect</kbd> to put the table of contents where you want it</h5>
+<h4 id="auto-relocate-toc" class="docs">Automatic PDF relocation of the Table of Contents</h4>
<p>
-Mom always outputs the table of contents at the end of a document.
-While this is desirable for some language conventions&mdash;French,
-for example&mdash;it is not desirable for others.
+When
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>
+is used to process files with a table of contents, the macro,
+<kbd>.AUTO_RELOCATE_TOC</kbd>, can be used to reposition the table
+of contents to the top of the output document, with the presence
+of a cover and/or title page sensibly taken into account. Full
+AUTO_RELOCATE_TOC usage is described in the manual,
+<a href="http://www.schaffter.ca/mom/pdf/mom-pdf.pdf"><span class="book-title">Producing PDFs with groff and mom</span></a>.
</p>
<p>
-If you&#8217;d like your tables of contents near the start of
-your document, you have two options: re-arrange the pages by hand
-(okay for one or two hard copies of the document), or use the
-<kbd>psselect</kbd> programme provided by the <b>psutils</b> suite
-of tools (which you may have to install as a package from your
-distribution if it is not already on your system).
+In order to take advantage of automatic table of contents
+repositioning, you must use
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>.
+with groff&#8217;s native PDF driver (ie without the
+<strong>-Tps</strong> flag). Files that need to be processed with
+the <strong>-Tps</strong> flag require you to reposition the table
+of contents yourself with <strong>psselect</strong>, described
+below.
+</p>
+
+<h4 id="psselect" class="docs"><span style="text-transform: none">Using psselect to relocate the Table of Contents in PostScript documents</span></h4>
+
+<p>
+To change the location of the table of contents in files
+processed with <kbd>pdfmom -Tps</kbd>, you have two choices:
+rearrange the pages by hand (okay for one or two hard copies),
+or use the <strong>psselect</strong> programme provided by the
+<strong>psutils</strong> suite of tools (which you may have to
+install as a package from your distribution if it is not already on
+your system).
</p>
<p>
-The procedure for using <kbd>psselect</kbd> to put the table of
-contents near the beginning of the document begins by you
-determining how many pages it contains. You can
-do this by previewing the document with the PostScript viewer of
-your choice (gv, okular, evince, etc).
+The procedure for using <strong>psselect</strong> to put the
+table of contents near the beginning of a document begins by
+you determining how many pages it contains. You can do this by
+previewing the document with the document viewer of your choice
+(gv, Okular, Evince, etc).
</p>
<p>
Once you know the number of pages in the table of contents, you use
-<kbd>psselect</kbd> to place them where you want.
+<strong>psselect</strong> to place them where you want.
</p>
<p>
@@ -186,11 +236,11 @@ document is:
</span>
The <kbd>-p</kbd> option instructs <kbd>psselect</kbd> that what
follows is a comma-separated list of the order in which you want
-pages of a document re-arranged. The underscore character means
+pages of a document rearranged. The underscore character means
"counting backwards from the end of the document". Thus, the above
-says: "Put the last page first (i.e. the table of contents), followed
+says: "Put the last page first (ie the table of contents), followed
by all pages from the original first page up to the second to last
-(i.e. the last page before the table of contents)."
+(ie the last page before the table of contents)."
</p>
<p>
@@ -214,17 +264,16 @@ page, the command would look like this:
<kbd>psselect</kbd> outputs to stdout, so you have to redirect the
output to a new file.
<br/>
-<span class="pre-in-pp">
+<span class="pre-in-pp" style="margin-bottom: -1em">
psselect -p &lt;page list&gt; &lt;file&gt;.ps &gt; &lt;new-file&gt;.ps
</span>
</p>
</div>
-
<!-- -TOC- -->
<div class="macro-id-overline">
-<h3 id="toc" class="macro-id">Instruct mom to output a table of contents</h3>
+<h3 id="toc" class="macro-id">The TOC macro</h3>
</div>
<div class="box-macro-args">
@@ -236,26 +285,51 @@ If you want a table of contents, just place <kbd>.TOC</kbd> at the
very end of your document. Mom takes care of the rest.
</p>
-<div class="rule-short"><hr/></div>
-
-<h2 id="toc-control-top" class="macro-group">Control macros for tables of contents</h2>
-
<div class="box-tip">
-<p class="tip-top">
-<span class="note">ERRATUM:</span> In versions of mom prior to
-1.3-e_3, the documentation incorrectly stated that table of contents
-control macros could go anywhere in a mom file prior to invoking
-<kbd>.TOC</kbd>.
+<p class="tip">
+<span class="tip">Tip:</span>
+If the last line of text in a document, before <kbd>.TOC</kbd>,
+falls too close to the bottom margin, or if the line is followed
+by a macro likely to cause a linebreak (eg <kbd>.LIST OFF</kbd> or
+<kbd>.IQ</kbd>), mom may output a superfluous blank page before the
+Table of Contents.
</p>
<p class="tip-bottom">
-In fact, table of contents control macros must come before
-<kbd><a href="docprocessing.html#start">.START</a></kbd>.
+In order to avoid this, insert
+<a href="docprocessing.html#EL"><kbd>.EL</kbd></a>
+after the last line of text, before <kbd>.TOC</kbd> and/or any
+concluding macros. For example,
+<br/>
+<span class="pre-in-pp">
+ some concluding text.
+ .EL
+ .TOC
+</span>
+or
+<br/>
+<span class="pre-in-pp">
+ some concluding text.
+ .EL
+ .LIST OFF
+ .TOC
+</span>
</p>
</div>
+<div class="rule-short"><hr/></div>
+
+<h2 id="toc-control-top" class="macro-group">Control macros for tables of contents</h2>
+
+<p>
+Aside from allowing you to set the style of table of contents
+entries on a per-level basis, the control macros let you design
+the table of contents as if they were a complete document unto
+themselves (overall family, headers/footers, pagination, etc).
+</p>
+
<div class="defaults-container" style="background-color: #ded4bd; border: none;">
-<h3 id="index-toc-control" class="docs defaults">Table of contents control macros and defaults</h3>
+<h3 id="index-toc-control" class="docs defaults">Table of contents control macros</h3>
<ol style="margin-top: .5em; padding-bottom: .5em;">
<li><a href="#toc-general">General table of contents style control</a>
@@ -264,31 +338,30 @@ In fact, table of contents control macros must come before
<li><a href="#toc-pt-size">TOC_PT_SIZE</a> &ndash; base point size for tables of contents</li>
<li><a href="#toc-lead">TOC_LEAD</a> &ndash; leading of tables of contents</li>
</ul></li>
- <li><a href="#toc-pagenumbering">Table of contents page numbering</a>
+ <li><a href="#toc-pagenumbering">Page numbering</a>
<ul style="margin-left: -.5em;">
<li><a href="#paginate-toc">PAGINATE_TOC</a> &ndash; turn table of contents pagination on or off</li>
<li><a href="#toc-pagenum-style">TOC_PAGENUM_STYLE</a> &ndash; table of contents page numbering style</li>
</ul></li>
- <li><a href="#toc-header">Changing the table of contents header (title), string and style</a>
+ <li><a href="#toc-header">Header string (eg &#8220;Contents&#8221;) and style</a>
<ul style="margin-left: -.5em;">
- <li><a href="#toc-header-string">Changing the header (title) string</a>
+ <li><a href="#toc-header-string">Changing the header string</a>
<ul style="margin-left: -.5em;">
- <li><a href="#toc-header-style">Table of contents header (title) string control macros and defaults</a></li>
+ <li><a href="#toc-header-style">Header string control macros and defaults</a></li>
</ul></li>
</ul></li>
- <li><a href="#toc-style">Changing the style of table of contents entries and page number references</a>
+ <li><a href="#toc-style">Entries and reference page number style</a>
<ul style="margin-left: -.5em;">
- <li><a href="#toc-indent-note">Note: the table of contents _INDENT control macros</a></li>
- <li><a href="#toc-title">Changing the style of table of contents title entries</a></li>
- <li><a href="#toc-head">Changing the style of table of contents head entries</a></li>
- <li><a href="#toc-subhead">Changing the style of table of contents subhead entries</a></li>
- <li><a href="#toc-parahead">Changing the style of table of contents paragraph head entries</a></li>
- <li><a href="#toc-pn">Changing the style of table of contents page number references</a></li>
+ <li><a href="#toc-pn">Reference page numbers style control</a></li>
+ <li><a href="#toc-title-style">Title entry style control</a></li>
+ <li><a href="#toc-entry-style">Heading entry style control</a></li>
+ <li><a href="#toc-entry-numbers">Controlling the numbering of entries</a></li>
</ul></li>
<li><a href="#toc-additional">Additional table of contents control macros</a>
<ul style="margin-left: -.5em;">
<li><a href="#toc-appends-author">Append author(s) to table of contents title entries</a></li>
<li><a href="#toc-title-entry">Alter the wording of a table of contents title entry</a></li>
+ <li><a href="#space-toc-items">Space table of contents entries pleasingly</a></li>
<li><a href="#toc-padding">Establish the number of placeholders to leave for page reference numbers</a></li>
<li><a href="#toc-rv-switch">Switch tables of contents page margins</a></li>
</ul></li>
@@ -297,6 +370,8 @@ In fact, table of contents control macros must come before
<h4 id="toc-general" class="docs" style="margin-top: -1.5em; margin-bottom: .5em;">1. General tables of contents style control</h4>
+<!-- -TOC_FAMILY- -->
+
<div id="toc-family" class="box-macro-args">
Macro: <b>TOC_FAMILY</b> <kbd class="macro-args">&lt;family&gt;</kbd>
</div>
@@ -304,7 +379,7 @@ Macro: <b>TOC_FAMILY</b> <kbd class="macro-args">&lt;family&gt;</kbd>
<p>
TOC_FAMILY establishes the default family for every page element in
a table of contents, including the table of contents&#8217; header
-(title) string (by default, &#8220;Contents&#8221;) and the page
+string (by default, &#8220;Contents&#8221;) and the page
number in the top or bottom margin. The default is the prevailing
document family.
</p>
@@ -342,6 +417,8 @@ is 12.5 points (the same default size used in the body of the
document).
</p>
+<!-- -TOC_LEAD- -->
+
<div id="toc-lead" class="box-macro-args">
Macro: <b>TOC_LEAD</b> <kbd class="macro-args">&lt;leading of the toc&gt; [ ADJUST ]</kbd>
</div>
@@ -388,7 +465,7 @@ is the prevailing document lead (16 by default), adjusted.
<div class="box-tip">
<p class="tip">
<span class="note">Note:</span>
-Even if you give mom a <kbd>.DOC_LEAD_ADJUST&nbsp;.OFF</kbd> command,
+Even if you give mom a <kbd>.DOC_LEAD_ADJUST&nbsp;OFF</kbd> command,
she will still, by default, adjust the leading of the table of
contents. You <i>must</i> enter
<kbd>TOC_LEAD&nbsp;&lt;lead&gt;</kbd> with no <kbd>ADJUST</kbd>
@@ -403,7 +480,7 @@ regardless of whether the body of the document is single-spaced.
</p>
</div>
-<h4 id="toc-pagenumbering" class="docs">2. Table of contents page numbering</h4>
+<h4 id="toc-pagenumbering" class="docs">2. Page numbering</h4>
<p>
The pagination style of tables of contents is controlled by the same
@@ -426,7 +503,7 @@ immediately prior to <kbd>.TOC</kbd>.
<p>
A special macro,
<kbd><a href="#toc-pagenum-style">TOC_PAGENUM_STYLE</a></kbd>
-controls the style of table of contents pagination (i.e. the actual
+controls the style of table of contents pagination (ie the actual
table of contents pages' numbers, not the page number references of
entries).
</p>
@@ -484,7 +561,7 @@ the following:
</span>
</p>
-<h4 id="toc-header" class="docs" style="margin-top: -.5em;">3. Changing the table of contents header (title) string and style</h4>
+<h4 id="toc-header" class="docs" style="margin-top: -.5em;">3. Header string and style</h4>
<p>
The table of contents header string is the title that appears at to top of the
@@ -504,7 +581,7 @@ example
</span>
</p>
-<h5 id="toc-header-style" class="docs" style="margin-top: -.5em; text-transform: none;">Table of contents header string (title) control macros and defaults</h5>
+<h5 id="toc-header-style" class="docs" style="margin-top: -.5em; text-transform: none;">Header string control macros and defaults</h5>
<div class="defaults-container" style="margin-top: 1em; padding-bottom: 8px;">
<p class="defaults" style="padding-top: 6px;">
@@ -519,90 +596,258 @@ See
</span>
</div>
-<h4 id="toc-style" class="docs" style="margin-top: -1em;">4. Changing the style of table of contents entries and page number references</h4>
+<h4 id="toc-style" class="docs" style="margin-top: -1em;">4. Entries and reference page numbers style</h4>
<p>
-&#8220;Entries&#8221; refers to titles in
+&#8220;Entries&#8221; refers to the hierarchical arrangement of
+section titles (in
<a href="rectoverso.html#collate-intro">collated</a>
-documents
-(<a href="docprocessing.html#title">TITLE</a>)
-, heads
-(<a href="docelement.html#head">HEAD</a>),
-subheads
-(<a href="docelement.html#subhead">SUBHEAD</a>),
-and paragraph heads
-(<a href="docelement.html#parahead">PARAHEAD</a>)
-as they appear in the table of contents. Their style is managed by
-the usual
-<a href="definitions.html#controlmacro">control macros</a>,
-which take the form <kbd>TOC_&lt;ELEMENT&gt;_&lt;SPEC&gt;</kbd>
-(e.g. <kbd>TOC_HEAD_FAMILY</kbd> or <kbd>TOC_SUBHEAD_INDENT</kbd>).
+documents) and headings as they appear in the table of contents:
+<span class="pre-in-pp">
+ Section title
+ Head level 1
+ Head level 2
+ Head level 3
+ ...
+</span>
+The style for title entries (eg chapter numbers or titles) and
+heading levels is controlled by
+<a href="#toc-title-style">TOC_TITLE_STYLE </a>
+and
+<a href="#toc-entry-style">TOC_ENTRY_STYLE</a>
+respectively.
+</p>
+
+<p id="toc-pn">
+&#8220;Reference page numbers&#8221; means the page numbers
+associated with entries. Macros to control their style take the
+form <kbd>.TOC_PN_&lt;SPEC&gt;</kbd>, and the defaults are listed
+here.
+</p>
+
+<div class="defaults-container" style="margin-top: 1em; padding-bottom: 8px;">
+<p class="defaults" style="padding-top: 6px;">
+See
+<a href="docelement.html#control-macro-args">Arguments to the control macros</a>.
</p>
+<span class="pre defaults">
+.TOC_PN_FAMILY default = prevailing doc family
+.TOC_PN_FONT default = roman
+.TOC_PN_SIZE default = 0
+</span>
+</div>
+</p>
+
+<!-- -TOC_TITLE_STYLE- -->
+
+<div id="toc-title-style" class="box-macro-args">
+Macro: <b>TOC_TITLE_STYLE</b> <kbd class="macro-args">&lt;see below for args&gt;</kbd>
+</div>
+
<p>
-&#8220;Page number references&#8221; means the page numbers associated with
-entries. They take the form <kbd>TOC_PN_&lt;SPEC&gt;</kbd>.
+TOC_TITLE_STYLE allows you to set all the style parameters for
+title entries in the tables of contents with one macro. The
+number of arguments can run long, so you may want to break them into
+several lines with the backslash character (<kbd>\</kbd>). The
+arguments are:
+<br/>
+<span class="pre-in-pp">
+ FAMILY &lt;family&gt;
+ FONT &lt;font&gt;
+ SIZE +|-&lt;n&gt;
+ COLOR &lt;color&gt;
+ INDENT &lt;amount&gt;
+ CAPS | NO_CAPS
+</span>
+The arguments may be entered in any order.
</p>
<p>
-The following is a list of the control macros for table of contents
-entries, along with their defaults.
+The family, font, size, and color arguments behave identically
+to the individual control macros that govern other tags, therefore see
+<a href="docelement.html#control-macro-args">Arguments to the control macros</a>
+for usage. Their defaults are the same as for paragraphs in
+<a href="definitions.html#running">running text</a>.
</p>
-<div id="toc-indent-note" class="box-tip">
-<p class="tip">
-<span class="note">Note:</span>
-The table of contents _INDENT
-macros set an absolute indent, relative to nothing, and therefore
-require an appended
+<p>
+<kbd>INDENT</kbd> lets you indent title entries by the amount specified, and
+requires a
<a href="definitions.html#unitofmeasure">unit of measure</a>.
+The default is zero.
+</p>
+
+<p>
+<kbd>CAPS</kbd> instructs mom to capitalize title entries.
+Capitalization may be enabled or disabled on a per-title basis.
+</p>
+
+<p>
+As an example, if you want title entries bold, slightly larger than other
+entries and capitalized, you could do either
+<br/>
+<span class="pre-in-pp">
+ .TOC_TITLE_ENTRY FONT B SIZE +.5 CAPS
+</span>
+or
+<br/>
+<span class="pre-in-pp">
+ .TOC_TITLE_ENTRY \
+ FONT B \
+ SIZE +.5 \
+ CAPS
+</span>
</p>
+
+<!-- -TOC_ENTRY_STYLE- -->
+
+<div id="toc-entry-style" class="box-macro-args">
+Macro: <b>TOC_ENTRY_STYLE</b> <kbd class="macro-args">&lt;level&gt; &lt;see below for remaining args&gt;</kbd>
</div>
-<div id="index-toc-entry-control-macros" class="defaults-container" style="padding-bottom: 8px;">
-<p class="defaults" style="padding-top: 6px;">
-See
-<a href="docelement.html#control-macro-args">Arguments to the control macros</a>.
+
+<p>
+TOC_ENTRY_STYLE allows you to set individually all the style
+parameters for any level of entry (beneath titles) in the tables
+of contents. The number of arguments can run long, so you may
+want to break them into several lines with the backslash character
+(<kbd>\</kbd>).
</p>
-<span class="pre defaults">
-<span id="toc-title">
-.TOC_TITLE_FAMILY default = prevailing doc family
-.TOC_TITLE_FONT default = bold italic
-.TOC_TITLE_SIZE default = +0
-.TOC_TITLE_INDENT default = 0 for TYPESET and TYPEWRITE
+<p>
+<kbd>&lt;level&gt;</kbd> corresponds to a
+<a href="docelement.html#heading">HEADING</a>
+level assigned in the body of the document. The remaining arguments
+are as follows.
+<br/>
+<span class="pre-in-pp">
+ FAMILY &lt;family&gt;
+ FONT &lt;font&gt;
+ SIZE +|-&lt;n&gt;
+ COLOR &lt;color&gt;
+ INDENT &lt;amount&gt;
+ CAPS | NO_CAPS
+</span>
+The arguments may be entered in any order.
+</p>
+
+<p>
+The family, font, size, and color arguments behave identically
+to the individual control macros that govern other tags, therefore see
+<a href="docelement.html#control-macro-args">Arguments to the control macros</a>
+for usage. Their defaults are the same as for paragraphs in
+<a href="definitions.html#running">running text</a>.
+</p>
+
+<p>
+<kbd>INDENT</kbd> lets you indent entries by the amount specified, and
+requires a
+<a href="definitions.html#unitofmeasure">unit of measure</a>.
+Mom sensibly indents and aligns all levels of entry. If you change
+the indent for any level, all levels beneath it are still indented
+according to mom&#8217;s normal arrangement, but with the indent
+assigned to <kbd>level</kbd> taken into account. When you use
+<kbd>INDENT</kbd>, the indent is measured from the left margin of
+the entire text of the previous level, including numbering, if any.
+</p>
+
+<p>
+<kbd>CAPS</kbd> instructs mom to capitalize title entries.
+Capitalization may be enabled or disabled on a per-title basis.
+</p>
+
+<p>
+As an example, if you want a particular entry level to be in
+Helvetica, italics, and slightly larger than other entries, you could
+do either
+<br/>
+<span class="pre-in-pp">
+ .TOC_TITLE_ENTRY FAMILY H FONT I SIZE +.25
</span>
-<span id="toc-head">
-.TOC_HEAD_FAMILY default = prevailing doc family
-.TOC_HEAD_FONT default = bold
-.TOC_HEAD_SIZE default = +.5
-.TOC_HEAD_INDENT default = 18p for TYPESET; 2m for TYPEWRITE
+or
+<br/>
+<span class="pre-in-pp">
+ .TOC_TITLE_ENTRY \
+ FAMILY H
+ FONT I \
+ SIZE +.25
</span>
-<span id="toc-subhead">
-.TOC_SUBHEAD_FAMILY default = prevailing doc family
-.TOC_SUBHEAD_FONT default = roman
-.TOC_SUBHEAD_SIZE default = +0
-.TOC_SUBHEAD_INDENT default = 30p for TYPESET; 4m for TYPEWRITE
+</p>
+
+<!-- -TOC_ENTRY_NUMBERS- -->
+
+<div id="toc-entry-numbers" class="box-macro-args">
+Macro: <b>TOC_ENTRY_NUMBERS</b> <kbd class="macro-args">&lt;FULL&gt; &lt;TRUNCATE&gt; &lt;NONE&gt;</kbd>
+</div>
+
+<p>
+If numbering is enabled for any level of
+<a href="docelement.html#heading">HEADING</a>,
+mom, by default, includes the numbering in that level&#8217;s
+entries in table of contents. If you would prefer that
+numbering not be included in the table of contents,
+issue <kbd>.TOC_ENTRY_NUMBERS&nbsp;NONE</kbd>. If
+you&#8217;d like to include numbering, but not the full,
+concatenated numbering used in the body of the document, issue
+<kbd>.TOC_ENTRY_NUMBERS&nbsp;TRUNCATE</kbd>.
+</p>
+
+<p>
+Assuming numbering is enabled for HEADINGs 1, 2, and 3,
+<kbd>.TOC_ENTRY_NUMBERS FULL</kbd> (mom&#8217;s default), would
+result in
+<br/>
+<span class="pre-in-pp">
+ 1. Level-1 entry
+ 1.1. Level-2 entry
+ 1.1.1. Level-3 entry
+ 2. Level-1 entry
+ 2.1. Level-2 entry
+ 2.1.1. Level-3 entry
</span>
-<span id="toc-parahead">
-.TOC_PARAHEAD_FAMILY default = prevailing doc family
-.TOC_PARAHEAD_FONT default = italic
-.TOC_PARAHEAD_SIZE default = +0
-.TOC_PARAHEAD_INDENT default = 42p for TYPESET; 6m for TYPEWRITE
+whereas <kbd>.TOC_ENTRY_NUMBERS TRUNCATE</kbd> would produce
+<br/>
+<span class="pre-in-pp">
+ 1. Level-1 entry
+ 1. Level-2 entry
+ 1. Level-3 entry
+ 2. Level-1 entry
+ 1. Level-2 entry
+ 1. Level-3 entry
</span>
-.TOC_PN_FAMILY default = prevailing doc family
-.TOC_PN_FONT default = roman
-.TOC_PN_SIZE default = +0
+and <kbd>.TOC_ENTRY_NUMBERS NONE</kbd> would remove numbering
+completely.
+<br/>
+<span class="pre-in-pp">
+ Level-1 entry
+ Level-2 entry
+ Level-3 entry
+ Level-1 entry
+ Level-2 entry
+ Level-3 entry
</span>
+</p>
+
+<div class="box-tip">
+<p class="tip">
+<span class="note">Note:</span>
+<kbd>.TOC_ENTRY_NUMBER TRUNCATE</kbd> removes the numbering
+associated with title entries if
+<a href="docelement.html#prefix-chapter-number">PREFIX_CHAPTER_NUMBER</a>
+is enabled.
+</p>
</div>
+
<h4 id="toc-additional" class="docs" style="margin-top: -1em;">5. Additional table of contents control macros</h4>
<p>
-The following four macros allow you to
+The following five macros allow you to
</p>
<ul style="margin-top: -.5em; margin-left: -.5em;">
<li>instruct mom to <a href="#toc-appends-author">append author(s) to</a> <a href="docprocessing.html#title">TITLE</a> <a href="toc-appends-author">entries</a></li>
<li><a href="#toc-title-entry">alter the wording of</a> <a href="docprocessing.html#title">TITLE</a> <a href="#toc-title-entry">entries</a></li>
+ <li>instruct mom to <a href="#space-toc-items">space table of contents entries</a> pleasingly</li>
<li>establish <a href="#toc-padding">how many placeholders to leave for page number references</a></li>
<li><a href="#toc-rv-switch">switch table of contents page margins</a> should they be incorrect for recto/verso printing</li>
</ul>
@@ -610,7 +855,7 @@ The following four macros allow you to
<!-- -TOC_APPENDS_AUTHOR- -->
<div id="toc-appends-author" class="box-macro-args">
-Macro: <b>TOC_APPENDS_AUTHOR</b> <kbd class="macro-args">&lt;none&gt; | &lt;&quot;name(s) of authors&quot;&gt;</kbd>
+Macro: <b>TOC_APPENDS_AUTHOR</b> <kbd class="macro-args">&lt;none&gt; | &quot;&lt;name(s) of authors&gt;&quot;</kbd>
</div>
<p>
@@ -645,7 +890,7 @@ would be a good way to identify them in the table of contents.
<!-- -TOC_TITLE_ENTRY- -->
<div id="toc-title-entry" class="box-macro-args">
-Macro: <b>TOC_TITLE_ENTRY</b> <kbd class="macro-args">&lt;&quot;alternate wording for a title entry in the toc&quot;&gt;</kbd>
+Macro: <b>TOC_TITLE_ENTRY</b> <kbd class="macro-args">&quot;&lt;alternate wording for a title entry in the toc&gt;&quot;</kbd>
</div>
<p>
@@ -690,6 +935,20 @@ would identify chapter 6 in the table of contents simply as
&#8220;Burning Bush&#8221;.
</p>
+<!-- -SPACE_TOC_ITEMS- -->
+
+<div id="space-toc-items" class="box-macro-args">
+Macro: <b>SPACE_TOC_ITEMS</b></kbd>
+</div>
+
+<p>
+If you&#8217;d like mom to add a small amount of space between table
+of contents entry levels, use <kbd>.SPACE_TOC_ITEMS</kbd>. Mom will
+visually group entry levels in a way that's pleasing to the eye.
+The only catch to this macro is that the bottom margins of table of
+contents pages may not align perfectly.
+</p>
+
<!-- -TOC_PADDING- -->
<div id="toc-padding" class="box-macro-args">
@@ -715,7 +974,8 @@ Macro: <b>TOC_RV_SWITCH</b>
<p>
TOC_RV_SWITCH doesn&#8217;t take an argument. It simply instructs
-mom to switch the left and right margins of
+mom to switch the left and right margins of the first table of
+contents page in
<a href="rectoverso.html#recto-verso">recto/verso</a>
documents should the table of contents happen to begin on an even
page when you want an odd, or vice versa.
diff --git a/contrib/mom/momdoc/toc.html b/contrib/mom/momdoc/toc.html
index 1cc1573..fcab30f 100644
--- a/contrib/mom/momdoc/toc.html
+++ b/contrib/mom/momdoc/toc.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter (pschaffter@ncf.ca).
+Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,12 +15,13 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
- <title>Mom, version 1.6 -- Table of Contents</title>
+ <title>Mom, version 2.0-a -- Table of Contents</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
</head>
@@ -30,22 +32,22 @@ FDL in the main directory of the groff source package.
<div class="page">
<div class="version">
- mom, version 1.6
+ mom, version 2.0-a
</div>
<h1 class="toc" style="margin-top: 9px;">Table of Contents</h1>
- <p style="margin-left: 2.75em; margin-right: 2.75em;">
- The table of contents has grown quite large. To ease navigation,
+ <p style="margin-left: 2.75em; margin-right: 2.75em; text-align:center ">
+ The table of contents is large. To ease navigation,
click on any link in the
+ <br/>
<a href="#quick-toc">Quick Table of Contents</a>
- to go to the corresponding entry in the the
+ <br/>
+ which will take you to the corresponding entry in the
+ <br/>
<a href="#full-toc">Full Table of Contents</a>.
- </p>
-
- <p style="margin-top: -.5em; margin-left: 2.75em; margin-right: 2.5em;">
- Alternatively, if you've been using mom for a while, you might
- prefer the
+ <br/>
+ If you've been using mom for a while, you may prefer the
<a href="macrolist.html#top">Quick Reference Guide</a>.
</p>
@@ -56,7 +58,11 @@ FDL in the main directory of the groff source package.
<h2 id="quick-toc" class="toc" style="margin-top: 18px; text-align: center;">Quick Table of Contents</h2>
<div style="width: 50%; margin-top: .75em; margin-left: 12px; float: left;">
- <h3 id="introductory" class="toc"><a style="color: #6e70cc" href="#what">INTRODUCTORY STUFF</a></h3>
+ <h3 id="version-2" class="toc"><a style="color: #6e70cc" href="#v2-notes">VERSION 2.0 NOTES</a></h3>
+ <br/>
+
+ <h3 id="introductory" class="toc"><a style="color: #6e70cc" href="#what">INTRODUCTION TO MOM</a></h3>
+
<ul class="toc">
<li><a href="#what">What is mom?</a></li>
<li><a href="#defs">Definitions of terms used in this manual</a></li>
@@ -91,8 +97,8 @@ FDL in the main directory of the groff source package.
<li><a href="#doc-defaults">Document defaults</a></li>
<li><a href="#prelim">Preliminary document setup</a></li>
<li><a href="#typemacdoc">Behaviour of the typesetting macros during document processing</a></li>
- <li><a href="#tags">The document element tags</a> &ndash; heads, paragraphs, subheads, footnotes, etc.</li>
- <li><a href="#images">Inserting images into a document</a></li>
+ <li><a href="#tags">The document element tags</a> &ndash; headings, paragraphs, quotes, footnotes, etc.</li>
+ <li><a href="#images">Graphics and floats</a></li>
<li><a href="#hdrftr">Page headers and footers</a></li>
<li><a href="#paginate">Pagination</a></li>
<li><a href="#rv">Recto/verso printing and collating</a></li>
@@ -105,7 +111,6 @@ FDL in the main directory of the groff source package.
</ul></li>
<li style="margin-top: -1em;"><a href="#quick">Quick reference guide</a></li>
<li><a href="#appendices">Appendices</a></li>
- <li><a href="#reserved">Reserved words (macros, strings, registers)</a></li>
</ul>
</div>
@@ -116,6 +121,23 @@ FDL in the main directory of the groff source package.
<h2 id="full-toc" class="toc" style="margin-top: 24px; text-align: center;">Full Table of Contents</h2>
<div style="margin-left: 12px;">
+ <h3 id="v2-notes" class="toc"><a style="color: #6e70cc" href="version-2.html#top">VERSION 2.0 NOTES</a></h3>
+
+ <ul class="toc">
+ <li><a href="version-2.html#prefatory">Prefatory comments</a></li>
+ <li><a href="version-2.html#differences">Differences between 2.0 and 1.x</a>
+ <ul>
+ <li><a href="version-2.html#pdf-support">PDF Support</a></li>
+ <li><a href="version-2.html#covers">Covers</a></li>
+ <li><a href="version-2.html#headings">Headings</a></li>
+ <li><a href="version-2.html#margin-notes">Margin notes</a></li>
+ <li><a href="version-2.html#floats">Floats</a></li>
+ <li><a href="version-2.html#table-of-contents">Table of Contents</a></li>
+ </ul></li>
+ <li><a href="version-2.html#pdfmom">The <strong>pdfmom</strong> wrapper around groff</a></li>
+ <li><a href="version-2.html#install-font">The <strong>install-font</strong> script</a></li>
+ </ul>
+
<h3 id="what" class="toc"><a style="color: #6e70cc" href="intro.html#top">1. WHAT IS MOM?</a></h3>
<ul class="toc">
@@ -125,9 +147,10 @@ FDL in the main directory of the groff source package.
<li><a href="intro.html#intro-philosophy">1.4 Mom's philosophy</a></li>
<li><a href="intro.html#intro-documentation">1.5 A note on mom's documentation</a>
<ul>
- <li><a href="intro.html#macro-args">1.5.1 How to read macro arguments</a></li>
- <li><a href="intro.html#toggle-macro">1.5.2 &quot;Toggle&quot; macros</a></li>
- <li><a href="intro.html#examples">1.5.3 Examples</a></li>
+ <li><a href="intro.html#canonical">1.5.1 Canonical reference materials</a></li>
+ <li><a href="intro.html#macro-args">1.5.2 How to read macro arguments</a></li>
+ <li><a href="intro.html#toggle-macro">1.5.3 &#8220;Toggle&#8221; macros</a></li>
+ <li><a href="intro.html#examples">1.5.4 Examples</a></li>
</ul>
</li>
</ul>
@@ -145,9 +168,12 @@ FDL in the main directory of the groff source package.
<ul class="toc">
<li><a href="using.html#using-intro">3.1 Introduction</a></li>
<li><a href="using.html#using-macros">3.2 How to input mom&#8217;s macros</a></li>
- <li><a href="using.html#using-previewing">3.3 How to preview documents</a></li>
- <li><a href="using.html#using-saving">3.4 Saving documents</a></li>
- <li><a href="using.html#using-printing">3.3 Printing &mdash; invoking groff with mom</a></li>
+ <li><a href="using.html#viewing">3.3 Processing and viewing documents</a>
+ <ul>
+ <li><a href="using.html#pdf">Mom and pdf</a></li>
+ <li><a href="using.html#pdfmom">pdfmom</a></li>
+ </ul></li>
+ <li><a href="using.html#previewing">3.4 Automatic previewing of documents</a></li>
</ul>
<!-- -TYPESETTING MACROS- -->
@@ -156,7 +182,7 @@ FDL in the main directory of the groff source package.
<ul class="toc">
<li><a id="type-intro" href="typesetting.html#typesetting-intro">4.1 Introduction to the typesetting macros</a></li>
- <li><a id="page" href="typesetting.html#page-setup-intro">4.2 Paper and page Setup</a> &ndash; paper size and page margins
+ <li><a id="page" href="typesetting.html#page-setup-intro">4.2 Page setup</a> &ndash; paper size and page margins
<ul>
<li><a href="typesetting.html#index-page-setup">4.2.1 Macro list</a></li>
</ul></li>
@@ -237,17 +263,15 @@ FDL in the main directory of the groff source package.
<h3 id="doc-proc" class="toc"><a style="color: #6e70cc" href="docprocessing.html#top">5. DOCUMENT PROCESSING WITH MOM</a></h3>
<ul class="toc">
<li><a href="docprocessing.html#docprocessing-intro">5.1 Introduction to document processing</a></li>
- <li><a id="doc-defaults" href="docprocessing.html#defaults">5.2 Document defaults</a>
+ <li><a id="doc-defaults" href="docprocessing.html#defaults">5.2 Document defaults</a> &ndash; papersize, margins, etc.
<ul>
- <li><a href="docprocessing.html#leading-note">5.2.1 Important note on leading/spacing and bottom margins</a>
- <ul>
- <li><a href="docprocessing.html#shim">5.2.1.1 The SHIM macro</a> &ndash; to get document leading back on track</li>
- </ul></li>
+ <li><a href="docprocessing.html#leading-note">5.2.1 Important note on leading/spacing and bottom margins</a></li>
+ <li><a href="docprocessing.html#shim">5.2.1 The SHIM macro</a> &ndash; flexible spacer to keep document leading back on track</li>
</ul></li>
- <li><a id="prelim" class="highlight" href="docprocessing.html#setup">5.3 PRELIMINARY DOCUMENT SETUP</a>
+ <li><a id="prelim" href="docprocessing.html#setup" class="highlight">5.3 PRELIMINARY DOCUMENT SETUP</a>
<ul>
- <li><a href="docprocessing.html#docprocessing-tut" class="highlight">5.3.1 Tutorial</a> &ndash; setting up a mom document</li>
- <li><a href="docprocessing.html#reference-macros" class="highlight">5.3.2 The reference macros</a> &ndash; meta-information mom needs to do her job
+ <li><a href="docprocessing.html#docprocessing-tut">5.3.1 Tutorial</a> &ndash; setting up a mom document</li>
+ <li><a href="docprocessing.html#reference-macros">5.3.2 The reference macros</a> &ndash; metadata mom needs to do her job
<ul>
<li><a href="docprocessing.html#title">5.3.2.1 TITLE</a></li>
<li><a href="docprocessing.html#doc-title">5.3.2.2 DOCTITLE</a></li>
@@ -261,37 +285,41 @@ FDL in the main directory of the groff source package.
<li><a href="docprocessing.html#misc">5.3.2.10 MISC</a></li>
<li><a href="docprocessing.html#covertitle">5.3.2.11 COVERTITLE</a></li>
<li><a href="docprocessing.html#covertitle">5.3.2.12 DOC_COVERTITLE</a></li>
+ <li><a href="docprocessing.html#pdftitle">5.3.2.12 PDF_TITLE</a></li>
</ul></li>
- <li><a href="docprocessing.html#docstyle-macros" class="highlight">5.3.3 The docstyle macros</a> &ndash; general appearance; what kind of document you're creating, and how you want it to look overall
+ <li><a href="docprocessing.html#docstyle-macros">5.3.3 The docstyle macros</a> &ndash; base templates; what kind of document you're creating, how you want it to look overall
<ul>
<li><a href="docprocessing.html#doctype">5.3.3.1 DOCTYPE</a> &ndash; the kind of document</li>
<li><a href="docprocessing.html#printstyle">5.3.3.2 PRINTSTYLE</a> &ndash; typeset or &#8220;typewritten, double-spaced&#8221;</li>
<li><a href="docprocessing.html#copystyle">5.3.3.3 COPYSTYLE</a> &ndash; draft or final</li>
</ul></li>
- <li><a href="docprocessing.html#start-macro" class="highlight">5.3.4 Initiate document processing</a>
+ <li><a href="docprocessing.html#start-macro">5.3.4 Initiate document processing</a>
<ul>
<li><a href="docprocessing.html#start">5.3.4.1 START</a> &ndash; the required macro to initiate document processing</li>
</ul></li>
- <li><a href="docprocessing.html#style-before-start" class="highlight">5.3.5 Establishing type and formatting parameters before START</a>
+ <li><a href="docprocessing.html#docheader">5.3.5 Managing the DOCHEADER</a> &ndash; title, author, etc. on first page</li>
<ul>
- <li><a href="docprocessing.html#type-before-start">5.3.5.1 Use of the typesetting macros before START</a>
+ <li><a href="docprocessing.html#docheader-control">5.3.5.1 DOCHEADER control</a></li>
+ </ul></li>
+ <li><a href="docprocessing.html#columns-intro">5.3.6 Setting documents in columns</a></li>
+ <li><a href="docprocessing.html#style-before-start">5.3.7 Establishing type and formatting parameters <span style="font-style: italic">before</span> START</a>
+ <ul>
+ <li><a href="docprocessing.html#type-before-start">5.3.7.1 Use of the typesetting macros before START</a>
<ul class="fourth-level">
- <li>&ndash; <a href="docprocessing.html#include">5.3.5.1.1 Including (sourcing) style sheets and files</a></li>
- <li>&ndash; <a href="docprocessing.html#color">5.3.5.1.2 Initializing colours</a></li>
+ <li>&ndash; <a href="docprocessing.html#include">5.3.7.1.1 Including (sourcing) style sheets and files</a></li>
+ <li>&ndash; <a href="docprocessing.html#color">5.3.7.1.2 Initializing colours</a></li>
</ul></li>
- <li><a href="docprocessing.html#doc-lead-adjust">5.3.5.2 DOC_LEAD_ADJUST</a> &ndash; adjust document
+ <li><a href="docprocessing.html#doc-lead-adjust">5.3.7.2 DOC_LEAD_ADJUST</a> &ndash; adjust document
<a href="definitions.html#leading">leading</a>
to fill pages
<ul class="fourth-level">
- <li>&ndash; <a href="docprocessing.html#shim">5.3.5.2.1 SHIM</a> &ndash; macro to get document leading back on track</li>
+ <li>&ndash; <a href="docprocessing.html#shim">5.3.6.7.1 SHIM</a> &ndash; flexible spacer to keep document leading back on track</li>
</ul></li>
- <li><a href="docprocessing.html#docheader">5.3.5.3 Managing the document header</a></li>
- <li><a href="docprocessing.html#columns-intro">5.3.5.4 COLUMNS</a> &ndash; setting documents in columns</li>
</ul></li>
- <li><a href="docprocessing.html#style-after-start" class="highlight">5.3.6 Changing basic type and formatting parameters after START</a>
+ <li><a href="docprocessing.html#style-after-start">5.3.8 Changing basic type and formatting parameters <span style="font-style: italic">after</span> START</a>
<ul>
- <li><a id="typemacdoc" href="docprocessing.html#behaviour">5.3.6.1 Behaviour of the typesetting macros during document processing</a></li>
- <li><a href="docprocessing.html#intro-doc-param">5.3.6.2 Post-START global style change macros</a>
+ <li><a id="typemacdoc" href="docprocessing.html#behaviour">5.3.8.1 Behaviour of the typesetting macros during document processing</a></li>
+ <li><a href="docprocessing.html#intro-doc-param">5.3.8.2 Post-START global style-change macros</a>
<ul class="fourth-level">
<li>&ndash; <a href="docprocessing.html#index-doc-param">Macro list</a></li>
</ul></li>
@@ -306,21 +334,19 @@ FDL in the main directory of the groff source package.
</ul></li>
<li><a href="docelement.html#epigraph-intro">5.4.2 Epigraphs</a></li>
<li><a href="docelement.html#pp-intro">5.4.3 Paragraphs</a></li>
- <li><a href="docelement.html#head-intro">5.4.4 Main heads</a></li>
- <li><a href="docelement.html#subhead-intro">5.4.5 Subheads</a></li>
- <li><a href="docelement.html#parahead-intro">5.4.6 Paragraph heads</a></li>
- <li><a href="docelement.html#linebreak-intro">5.4.7 Linebreaks</a> &ndash; author linebreaks (section breaks)</li>
- <li><a href="docelement.html#quote-intro">5.4.8 Quotes</a> &ndash; line for line poetic quotes or unformatted, verbatim text (e.g. blocks of code)</li>
- <li><a href="docelement.html#blockquote-intro">5.4.9 Blockquotes</a> &ndash; cited material</li>
- <li><a href="docelement.html#code">5.4.10 Code</a> &ndash; inserting code snippets</li>
- <li><a href="docelement.html#list-intro">5.4.11 Lists</a> &ndash; nested lists</li>
- <li><a href="docelement.html#number-lines-intro">5.4.12 Line numbering</a></li>
- <li><a href="docelement.html#footnote-intro">5.4.13 Footnotes</a></li>
- <li><a href="docelement.html#endnote-intro">5.4.14 Endnotes</a></li>
- <li><a href="docelement.html#margin-notes-intro">5.4.15 Margin notes</a></li>
- <li><a href="docelement.html#finis-intro">5.4.16 Document termination string</a> &ndash; FINIS</li>
+ <li><a href="docelement.html#heading-intro">5.4.4 Headings</a></li>
+ <li><a href="docelement.html#linebreak-intro">5.4.5 Linebreaks</a> &ndash; author linebreaks (section breaks)</li>
+ <li><a href="docelement.html#quote-intro">5.4.6 Quotes</a> &ndash; line for line poetic quotes or unformatted, verbatim text (e.g. blocks of code)</li>
+ <li><a href="docelement.html#blockquote-intro">5.4.7 Blockquotes</a> &ndash; cited material</li>
+ <li><a href="docelement.html#code">5.4.8 Code</a> &ndash; inserting code snippets</li>
+ <li><a href="docelement.html#list-intro">5.4.9 Lists</a> &ndash; nested lists</li>
+ <li><a href="docelement.html#number-lines-intro">5.4.10 Line numbering</a></li>
+ <li><a href="docelement.html#footnote-intro">5.4.11 Footnotes</a></li>
+ <li><a href="docelement.html#endnote-intro">5.4.12 Endnotes</a></li>
+ <li><a href="docelement.html#margin-notes-intro">5.4.13 Margin notes</a></li>
+ <li><a href="docelement.html#finis-intro">5.4.14 Document termination string</a> &ndash; FINIS</li>
</ul></li>
- <li><a id="images" class="highlight" href="images.html#top">5.5 INSERTING IMAGES</a></li>
+ <li><a id="images" class="highlight" href="images.html#top">5.5 GRAPHICS AND FLOATS</a></li>
<li><a id="hdrftr" class="highlight" href="headfootpage.html#top">5.6 PAGE HEADERS AND FOOTERS</a>
<ul>
<li><a href="headfootpage.html#headfootpage-intro">5.6.1 Introduction</a></li>
@@ -355,30 +381,33 @@ FDL in the main directory of the groff source package.
<li><a id="cover" class="highlight" href="cover.html#top">5.9 COVER PAGES</a></li>
<li><a id="tocs" class="highlight" href="tables-of-contents.html#top">5.10 TABLES OF CONTENTS</a>
<ul>
- <li><a href="tables-of-contents.html#toc-behaviour">5.10.1 Table of contents behaviour</a></li>
- <li><a href="tables-of-contents.html#psselect">5.10.2 Using psselect to put tables of contents where you want them</a></li>
- <li><a href="tables-of-contents.html#toc-control">5.10.3 Table of contents control macros</a></li>
+ <li><a href="tables-of-contents.html#toc-intro">5.10.1 Introduction</a> &ndash; the TOC macro</li>
+ <li><a href="tables-of-contents.html#toc-appearance">5.10.2 Table of contents appearance and behaviour</a></li>
+ <li><a href="tables-of-contents.html#pdf-output">5.10.3 PDF output</a></li>
+ <li><a href="tables-of-contents.html#positioning">5.10.4 Positioning the table of contents</a>
+ <ul>
+ <li><a href="tables-of-contents.html#auto-relocate-toc">5.10.2 Automatic PDF relocation of the Table of Contents</a></li>
+ <li><a href="tables-of-contents.html#psselect">5.10.2 Using psselect to relocate the TOC in PostScript documents</a></li>
+ </ul></li>
+ <li><a href="tables-of-contents.html#index-toc-control">5.10.5 Table of contents control macros</a></li>
</ul></li>
<li><a id="ref" class="highlight" href="refer.html#top">5.11 BIBLIOGRAPHIES AND REFERENCES</a></li>
<li><a id="letter" class="highlight" href="letters.html#top">5.12 WRITING LETTERS</a>
<ul>
<li><a href="letters.html#letters-intro">5.11.1 Introduction to writing letters</a></li>
- <li><a href="letters.html#tutorial">5.11.2 Tutorial on writing letters</a></li>
- <li><a href="letters.html#letters-defaults">5.11.3 Default style for letters</a></li>
+ <li><a href="letters.html#letters-tutorial">5.11.2 Tutorial on writing letters</a></li>
+ <li><a href="letters.html#letters-defaults">5.11.3 Default letter style</a></li>
<li><a href="letters.html#index-letters-macros">5.11.4 The letter macros</a></li>
</ul></li>
</ul>
<h3 id="quick" class="toc highlight"><a style="color: #6e70cc" href="macrolist.html#top">6. QUICK REFERENCE GUIDE</a></h3>
<h3 id="appendices" class="toc" style="margin-top: .5em;"><a style="color: #6e70cc" href="appendices.html#top">7. APPENDICES</a></h3>
<ul class="toc">
- <li><a href="appendices.html#moredoc">7.1 Notes on the documentation</a></li>
- <li><a href="appendices.html#fonts">7.2 Adding PostScript fonts to groff</a>
+ <li><a href="appendices.html#fonts">7.2 Adding fonts to groff</a>
<ul>
- <li><a href="appendices.html#howto">7.2.1 How to create a PostScript font for use with groff</a></li>
+ <li><a href="appendices.html#steps">7.2.1 Step-by-step instructions</a></li>
</ul></li>
<li><a href="appendices.html#codenotes">7.3 Some reflections on mom</a></li>
- <li id="reserved"><a href="reserved.html#top">7.5 List of reserved words</a>
- &ndash; complete list of macros, registers, strings, aliases and diversions</li>
<li><a href="appendices.html#contact">7.5 Contact the author</a></li>
</ul>
</div>
diff --git a/contrib/mom/momdoc/typesetting.html b/contrib/mom/momdoc/typesetting.html
index 272250a..e3bab79 100644
--- a/contrib/mom/momdoc/typesetting.html
+++ b/contrib/mom/momdoc/typesetting.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -148,7 +150,7 @@ independent of the
With them, you can typeset on-the-fly. Book covers, your best
friend&#8217;s résumé, a poster for a lost dog&mdash;none of these
requires structured document processing (page headers, paragraphs,
-heads, footnotes, etc). What they do demand is precise control over
+headings, footnotes, etc). What they do demand is precise control over
every element on the page. The typesetting macros give you that
control.
</p>
@@ -162,10 +164,14 @@ control.
<p>
The page setup macros establish the physical dimensions of your page
and the margins you want it to have. Groff has defaults for these,
-but I recommend setting them at the top of your files anyway unless
-you&#8217;re using mom&#8217;s
-<a href="docprocessing.html#docprocessing">document processing macros</a>
-and are content with her defaults.
+but I recommend setting them at the top of your files anyway.
+</p>
+
+<p>
+If you&#8217;re using mom&#8217;s
+<a href="docprocessing.html#docprocessing">document processing macros</a>,
+these macros must come after
+<a href="docprocessing.html#printstyle">PRINTSTYLE</a>.
</p>
<p>
@@ -182,47 +188,41 @@ some or all of the page margins with a single macro.
<h3 id="page-setup-note" class="docs notes">Important note on page dimensions and papersize</h3>
<p style="margin-top: .5em;">
-Mom&#8217;s macros for setting up the desired size of printer sheets
-tell mom and groff about the page dimensions, but not the driver
-responsible for generating the final PostScript file. You must take
-care of this yourself.
+When mom files are processed with
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>,
+which is recommended (see
+<a href="http://www.schaffter.ca/mom/pdf/mom-pdf.pdf"><span class="book-title">Producing PDFs with groff and mom</span></a>),
+page dimensions are automatically passed to groff, and you don't
+have to worry about them.
</p>
<p>
-If you routinely print documents on the same size paper (you
-probably do), the easiest way to make sure the PostScript driver
-knows about your papersize is to edit the file
+Mom documents processed directly with <strong>groff</strong>, or with
+<strong>pdfroff</strong>, or with <strong>pdfmom -Tps</strong>, require
+that the papersize be given on the command line as well if the
+papersize is different from the default on your system. You can
+verify&mdash;or change&mdash;the default papersize by inspecting the
+files
<br/>
<span class="pre-in-pp">
&lt;path to groff&gt;/font/devps/DESC
</span>
-In it, you will see a line that reads:
-<span class="pre-in-pp">
- papersize &lt;papersize&gt;
-</span>
-Change <kbd>&lt;papersize&gt;</kbd> to the name of your papersize
-(e.g. a4, letter, legal, etc.; a full list of valid named papersizes
-that can be used in DESC is found in <kbd>man papersize</kbd>). If
-your routine papersize is non-standard (i.e. doesn&#8217;t have a
-&#8220;name&#8221;) you can give the dimensions for your papersize,
-separated by a comma. The dimensions must have a
-<a href="definitions.html#unitofmeasure">unit of measure</a>
-appended. Valid units of measure for papersize are
-inches (<kbd>i</kbd>),
-centimeters (<kbd>c</kbd>),
-picas (<kbd>P</kbd>) and
-points (<kbd>p</kbd>).
-For example, to set up a routine papersize of 8 inches by 10 inches,
-the line would look like this:
+and
<br/>
<span class="pre-in-pp">
- papersize 8i,10i
+ &lt;path to groff&gt;/font/devpdf/DESC
</span>
-Having set up your routine papersize, if you occasionally need to
-print on sheets that do not conform to its dimensions, you must, in
-addition to setting the page dimensions in your mom file, invoke
-groff on the command line with the <kbd>-P-p&lt;papersize&gt;</kbd>
-option.
+(See <strong>man papersize</strong> for list of valid papersize
+names, as well as for instructions on how to enter a non-standard
+size.)
+</p>
+
+<p>
+If you occasionally need to print on sheets that do not
+conform to your default papersize, you must, in addition
+to setting the page dimensions in your mom file, pass the
+<kbd>-P-p&lt;papersize&gt;</kbd> option to <strong>groff</strong>,
+<strong>pdfroff</strong>, or <strong>pdfmom -Tps</strong>.
</p>
<p>
@@ -235,18 +235,22 @@ and
or
<a href="#paper">PAPER</a>,
or
-<a href="#page">PAGE</a>)
-in your mom file, when you invoke groff to process the file, the
-command would look like this:
+<a href="#page">PAGE</a>),
+you must include <kbd>-P-p&lt;papersize&gt;</kbd> on whichever
+command line you use, eg
<br/>
<span class="pre-in-pp">
- groff -mom -P-plegal
+ pdfmom -Tps -mom -P-plegal
</span>
+Remember, though, that
+<a href="using.html#pdfmom" style="font-weight: bold">pdfmom</a>,
+with no <kbd>-Tps</kbd> option, is smart enough to know the
+papersize from the dimensions provided in your mom file.
</p>
-<p class="tip-bottom" style="margin-top: -1em;">
+<p class="tip-bottom">
Consult <kbd>man groff</kbd>, <kbd>man grops</kbd> and <kbd>man
-groff-font</kbd> for additional information concerning papersizes,
+groff_font</kbd> for additional information concerning papersizes,
as well as information on printing in &#8220;landscape&#8221;
orientation.
</p>
@@ -477,7 +481,7 @@ and right margin, like this:
That way, you don&#8217;t have to worry about calculating the line
length. On the other hand, if you know the line length for a patch
of type should be 17 picas and 3 points, entering the line length
-with LL is much easier than calculating the right margin, e.g.
+with LL is much easier than calculating the right margin, eg
<br/>
<span class="pre-in-pp">
.LL 17P+3p
@@ -727,18 +731,6 @@ you to the top of a new one (subject to the top margin set with
<a href="#t-margin">T_MARGIN</a>).
</p>
-<div class="box-tip">
-<p class="tip">
-<span class="experts">Experts:</span>
-Prior to version 1.1.9, NEWPAGE was simply an alias of
-<kbd>.bp</kbd>. As of 1.1.9, NEWPAGE, is its own mom macro. While
-the new macro should be backwardly compatible with documents created
-using pre-1.1.9 moms, I suggest that from this version onward, if
-you were in the habit of using <kbd>.bp</kbd> whenever you wanted to
-break to a new page, you now begin to use NEWPAGE instead.
-</p>
-</div>
-
<div class="rule-short" style="margin-bottom: 24px;"><hr/></div>
<!-- ==================================================================== -->
@@ -789,7 +781,7 @@ Macro: <b>FAMILY</b> <kbd class="macro-args">&lt;family&gt;</kbd>
<p>
FAMILY takes one argument: the name of the
<a href="definitions.html#family">family</a>
-you want. Groff comes with a number of PostScript families, each
+you want. Groff comes with a small set of basic families, each
identified by a 1-, 2-or 3-letter mnemonic. The standard families
are:
<br/>
@@ -825,10 +817,10 @@ only exists in one style: Italic (<kbd>I</kbd>). Therefore,
</p>
<p id="fam-add-note" class="tip-bottom">
-<span class="additional-note">Additional note:</span> As of mom,
-version 1.1.9-a, if you are running a version of groff lower than
-1.19.2, you must follow all FAMILY requests with a FT request,
-otherwise mom will set all type up to the next FT request in the
+<span class="additional-note">Additional note:</span>
+If you are running a version of groff lower than 1.19.2, you must
+follow all FAMILY requests with a FT request, otherwise mom will set
+all type up to the next FT request in the
<a href="#fallback-font">fallback font</a>.
</p>
</div>
@@ -871,7 +863,7 @@ that&#8217;s valid for Helvetica.
<p>
Please see the Appendices,
-<a href="appendices.html#fonts">Adding PostScript fonts to groff</a>,
+<a href="appendices.html#fonts">Adding fonts to groff</a>,
for information on adding fonts and families to groff, as well as
to see a list of the extensions mom provides to groff&#8217;s basic
<b>R</b>, <b>I</b>, <b>B</b>, <b>BI</b> styles.
@@ -879,10 +871,10 @@ to see a list of the extensions mom provides to groff&#8217;s basic
<div class="box-tip">
<p class="tip">
-<span class="experts">Experts:</span> If you add other PostScript
-families to groff&#8217;s /font/devps directory, I recommend
-following the groff standard for naming families and fonts. For
-example, if you add the Garamond family, name the font files
+<span class="tip">Suggestion:</span> When adding
+families to groff, I recommend following the established standard
+for the naming families and fonts. For example, if you add the
+Garamond family, name the font files
<br/>
<span class="pre-in-pp">
GARAMONDR
@@ -934,15 +926,20 @@ font.
</p>
<p>
-(As of mom, version 1.1.9-a, the range of arguments that can be
-passed to FT has been considerably extended, allowing access to a
-greater variety of font
+Mom considerably extends the range of arguments you can pass to FT,
+making it more convenient to add and access fonts of differing
<a href="definitions.html#weight">weights</a>
and
-<a href="definitions.html#shape">shapes</a>.
-Please see the
-<kbd><a href="#font-note">NOTE</a></kbd>,
-below.)
+<a href="definitions.html#shape">shapes</a>
+within the same family. Have a look
+<a href="appendices.html#style-extensions">here</a>
+for a list of the weight/style arguments mom allows. Be aware,
+though, that you must have the fonts, correctly installed and named,
+in order to use the arguments. (See
+<a href="appendices.html#fonts">Adding fonts to groff</a>
+for instructions and information.) Please also read the
+<a href="#fam-add-note">ADDITIONAL NOTE</a>
+found in the description of the FAMILY macro.
</p>
<p>
@@ -975,29 +972,6 @@ For inline control of fonts, see
<a href="inlines.html#inline-fonts-mom">Inline Escapes, font control</a>.
</p>
-<div id="font-note" class="box-tip">
-<p class="tip">
-<span class="note">Note:</span> mom, versions 1.1.9-a and higher,
-considerably extends the range of arguments you can pass to FT,
-making it more convenient to add and access fonts of differing
-<a href="definitions.html#weight">weights</a>
-and
-<a href="definitions.html#shape">shapes</a>
-within the same family. Have a look
-<a href="appendices.html#style-extensions">here</a>
-for a list of the weight/style arguments mom
-allows.
-</p>
-</div>
-
-<p>
-Be aware, though, that you must have the fonts, correctly installed
-and named, in order to use the arguments. (See
-<a href="appendices.html#howto">How to create a PostScript font for use with groff</a>
-for how to add fonts to groff.) Please also read the
-<a href="#fam-add-note">ADDITIONAL NOTE</a>
-found in the description of the FAMILY macro.
-</p>
<!-- -FALLBACK_FONT- -->
@@ -1012,7 +986,7 @@ Macro: <b>FALLBACK_FONT</b> <kbd class="macro-args">&lt;fallback font&gt; [ ABOR
<p>
In the event that you pass an invalid argument to
<a href="#font">.FAMILY</a>
-(i.e. a non-existent family), mom, by default, uses the fallback
+(ie a non-existent family), mom, by default, uses the fallback
font, Courier Medium Roman (CR), in order to continue processing
your file.
</p>
@@ -1029,10 +1003,7 @@ would do the trick.
</p>
<p>
-Additionally, if your version of groff accepts accepts &#8221;<kbd>.if
-F</kbd>&#8221; and &#8221;<kbd>.if S</kbd>&#8221; (see
-<a href="#fam-add-note">above</a>),
-mom issues a warning whenever a font style set with
+Mom issues a warning whenever a font style set with
<a href="#font">FT</a>
does not exist, either because you haven&#8217;t registered the
style (see
@@ -1112,7 +1083,7 @@ is measured in points. Therefore, to change the type size to, say,
<span class="pre-in-pp">
.PT_SIZE 11
</span>
-Point sizes may be fractional (e.g. 10.25 or 12.5).
+Point sizes may be fractional (eg 10.25 or 12.5).
</p>
<p>
@@ -1165,7 +1136,7 @@ Macro: <b>LS</b> <kbd class="macro-args">&lt;distance between lines&gt;</kbd>
<p>
LS (Line Space) takes one argument: the distance you want, typically
in points, from baseline to baseline of type. The argument may be
-fractional (e.g. 12.25 or 14.5). Like PT_SIZE, LS does not require
+fractional (eg 12.25 or 14.5). Like PT_SIZE, LS does not require
a unit of measure, since
<a href="definitions.html#leading">leading</a>
is most often given in points. Therefore, to set the linespace to
@@ -1230,7 +1201,7 @@ requests automatically update the linespacing by the autolead amount.
Used in this way, AUTOLEAD does not require a unit of measure;
points is assumed. However, you may use an alternate unit of
measure by appending it to the argument. The argument may be a
-decimal fraction (e.g. .5 or 2.75).
+decimal fraction (eg .5 or 2.75).
</p>
<p>
@@ -1665,23 +1636,17 @@ below.
<i>for the way around this.</i>
</p>
-<p>
-The mnemonic &#8220;EL&#8221; is borrowed from old Compugraphic
-typesetting systems, where it stood for
-"<span style="text-decoration: underline;">E</span>nd <span style="text-decoration: underline;">L</span>ine."
-Conceptually, EL is equivalent to the notion of a carriage return
-with no linefeed.
-</p>
-
<p id="el-example">
-EL&#8217;s function is simple: it breaks a line without advancing
-on the page. As an example of where you might use it, imagine that
-you&#8217;re working from marked-up copy. The markup indicates 24
-points of space between two given lines, but the prevailing line
-spacing is 12.5 points. You may find it more convenient to break
-the first line with EL and instruct mom to advance 24 points to the
-next line instead of calculating the lead that needs to be added to
-12.5 to get 24. To demonstrate:
+EL ("<span style="text-decoration: underline;">E</span>nd <span style="text-decoration: underline;">L</span>ine")
+is conceptually equivalent to the notion of a carriage return with
+no linefeed. Its function is simple: it breaks a line without
+advancing on the page. As an example of where you might use it,
+imagine that you&#8217;re working from marked-up copy. The markup
+indicates 24 points of space between two given lines, but the
+prevailing line spacing is 12.5 points. You may find it more
+convenient to break the first line with EL and instruct mom to
+advance 24 points to the next line instead of calculating the lead
+that needs to be added to 12.5 to get 24. To demonstrate:
<br/>
<span class="pre-in-pp">
.LEFT
@@ -1708,71 +1673,11 @@ don&#8217;t have to recalculate the extra space.
<p>
ALD in the above examples stands for
&#8220;<span style="text-decoration: underline;">A</span>dvance
-<span style="text-decoration: underline;">L</span>ea<span style="text-decoration: underline;">D</span>&#8221;
-(another mnemonic borrowed from Compugraphic), which is covered in
-the section
-<a href="#vertical-movements-intro">Vertical movements</a>.
-</p>
-
-<div class="box-notes">
-<h3 id="el-notes" class="docs notes">Notes</h3>
-
-<p style="margin-top: .5em;">
-In versions of mom prior to 1.1.9, EL did not always work as
-advertised on the last
-<a href="definitions.html#outputline">output line</a>
-of pages that contained a footer trap (e.g. one set with
-<a href="#b-margin">B_MARGIN</a>
-or in documents formatted using the
-<a href="docprocessing.html#docprocessing">document processing macros</a>).
+<span style="text-decoration: underline;">L</span>ea<span style="text-decoration: underline;">D</span>&#8221;,
+which is covered in the section
+<a href="#aldrld-intro">Vertical movements</a>.
</p>
-<p>
-EL has been re-written so that this should no longer be the case.
-However, in order for it to work in the
-<a href="definitions.html#filled">nofill</a>
-modes
-(<a href="#lrc">LEFT</a>,
-<a href="#lrc">RIGHT</a>
-or
-<a href="#lrc">CENTER</a>),
-you must always &#8220;join&#8221; <kbd>.EL</kbd> to
-the line before it using the
-<kbd><a href="#join">\c</a></kbd>
-<a href="definitions.html#inlines">inline escape</a>,
-like this:
-<br/>
-<span class="pre-in-pp">
- .LEFT
- A line I don&#8217;t want to advance\c
- .EL
-</span>
-Conversely, in
-<a href="definitions.html#filled">fill modes</a>
-(<a href="#quad">QUAD LEFT</a>,
-<a href="#quad">QUAD RIGHT</a>,
-<a href="#quad">QUAD CENTER</a>
-or
-<a href="#justify">JUSTIFY</a>),
-the <kbd>\c</kbd> must not be used.
-</p>
-
-<p>
-If EL is used after most macros or groff
-<a href="definitions.html#primitives">primitives</a>
-(see the exception, below), you don&#8217;t have to worry about
-this, regardless of the fill mode. Just type
-<kbd>.EL</kbd>
-</p>
-
-<p class="tip-bottom">
-<span class="experts">Experts:</span> EL is unrelated to
-groff&#8217;s <kbd>.el</kbd>. If you find the similarity confusing,
-you may want to alias EL as something else (but don&#8217;t use EOL;
-mom uses it internally.)
-</p>
-</div>
-
<!-- -SP- -->
<div class="macro-id-overline">
@@ -2005,46 +1910,45 @@ to stretch the word spacing.
</p>
<p>
-Word space is relative to type size. Knowing how it&#8217;s
-calculated is unimportant. What matters is having a sense of how
-the value passed to WS affects the look of your type. Generally,
-in/decreasing the word space by a value of 1 or 2 produces a
-difference that in many cases is scarcely visible; in/decreasing by
-a value of 5 or so produces a subtle but noticeable difference; and
-in/decreasing by a value greater than 10 is always apparent. You
-should preview your work to assess the effect of WS.
+Word space is relative to point size. Generally, in/decreasing the
+word space by a value of 1 or 2 produces a difference that in many
+cases is scarcely visible; in/decreasing by a value between 3 and 5
+produces a subtle but noticeable difference; and in/decreasing by a
+value greater than 6 is almost always apparent. You should preview
+your work to assess the effect of WS.
</p>
<p id="ws-usage">
-WS takes as its argument a number (decimal fractions are allowed)
-preceded by a plus or minus sign. Therefore, to decrease the word
-space slightly, you might enter <br/>
+WS takes as its argument a whole number preceded by a plus or minus
+sign. Therefore, to decrease the word space slightly, you might
+enter
+<br/>
<span class="pre-in-pp">
- .WS -4
+ .WS -2
</span>
To increase it by a noticeable amount, you might enter
<br/>
<span class="pre-in-pp">
- .WS +12
+ .WS +6
</span>
You can reset the word spacing to its previous value by switching
the plus or minus sign, like this:
<br/>
<span class="pre-in-pp">
- .WS +4
+ .WS +2
A line of text
- .WS -4
+ .WS -2
</span>
-The <kbd>.WS&nbsp;-4</kbd> undoes the effect of
-<kbd>.WS&nbsp;+4</kbd>. You can also reset WS to its groff default
+The <kbd>.WS&nbsp;-2</kbd> undoes the effect of
+<kbd>.WS&nbsp;+2</kbd>. You can also reset WS to its groff default
by entering
<br/>
<span class="pre-in-pp">
.WS DEFAULT
</span>
This can be particularly useful if you&#8217;ve been playing around
-with plus and minus values, and can&#8217;t remember by how much you
-have to in/decrease the word space to get it back to normal.
+with plus and minus values, and can&#8217;t remember by how much to
+in/decrease the word space to get it back to normal.
</p>
<!-- -SS- -->
@@ -2078,7 +1982,7 @@ Like
<a href="#ws">WS</a>,
increasing the sentence space by a value of 1 or 2 produces a
difference that in many cases is scarcely visible; increasing by a
-value of 5 or so produces a subtle but noticeable difference (i.e.
+value of 5 or so produces a subtle but noticeable difference (ie
the space between double-spaced input sentences will be slightly but
visibly greater than the space between words); and increasing by a
value greater than 10 is always apparent. You should preview your
@@ -2104,7 +2008,7 @@ at the top of your files.
If you do use SS for something other than ensuring that you
don&#8217;t get unwanted sentence spaces in output copy, you can set
or reset the sentence space to the groff default (the same width
-as a word space, i.e. double-spaced input sentences will appear
+as a word space, ie double-spaced input sentences will appear
double-spaced on output as well) with
<br/>
<span class="pre-in-pp">
@@ -2161,7 +2065,7 @@ to HY, I&#8217;ve broken them down into separate sections.
<h3 class="docs">1.&nbsp;&nbsp;HY</h3>
<p>
-HY by itself (i.e. with no argument) simply turns automatic
+HY by itself (ie with no argument) simply turns automatic
hyphenation on. Any argument other than LINES, MARGIN, SPACE or
DEFAULT, turns automatic hyphenation off. For example, as explained
in
@@ -2182,7 +2086,7 @@ or
HY observes the following default hyphenation rules:
</p>
<ul style="margin-top: -.5em; margin-left: 18px;">
- <li>Last lines (i.e. ones that will spring a trap&mdash;typically
+ <li>Last lines (ie ones that will spring a trap&mdash;typically
the last line on a page) will not be hyphenated.
</li>
<li>The first and last two characters of a word are never
@@ -2209,7 +2113,7 @@ limit to the number of consecutive hyphenated lines.
<span class="note">Note:</span>
<a href="definitions.html#discretionaryhyphen">Discretionary hyphens</a>
count when groff is figuring out how many lines to hyphenate;
-explicit hyphens do not.
+explicit hyphens (ie the actual hyphen character) do not.
</p>
</div>
@@ -2217,7 +2121,7 @@ explicit hyphens do not.
<p>
HY MARGIN sets the amount of room allowed at the end of a line
-before hyphenation is tripped (e.g. if there&#8217;s only 6 points
+before hyphenation is tripped (eg if there&#8217;s only 6 points
left at the end of a line, groff won&#8217;t try to hyphenate the
next word). HY MARGIN only applies if you&#8217;re using
<a href="#quad">QUAD</a>,
@@ -2400,7 +2304,7 @@ recommend previewing your work to assess the effect of RW.
<a href="#br">break</a>
when it&#8217;s invoked if you&#8217;re in one of the
<a href="definitions.html#fill">fill</a>
-modes (i.e.
+modes (ie
<a href="#quad">QUAD</a>
L, R, C, J or
<a href="#justify">JUSTIFY</a>).
@@ -2415,16 +2319,11 @@ that&#8217;s what you want by invoking
<div class="box-important">
<p class="tip">
-<span class="important">IMPORTANT:</span> In versions prior to
-1.1.9-a, RW affected all
-<a href="definitions.html#font">fonts</a>
-in the
-<a href="definitions.html#family">family</a>
-current at the time it was invoked. As of 1.1.9-a, this behaviour
-has been changed. RW affects only the font current at the time
-it&#8217;s invoked, and remains in effect for that font every time
-the font is called, hence must be reset to zero to cancel its effect
-(<kbd>.RW&nbsp;0</kbd>) on that font.
+<span class="important">IMPORTANT:</span>
+RW (and its complement, EW; see below) only affects the current
+font, and remains in effect for that font every time it&#8217;s
+called, hence it must be reset to zero to cancel its effect
+(<kbd>.RW&nbsp;0</kbd>).
</p>
</div>
@@ -2468,7 +2367,7 @@ assess the effect of EW.
<a href="#br">break</a>
when it&#8217;s invoked if you&#8217;re in one of the
<a href="definitions.html#fill">fill</a>
-modes (i.e.
+modes (ie
<a href="#quad">QUAD</a>
L, R, C, J or
<a href="#justify">JUSTIFY</a>).
@@ -2484,16 +2383,11 @@ toggle macro.
<div class="box-important">
<p class="tip">
-<span class="important">IMPORTANT:</span> In versions prior to
-1.1.9-a, EW affected all
-<a href="definitions.html#font">fonts</a>
-in the
-<a href="definitions.html#family">family</a>
-current at the time it was invoked. As of 1.1.9-a, this behaviour
-has been changed. EW affects only the font current at the time
-it&#8217;s invoked, and remains in effect for that font every time
-the font is called, hence must be reset to zero to cancel its effect
-(<kbd>.EW&nbsp;0</kbd>) on that font.
+<span class="important">IMPORTANT:</span>
+EW (and its complement, RW; see above) only affects the current
+font, and remains in effect for that font every time it&#8217;s
+called, hence it must be reset to zero to cancel its effect
+(<kbd>.RW&nbsp;0</kbd>).
</p>
</div>
@@ -2510,7 +2404,7 @@ Macro: <b>BR_AT_LINE_KERN</b> <kbd class="macro-args">toggle</kbd>
<p>
By default, in
<a href="definitions.html#filled">fill</a>
-modes (i.e.
+modes (ie
<a href="#quad">QUAD</a>
L, R, C, J or
<a href="#justify">JUSTIFY</a>)
@@ -2549,9 +2443,9 @@ Macro: <b>KERN</b> <kbd class="macro-args">toggle</kbd>
</div>
<p>
-By itself (i.e. with no argument), KERN turns automatic pairwise
+By itself (ie with no argument), KERN turns automatic pairwise
<a href="definitions.html#kern">kerning</a>
-on. With any argument (e.g. OFF, Q, X), pairwise kerning is turned
+on. With any argument (eg OFF, Q, X), pairwise kerning is turned
off.
</p>
@@ -2605,11 +2499,11 @@ LIGATURES with any argument turns automatic ligature generation off.
<h2 id="modifications-intro" class="macro-group">Type modifications (pseudo font styles)</h2>
<p>
-It sometimes happens that a PostScript
+It sometimes happens that a
<a href="definitions.html#family">family</a>
doesn&#8217;t contain all the fonts you need. You might, for
example, be missing an italic font, or a bold font. Or you might
-not be able to get your hands on a condensed family. That&#8217;s
+not be able to get your hands on the condensed version. That&#8217;s
where these macros and inline escapes come in. With them, you
can fake the fonts you&#8217;re missing. A word of caution,
though: &#8220;faked&#8221; fonts are just that&mdash;faked. You
@@ -3078,7 +2972,7 @@ of lead.
<div class="box-tip">
<p class="tip">
<span class="note">Note:</span> if you want to use ALD at the top
-of a page (i.e. to advance to the starting position of type on a
+of a page (ie to advance to the starting position of type on a
page), combine the value you want with <kbd>-1v</kbd> (minus one
line space), like this:
<br/>
@@ -3155,7 +3049,7 @@ to understand how mom handles tabs.
<p class="tip">
<span class="note">Note:</span> see the section
<a href="docprocessing.html#behaviour">Typesetting macros during document processing</a>
-for re-assuring information on the use of tabs during
+for reassuring information on the use of tabs during
<a href="docprocessing.html#docprocessing">document processing</a>.
</p>
</div>
@@ -3210,7 +3104,7 @@ Team spirit Needs work Persistently gives higher priority
You want the first tab, CRITERION,
</p>
<ul style="margin-top: -.5em; margin-bottom: -.5em;">
-<li>to begin at the left margin of the page &ndash; i.e. no indent</li>
+<li>to begin at the left margin of the page &ndash; ie no indent</li>
<li>to have a line length of 5 picas</li>
<li>to be set flush left</li>
</ul>
@@ -3273,7 +3167,10 @@ Once the tabs are set up, you can call them in one of two ways:
advances one linespace and calls the tab.</li>
<li>with <kbd><a href="#tn">.TN</a></kbd> (Tab Next), which keeps
you on the current line and moves over to the next
- tab in sequence (i.e. from 1 to 2, 2 to 3, etc.).</li>
+ tab in sequence (ie from 1 to 2, 2 to 3, etc.), or, more
+ conveniently, with the
+ <kbd><a href="#tn">\*[TB+]</a></kbd>
+ <a href="definitions.html#inlines">inline escape</a></li>
</ul>
<p>
@@ -3304,31 +3201,23 @@ Here&#8217;s how the input for our sample employee evaluation looks
.TAB_SET 2 8P 9P C
.TAB_SET 3 19P 17P L QUAD
.TAB 1
-CRITERION
-.TN
-EVALUATION
-.TN
+CRITERION\*[TB+]
+EVALUATION\*[TB+]
COMMENTS
.SP
.TAB 1
-Service
-.TN
-Good
-.TN
+Service\*[TB+]
+Good\*[TB+]
Many clients specifically request support from Joe by name.
.SP
.TAB 1
-Punctuality
-.TN
-Satisfactory
-.TN
+Punctuality\*[TB+]
+Satisfactory\*[TB+]
Tends to arrive after 8:00am, but often works through lunch hour.
.SP
.TAB 1
-Team spirit
-.TN
-Needs work
-.TN
+Team spirit\*[TB+]
+Needs work\*[TB+]
Persistently gives higher priority to helping clients
than respecting organizational hierarchy.
.TQ
@@ -3339,9 +3228,9 @@ than respecting organizational hierarchy.
Try setting this up and processing it it with
<br/>
<span class="pre-in-pp">
- groff -mom &lt;filename&gt; &gt; &lt;filename&gt;.ps
+ pdfmom filename.mom | ps2pdf - filename.pdf
</span>
-then previewing the .ps file. Notice how <kbd>.TN</kbd>
+then previewing the .pdf file. Notice how <kbd>.TN</kbd>
simply moves over to the next tab, while the combination
<kbd>.SP/.TAB&nbsp;1</kbd> breaks the line, advances by one extra
linespace, and calls the first tab.
@@ -3466,8 +3355,7 @@ into its component parts:
</span>
</li>
<li>We want a 1 pica (12 points) gutter between tab 1 and 2,
- so we insert 12 points of space with \*[FWD 12p]
- (ForWarD 12 points):
+ so we insert 12 points of space with \*[FWD 12p]:
<br/>
<span class="pre-in-pp" style="margin-bottom: -.25em;">
\*[FWD 12p]
@@ -3513,12 +3401,13 @@ line, like this:
| | |
| | +--fill output lines
| |
- tab #--+ +--direction
+tab #--+ +--direction
</span>
From here on in, you call the tabs with
-<kbd><a href="#tab">.TAB</a></kbd>
-and
-<kbd><a href="#tn">.TN</a></kbd>
+<kbd><a href="#tab">.TAB</a></kbd>,
+<kbd><a href="#tn">.TN</a></kbd>,
+or
+<kbd><a href="#tn">\*[TB+]</a></kbd>
just like typesetting tabs (see
<a href="#typesetting-tabs-tut">typesetting tabs tutorial</a>).
</p>
@@ -3547,31 +3436,23 @@ evaluation form utilizing string tabs.
.ST 2 L
.ST 3 L QUAD
.TAB 1
-CRITERION
-.TN
-EVALUATION
-.TN
+CRITERION\*[TB+]
+EVALUATION\*[TB+]
COMMENTS
.SP
.TAB 1
-Service
-.TN
-Good
-.TN
+Service\*[TB+]
+Good\*[TB+]
Many clients specifically request support from Joe by name.
.SP
.TAB 1
-Punctuality
-.TN
-Satisfactory
-.TN
+Punctuality\*[TB+]
+Satisfactory\*[TB+]
Tends to arrive after 8:00am, but often works through lunch hour.
.SP
.TAB 1
-Team spirit
-.TN
-Needs work
-.TN
+Team spirit\*[TB+]
+Needs work\*[TB+]
Persistently gives higher priority to helping clients
than respecting organizational hierarchy.
.TQ
@@ -3582,9 +3463,9 @@ than respecting organizational hierarchy.
Try setting this up and processing it with
<br/>
<span class="pre-in-pp">
- groff -mom &lt;filename&gt; &gt; &lt;filename&gt;.ps
+ pdfmom filename | ps2pdf - filename.pdf
</span>
-and previewing the .ps file.
+and previewing the .pdf file.
</p>
<p>
@@ -3611,7 +3492,8 @@ how the tab structure remains the same, but the gutters are wider.
<li><a href="#inline-st">\*[ST]...\*[STX]</a> &ndash; inline escapes for marking String Tabs</li>
<li><a href="#st">ST</a> &ndash; set String Tabs</li>
<li><a href="#tab">TAB</a> &ndash; call tabs</li>
- <li><a href="#tn">TN</a> &ndash; Tab Next; call next tab in a sequence</li>
+ <li><a href="#tn">TN</a> &ndash; Tab Next; call next tab in sequence</li>
+ <li><a href="#tn">\*[TB+]</a> &ndash; inline escape to call next tab in sequence</li>
<li><a href="#tq">TQ</a> &ndash; Tab Quit</li>
</ul>
@@ -3756,7 +3638,7 @@ string tab markers.
</span>
String tab 1 begins at the start of the line and ends after the word
&#8220;time&#8221;. String tab 2 starts at &#8220;good&#8221; and
-ends after &#8220;men&#8221;. Inline escapes (e.g. font or point
+ends after &#8220;men&#8221;. Inline escapes (eg font or point
size changes, or horizontal movements, including
<a href="goodies.html#pad">padding</a>)
are taken into account when mom determines the position and length
@@ -3779,7 +3661,7 @@ after which they may be called, by number, with
<div class="box-tip">
<p class="tip">
<span class="note">Note:</span> Lines with string tabs marked off
-in them are normal input lines, i.e. they get printed, just like
+in them are normal input lines, ie they get printed, just like
any input line. If you want to set up string tabs without the line
printing, use the
<a href="goodies.html#silent">SILENT</a>
@@ -3920,7 +3802,6 @@ example,
<span class="pre-in-pp">
.TAB 3
</span>
-<br/>
moves you to tab 3.
</p>
@@ -3939,16 +3820,17 @@ produces, on output
<br/>
<span class="pre-in-pp">
A line of text in tab 1.
- A line of text in tab 2.
+ A line of text in tab 2.
</span>
If you want the tabs to line up, use
<a href="#tn">TN</a>
-(Tab Next), like this:
+(Tab Next)
+or, more conveniently, the inline escape
+<a href="#tn">\*[TB+]</a>:
<br/>
<span class="pre-in-pp">
.TAB 1
- A line of text in tab 1.
- .TN
+ A line of text in tab 1.\*[TB+]
A line of text in tab 2.
</span>
which produces
@@ -3979,44 +3861,50 @@ picas, not 6 picas plus the 2 pica indent.
<div class="box-macro-args">
Macro: <b>TN</b>
+<br/>Inline escape: <b>\*[TB+]</b>
</div>
-<p class="requires">
+
+<p>
+TN moves over to the next tab in numeric sequence (tab n+1) without
+advancing on the page. See the
+<a href="#note-tn">NOTE</a>
+in the description of the TAB macro for an example of how TN works.
+</p>
+
+<p>
In tabs that aren&#8217;t given the <kbd class="normal">QUAD</kbd>
argument when they&#8217;re set up with
<a href="#tab-set" class="normal">TAB_SET</a>
or
<a href="#st" class="normal">ST</a>,
you must terminate the line preceding <kbd class="normal">.TN</kbd>
-with the <kbd class="normal">\c</kbd> inline escape. See the
-<a href="#tn-note" class="normal">ADDITIONAL NOTE</a>.
+with the <kbd class="normal">\c</kbd> inline escape. Conversely,
+if you did give a <kbd>QUAD</kbd> argument to TAB_SET or ST, the
+<kbd>\c</kbd> must not be used.
+</p>
+
+<p>
If you find remembering whether to put in the
<kbd class="normal">\c</kbd> bothersome, you may prefer to use the
<a href="definitions.html#inlines" class="normal">inline escape</a>
alternative to
<kbd class="normal">.TN</kbd>,
-<kbd class="normal"><a href="inlines.html#TB+">\*[TB+]</a></kbd>,
+<kbd class="normal"><a href="inlines.html#tb-plus-mom">\*[TB+]</a></kbd>,
which works consistently regardless of the fill mode.
</p>
-<p>
-TN moves over to the next tab in numeric sequence (tab n+1) without
-advancing on the page. See the
-<a href="#note-tn">NOTE</a>
-in the description of the TAB macro for an example of how TN works.
-</p>
-
<div id="tn-note" class="box-tip">
-<p class="tip-top">
+<p class="tip">
<span class="note">Note:</span> You must put text in the
<a href="definitions.html#inputline">input line</a>
-immediately after TN. &#8220;Stacking&#8221; of TN&#8217;s is not
+immediately after TN. Stacking of TN&#8217;s is not
allowed. In other words, you cannot do
<br/>
<span class="pre-in-pp">
.TAB 1
- Some text
+ Some text\c
.TN
- Some more text
+ Some more text\c
.TN
.TN
Yet more text
@@ -4025,54 +3913,18 @@ The above example, assuming tabs numbered from 1 to 4, should be entered
<br/>
<span class="pre-in-pp">
.TAB 1
- Some text
+ Some text\c
.TN
- Some more text
- .TAB 4
- Yet more text
-</span>
-<span class="additional-note">Additional note:</span>
-In versions of mom prior to 1.1.9, TN did not always work as
-advertised on the last
-<a href="definitions.html#outputline">output line</a>
-of pages that contained a footer trap (e.g. one set with
-<a href="#b-margin">B_MARGIN</a>
-or in documents formatted using the
-<a href="docprocessing.html#docprocessing">document processing macros</a>).
-</p>
-
-<p>
-TN has been re-written so that this should no longer be the case.
-However, in order for it to work in tabs that have not been given a
-<kbd>QUAD</kbd> argument (see
-<a href="#tab-set">TAB_SET</a>
-and
-<a href="#st">ST</a>)
-you must always &#8220;join&#8221; <kbd>.TN</kbd> to
-the line before it using the
-<kbd><a href="#join">\c</a></kbd>
-<a href="definitions.html#inlines">inline escape</a>,
-as in the following example:
-<br/>
-<span class="pre-in-pp">
- .TAB_SET 1 0 1P L
- .TAB_SET 2 1P 20P L
- .TAB 1
- 1.\c
+ Some more text\c
.TN
- The first rule of survival is &#8220;make and keep good friends.&#8221;
-</span>
-When output, the example will look like this:
-<br/>
-<span class="pre-in-pp">
- 1. The first rule of survival is &#8220;make and keep good friends.&#8221;
+ \&\c
+ .TN
+ Yet more text
</span>
-</p>
-<p class="tip-bottom">
-Conversely, if you did give a <kbd>QUAD</kbd> argument
-to TAB_SET or ST, the
-<kbd>\c</kbd> must not be used.
+<kbd>\&</kbd> is a zero-width, non-printing character that groff
+recognizes as valid input, hence meets the requirement for input
+text following <kbd>.TN</kbd>.
</p>
</div>
@@ -4305,7 +4157,7 @@ of the longest column.
<p>
With mom&#8217;s indents, you can indent from the left, the right,
or both margins. In addition, mom provides temporary left indents
-(i.e. only one line is indented, as at the start of a paragraph)
+(ie only one line is indented, as at the start of a paragraph)
and &#8220;hanging&#8221; left indents (the reverse of a temporary
indent; the first line isn&#8217;t indented, subsequent lines are).
</p>
@@ -4371,7 +4223,7 @@ argument, like this:
.IL
</span>
As you can see, once you&#8217;ve supplied a measure to an indent
-macro mom stores the value, obviating the need to repeat it on
+macro, mom stores the value, obviating the need to repeat it on
subsequent invocations. And mom doesn&#8217;t just store the
measure&mdash;she hangs on to it tenaciously. Arguments passed to
IL, IR and IB are additive. Consider the following:
@@ -4386,12 +4238,12 @@ IL, IR and IB are additive. Consider the following:
A second block of text...
...
...
- .IR 2P \"Indent right by an additional 2 picas (i.e. 4 picas)
+ .IR 2P \"Indent right by an additional 2 picas (ie 4 picas)
A third block of text...
...
...
</span>
-The first block of text is right indented by 2 picas (i.e. the line
+The first block of text is right indented by 2 picas (ie the line
length is shortened by 2 picas to 18 picas). The second block of
text, after IQ, is, as you&#8217;d expect, set to the full measure.
The third block of text&mdash;the one to pay attention to&mdash;is
@@ -4456,9 +4308,7 @@ compelling reason not to change the current left margin or line
length. In many instances where indents might seem expedient,
it&#8217;s better to use tabs, or actually change the left margin
or the line length. Mom&#8217;s indenting macros are flexible and
-powerful, but easy to get tangled up in. Personally, I don&#8217;t
-use them much, except for cutarounds and multi-level lists à la
-html, at which they excel.
+powerful, but easy to get tangled up in.
</p>
<div class="box-tip">
@@ -4771,13 +4621,21 @@ mom keeps track of the last measure you gave it.
<p>
Generally speaking, you should invoke HI immediately prior to the
-line you want hung (i.e. without any intervening
+line you want hung (ie without any intervening
<a href="definitions.html#controllines">control lines</a>).
And because hanging indents affect only one line, there&#8217;s no
need to turn them off.
</p>
-<h4 id="num-lists" class="macro-id">Recipe: Numbered lists using hanging indents</h4>
+<div class="box-important">
+<p class="tip">
+<span class="important">IMPORTANT:</span> Unlike IL, IR and IB,
+measures given to HI are NOT additive. Each time you pass a measure
+to HI, the measure is treated literally.
+</p>
+</div>
+
+<h4 id="num-lists" class="macro-id">Recipe: A numbered list using hanging indents</h4>
<div class="box-tip" style="margin-top: -.5em; margin-bottom: -.5em;">
<p class="tip">
@@ -4788,8 +4646,6 @@ This recipe exists to demonstrate the use of hanging indents only.
</div>
<p style="margin-top: 1.5em;">
-Consider the following example:
-<br/>
<span class="pre-in-pp">
.PAGE 8.5i 11i 1i 1i 1i 1i
.FAMILY T
@@ -4799,8 +4655,8 @@ Consider the following example:
.JUSTIFY
.KERN
.SS 0
- .IL \w'\0\0.' \"Indent left by 2 figure spaces and a period
- .HI \w'\0\0.' \"Hang first line back by 2 figure spaces and a period
+ .IL \w'\0\0.'
+ .HI \w'\0\0.'
1.\0The most important point to be considered is whether the
answer to the meaning of Life, the Universe, and Everything
really is 42. We have no-one&#8217;s word on the subject except
@@ -4833,22 +4689,18 @@ indented lines that follow.
</p>
<p>
-Notice that subsequent invocations of <kbd>.HI</kbd> without a
-measure produce exactly the same effect.
+Notice that subsequent invocations of <kbd>.HI</kbd> don&#8217;t
+require a measure to be given.
</p>
<p>
-Paste the example above into a file and preview it with <kbd>groff
--mom -X &lt;filename&gt;</kbd> to see hanging indents in action.
-</p>
-
-<div class="box-important">
-<p class="tip">
-<span class="important">IMPORTANT:</span> Unlike IL, IR and IB,
-measures given to HI are NOT additive. Each time you pass a measure
-to HI, the measure is treated literally.
+Paste the example above into a file and preview it with
+<br/>
+<span class="pre-in-pp">
+ pdfmom filename.mom | ps2pdf - filename.pdf
+</span>
+to see hanging indents in action.
</p>
-</div>
<!-- -IX- -->
@@ -4871,8 +4723,8 @@ Macro: <b>IBX</b> <kbd class="macro-args">[ CLEAR ]</kbd> (exit Indent Both)
<div class="box-important">
<p class="tip-top">
-<span class="important">IMPORTANT NOTE:</span> Formerly, the macro
-for quitting all indents was IX. This usage is now deprecated, in
+<span class="important">IMPORTANT NOTE:</span> The original macro
+for quitting all indents was IX. This usage has been deprecated in
favour of IQ. IX will continue to behave as before, but mom will
issue a warning to stderr indicating that you should update your
documents.
diff --git a/contrib/mom/momdoc/using.html b/contrib/mom/momdoc/using.html
index 2d215df..7006761 100644
--- a/contrib/mom/momdoc/using.html
+++ b/contrib/mom/momdoc/using.html
@@ -2,8 +2,9 @@
<!--
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
-Written by Peter Schaffter.
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -14,6 +15,7 @@ Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
-->
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@@ -39,13 +41,16 @@ FDL in the main directory of the groff source package.
<h1 id="using" class="docs">Using mom</h1>
-<div style="text-align: center;">
+<div style="text-align: left; margin-left: 33%">
<ul class="no-enumerator" style="margin-left: -2.5em;">
- <li ><a href="#using-intro">Introduction</a></li>
- <li ><a href="#using-macros">How to input mom&#8217;s macros</a></li>
- <li ><a href="#using-previewing">How to preview documents</a></li>
- <li ><a href="#using-saving">Saving documents</a></li>
- <li ><a href="#using-printing">Printing documents</a></li>
+ <li><a href="#using-intro">Introduction</a></li>
+ <li><a href="#using-macros">How to input mom&#8217;s macros</a></li>
+ <li><a href="#viewing">Processing and viewing documents</a>
+ <ul>
+ <li class="item"><a href="#pdf">Mom and PDF</a></li>
+ <li class="item"><a href="#pdfmom">pdfmom</a></li>
+ </ul></li>
+ <li><a href="#previewing">Automatic previewing of documents</a></li>
</ul>
</div>
@@ -56,40 +61,36 @@ FDL in the main directory of the groff source package.
<p>
As explained in the section
<a href="intro.html#top">What is mom?</a>,
-mom can be used in two ways: for straight typesetting or
-for document processing. The difference between the two
-is that in straight typesetting, every macro is a literal
-typesetting instruction that determines precisely how text
-following it will look. Document processing, on the other
-hand, uses markup tags (e.g. <kbd>.PP</kbd> for
-paragraphs, <kbd>.HEAD</kbd> for heads,
-<kbd>.FOOTNOTE</kbd> for footnotes, etc.) that make a
-lot of typesetting decisions automatically.
+mom can be used in two ways: for straightforward typesetting or for
+document processing. The difference between the two is that in
+straightforward typesetting, every macro is a literal instruction
+that determines precisely how text following it will look. Document
+processing, on the other hand, uses markup tags (e.g. <kbd>.PP</kbd>
+for paragraphs, <kbd>.HEADING</kbd> for different levels of heads,
+<kbd>.FOOTNOTE</kbd> for footnotes, etc.) that perform typesetting
+operations automatically.
</p>
<p>
You tell mom that you want to use the document processing macros
with the
<a href="docprocessing.html#start"><kbd>START</kbd></a>
-macro, explained below. After <kbd>START</kbd>,
-mom determines the appearance of text following the markup tags
-automatically, although you, the user, can easily change how mom
-interprets the tags. This gives you nearly complete control
-over document design. In addition, the typesetting macros, in
-combination with document processing, let you meet all sorts of
-typesetting needs that just can&#8217;t be covered by &#8220;one
-macro fits all&#8220; markup tags.
+macro. After <kbd>START</kbd>, mom determines the appearance of
+text following the markup tags automatically, although you, the
+user, can easily change how the tags are interpreted.
</p>
<h2 id="using-macros" class="docs">How to input mom&#8217;s macros</h2>
<p>
-Regardless of which way you use mom, the following apply:
+Regardless of whether you&#8217;re preparing a term paper or making a
+flyer for your lost dog, the following apply.
</p>
<ol style="margin-top: -.5em; margin-bottom: -.5em;">
<li>
You need a good text editor for inputting mom files.
+ <br/>
<span style="display: block; margin-top: .25em; margin-bottom: .5em;">
I cannot recommend highly enough that you use an editor that
lets you write syntax highlighting rules for mom&#8217;s
@@ -97,20 +98,42 @@ Regardless of which way you use mom, the following apply:
<a href="definitions.html#inlines">inline escapes</a>.
Simply colourizing macros and inlines to half-intensity can be
enough to make text stand out clearly from formatting commands.
+ Mom herself comes with a complete set of syntax highlighting
+ rules for the vim editor.
</span>
</li>
<li>
- All mom&#8217;s macros begin with a period (dot) and must be
- entered in upper case (capital) letters.
+ Macros begin with a period (dot) at the left margin of your text
+ editor's screen, and must be entered in upper case (capital)
+ letters.
</li>
<li>
Macro
<a href="definitions.html#arguments">arguments</a>
are separated from the macro itself by spaces. Multiple
arguments to the same macro are separated from each
- other by spaces. Any number of spaces may be used. All
- arguments to a macro must appear on the same line as the
+ other by spaces. Any number of spaces may be used.
+ </li>
+ <li>
+ Arguments to a macro must appear on the same line as the
macro.
+ <br/>
+ <span style="display: block; margin-top: .25em; margin-bottom: .5em;">
+ If the argument list is very long, you may use the
+ backslash character (<kbd>\</kbd>) to break the line visually.
+ From groff&#8217;s point of view, the backslash and newline are
+ invisible. Thus, for example,
+ <span class="pre" style="margin-bottom: -2.25em">
+ .HEADING_STYLE 1 FAMILY Garamond FONT B SIZE +2
+ </span>
+ and
+ <span class="pre" style="margin-bottom: -2.25em">
+ .HEADING_STYLE 1 \
+ FAMILY Garamond \
+ FONT B \
+ SIZE +2
+ </span>
+ are exactly equivalent.
</li>
<li>
Any argument (except a
@@ -131,21 +154,18 @@ Regardless of which way you use mom, the following apply:
</li>
<li>
<a href="definitions.html#stringargument">String arguments</a>,
- in the sense that the term is used in this manual, must be
- surrounded by double-quotes
- (<kbd>"&lt;text of string&gt;"</kbd>). Multiple
- string arguments are separated from each other by spaces (each
- argument surrounded by double-quotes, of course).
- </li>
- <li>
- If a string argument, as entered in your text editor, becomes
- uncomfortably long (i.e. runs longer than the visible portion of
- your screen or window), you may break it into two or more lines
- by placing the backslash character (<kbd>\</kbd>)
- at the ends of lines to break them up, like this:
+ in the sense of this manual, must be surrounded by double-quotes
+ (eg <kbd>"text"</kbd>). Multiple
+ string arguments are separated from each other by spaces (with
+ each argument surrounded by double-quotes).
+ <br/>
+ <span style="display: block; margin-top: .25em; margin-bottom: .5em;">
+ If a string argument becomes
+ uncomfortably long, you may break it into two or more lines
+ with the backslash character.
<span class="pre">
.SUBTITLE "An In-Depth Consideration of the \
- Implications of Forty-Two as the Meaning of Life, \
+ Implications of Forty-Two as the Answer to Life, \
The Universe, and Everything"
</span>
</li>
@@ -154,136 +174,128 @@ Regardless of which way you use mom, the following apply:
<div class="box-tip">
<p class="tip">
<span class="tip">Tip:</span>
-It&#8217;s important that formatted documents be easy to
-read/interpret when you&#8217;re looking at them in a text editor.
-One way to achieve this is to group macros that serve a similar
-purpose together, and separate them from other groups of macros
-with a blank comment line. In groff, that&#8217;s done with
-<kbd>\#</kbd> on a line by itself. Consider the
-following, which is a template for starting the chapter of a book.
+It&#8217;s important that your documents be easy to read and
+understand in a text editor. One way to achieve this is to group
+macros that serve a similar purpose together, and separate them from
+other groups of macros with a comment line. In groff, that&#8217;s
+done with <kbd>\#</kbd> (backslash-pound) or <kbd>.\"</kbd>
+(period-backslash-doublequote) on a line by itself. Either
+instructs groff to ignore the remainder of the line, which may or
+may not contain text. Consider the following, which is a template
+for starting the chapter of a book.
<br/>
<span class="pre-in-pp">
+ \# Reference/meta-data
.TITLE "My Pulitzer Novel"
.AUTHOR "Joe Blow"
.CHAPTER 1
- \#
+ \# Template
.DOCTYPE CHAPTER
.PRINTSTYLE TYPESET
- \#
+ \# Type style
.FAM P
.PT_SIZE 10
.LS 12
\#
.START
</span>
+You may also, if you wish, add a comment to the end of a line with
+<kbd>\"</kbd> (no period), like this:
+<br/>
+<span class="pre-in-pp">
+ .FAMILY P \" Maybe Garamond instead?
+</span>
</p>
</div>
-<h2 id="using-previewing" class="docs">How to preview documents</h2>
-
-<p>
-Other than printing out hard copy, there are two well-established
-methods for previewing your work. Both assume you have a working
-X server.
-</p>
+<h2 id="viewing" class="docs">Processing and viewing documents</h2>
<p>
-Groff itself comes with a quick and dirty previewer called
-gxditview. Invoke it with:
+The most basic command line usage for processing a file formatted
+with the mom macros is
<br/>
<span class="pre-in-pp">
- groff -X -mom &lt;filename&gt;
+ groff -mom filename.mom &gt; filename.ps
</span>
-It&#8217;s not particularly pretty, doesn&#8217;t have many
-navigation options, requires a lot of work if you want to use
-other than the standard groff PostScript fonts, and occasionally has
-difficulty accurately reproducing some of mom&#8217;s macro effects
-(<a href="goodies.html#smartquotes">smartquotes</a>
-and
-<a href="goodies.html#leader">leaders</a>
-come to mind). What it does have going for it is that it&#8217;s
-fast and doesn&#8217;t gobble up system resources.
+which processes the .mom file and dumps the output into a
+viewable/printable PostScript file.
</p>
+<h3 id="pdf" class="docs">Mom and PDF</h3>
+
<p>
-A surer way to preview documents is with gv (ghostview). This
-involves processing documents with groff and directing the default
-PostScript output to a file, like this:
-<br/>
-<span class="pre-in-pp">
- groff -mom &lt;filename&gt; &gt; &lt;filename&gt;.ps
-</span>
-You can then then open the ps file in gv.
+Adobe's Portable Document Format (PDF) has largely supplanted
+PostScript, of which it is a subset, as the standard for typeset
+documents. While printed versions of documents in either format
+will be identical, PDF documents, when viewed at the screen, may
+also contain clickable links and a number of other special features.
</p>
-<div class="box-tip">
-<p class="tip">
-<span class="tip">Tip:</span>
-I&#8217;ve set up my editor (vi[m]) to do seamless, automatic
-previewing. Whenever I&#8217;m working on a document that
-needs previewing/checking, I fire up gv with the &#8220;Watch
-File&#8220; option turned on. The first time I want to look at
-the file, I tell vim (via a keymapping) to process it with groff
-and send it to a PostScript file:
+<p>
+As of version 2.0, mom supports full PDF integration. The creation
+and processing of mom files into PostScript documents remains
+unchanged from 1.x, but the expected and recommended format of final
+documents is now PDF.
+
+<p>
+The manual,
+<a href="http://www.schaffter.ca/mom/pdf/mom-pdf.pdf"><span class="book-title">Producing PDFs with groff and mom</span></a>,
+explains and demonstrates the PDF-specific macros that are available
+in mom, as well as the use of <strong>pdfmom</strong>, the
+recommended way to process mom files.
+</p>
+
+<h4 id="pdfmom" class="docs">pdfmom</h4>
+
+<p>
+Groff provides more than one way to generate PDF documents,
+but when processing files formatted with the mom macros,
+<strong>pdfmom</strong> is the recommended and most robust way to do
+it:
<br/>
<span class="pre-in-pp">
- groff -mom &lt;filename&gt; &gt; &lt;filename&gt;.ps
+ pdfmom filename.mom &gt; filename.pdf
</span>
-I then open the file inside gv. Ever after, when I want to look at
-any changes I make, I simply tell vim to work its magic again.
-The Watch File option in gv registers that the PostScript file has
-changed, and automatically loads the new version. <i>Voilà!</i>&mdash;instant
-previewing.
+<strong>pdfmom</strong> is a wrapper around groff, and accepts all
+groff's command line options as listed in the groff manpage.
+Full usage is explained in the manual,
+<a href="http://www.schaffter.ca/mom/pdf/mom-pdf.pdf"><span class="book-title">Producing PDFs with groff and mom</span></a>.
</p>
-</div>
-
-<h2 id="using-saving" class="docs">Saving documents</h2>
<p>
-By default, groff dumps its PostScript output to stdout (your
-terminal screen) so you have to say where you want it to go if you
-want to save it to a file. The most straightforward way to do
-this is:
+PDF links in a document, including linked entries in the
+Table of Contents, are identified by colour. When printing
+documents with links, you will most likely not want the link
+text coloured. The groff option, <kbd>-c</kbd>, disables colour
+throughout a document; thus, when preparing a document for printing,
+you should use:
<br/>
<span class="pre-in-pp">
- groff -mom &lt;filename&gt; &gt; &lt;filename&gt;.ps
+ pdfmom -c filename.mom &gt; filename.pdf
</span>
-which drops the output in a PostScript file. Alternatively, you
-might prefer to save it as a pdf file, in which case you'd do:
+<strong>pdfmom</strong> tends to produce large files. You may
+reduce their size by piping them through ps2pdf:
<br/>
-<span class="pre">
- groff -mom &lt;filename&gt; | ps2pdf - &lt;filename&gt;.pdf
+<span class="pre-in-pp">
+ pdfmom -c filename.mom | ps2pdf - filename.pdf
</span>
+Be aware, though, that files piped through ps2pdf will lose some pdf
+metadata, notably the document window title set with PDF_TITLE.
</p>
-<h2 id="using-printing" class="docs" style="margin-top: 1.5em;">Printing documents</h2>
+<h2 id="previewing" class="docs">Automatic previewing of documents</h2>
<p>
-You can process and print documents from the command line without
-saving them to .ps or .pdf files first. Here are two common ways
-to do it:
-
-<span class="pre">
- groff -mom -l &lt;filename&gt;
- groff -mom &lt;filename&gt; | lpr
-</span>
-</p>
-
-<p style="margin-top: -1.5em;">
-In the first, the <kbd>-l</kbd> option tells groff
-to send the output to your printer. In the second, you&#8217;re
-doing the same thing, except you&#8217;re telling groff to
-<i>pipe</i> the output to your printer spooler. Basically,
-they&#8217;re the same thing. The advantage to the second is that
-you can pass additional options to lpr, for example to send
-the output to a particular printer, like this:
-<br/>
-<span class="pre-in-pp">
- groff -mom &lt;filename&gt; | lpr -P &lt;printer_name&gt;
-</span>
+Most PDF viewers have a &#8220;Watch File&#8221; option, which
+automaticaly updates a displayed document whenever there's a change.
+This is useful when preparing documents that require judgment calls.
+I recommend creating a keymapping in your text editor that both
+saves the mom file and processes it with <strong>pdfmom</strong>.
+The displayed PDF then automatically reflects whatever changes you
+save to the mom file.
</p>
-<div class="rule-long" style="margin-top: -.5em;"><hr/></div>
+<div class="rule-long"><hr/></div>
<!-- Navigation links -->
<table style="width: 100%; margin-top: 12px;">
diff --git a/contrib/mom/momdoc/version-2.html b/contrib/mom/momdoc/version-2.html
new file mode 100644
index 0000000..15b38b1
--- /dev/null
+++ b/contrib/mom/momdoc/version-2.html
@@ -0,0 +1,380 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+This file is part of groff, the GNU roff type-setting system.
+
+Copyright (C) 2004, 2005, 2006, 2009, 2010,
+2011, 2012, 2013 Free Software Foundation, Inc.
+Written by Peter Schaffter (peter@schaffter.ca).
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being this comment section, with no Front-Cover
+Texts, and with no Back-Cover Texts.
+
+A copy of the Free Documentation License is included as a file called
+FDL in the main directory of the groff source package.
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
+ <title>Mom -- Version 2.0 notes</title>
+ <link rel="stylesheet" type="text/css" href="stylesheet.css" />
+</head>
+
+<body style="background-color: #f5faff;">
+
+<!-- ==================================================================== -->
+
+<div id="top" class="page">
+
+<!-- Navigation links -->
+<table style="width: 100%;">
+<tr>
+ <td><a href="toc.html">Back to Table of Contents</a></td>
+ <td style="text-align: right;"><a href="intro.html#top">Next: Introduction to mom</a></td>
+</tr>
+</table>
+
+<h1 class="docs">Version 2.0 notes</h1>
+
+<div style="width: 70%; margin: auto;">
+<ol style="margin-left: -1em;">
+ <li><a href="#prefatory">Prefatory comments</a></li>
+ <li><a href="#differences">Differences between 2.0 and 1.x</a>
+ <ul class="no-enumerator" style="padding-left: 0">
+ <li><a href="#pdf-support">2.1 PDF support</a>
+ <ul class="no-enumerator" style="padding-left: 1em">
+ <li><a href="#mom-pdf">2.1.1 The manual, <span class="book-title">Producing PDFs with groff and mom</span></a></li>
+ <li><a href="#pdf-image">2.1.2 PDF_IMAGE</a></li>
+ </ul></li>
+ <li><a href="#covers">2.2 Covers</a></li>
+ <li><a href="#headings">2.3 Headings</a></li>
+ <li><a href="#margin-notes">2.4 Margin notes</a></li>
+ <li><a href="#floats">2.5 Floats</a></li>
+ <li><a href="#table-of-contents">2.5 Table of contents</a></li>
+ </ul></li>
+ <li><a href="#pdfmom">The <strong>pdfmom</strong> wrapper around groff</a></li>
+ <li><a href="#install-font">The <strong>install-font</strong> script</a></li>
+</ol>
+</div>
+
+<div class="rule-medium"><hr/></div>
+
+<h2 id="prefatory" class="docs">1. Prefatory comments</h2>
+
+<p>
+Version 2.0 comes about as a result of Deri James&#8217;
+contribution of <strong>gropdf</strong> to <strong>groff</strong>,
+and his subsequent work integrating the device with
+<strong>mom</strong>.
+</p>
+
+<p>
+Whereas the 1.x releases were oriented toward PostScript output,
+2.0 focuses on PDF output, a bias reflected throughout this
+documentation. Users are strongly encouraged to process their files
+with
+<a href="#pdfmom"><strong>pdfmom</strong></a>,
+a wrapper around <strong>groff&nbsp;-Tpdf</strong>, in order to take
+full advantage of all PDF has to offer.
+</p>
+
+<p>
+While portions of mom have been rewritten, and new features
+introduced, 2.0 is backwardly compatible with 1.x releases. Changes
+are either transparent, or accompanied by notifications on stderr.
+</p>
+
+<p>
+The implementation of nested heads has been completely rethought,
+as has the manner of styling of them. There are no limits on
+how deep the nesting can go. The 1.x macros <kbd>HEAD</kbd>,
+<kbd>SUBHEAD</kbd>, and <kbd>SUBSUHEAD</kbd> may still be used, but
+must be re-designed with the new <kbd>HEADING_STYLE</kbd> macro
+if their 1.x defaults are not desired.
+</p>
+
+<p>
+In conjunction with the changes to nested heads, Table of Contents
+generation has also been rethought. Greater flexibility in the
+inclusion of toc entry numbering been added. Like nested heads,
+there&#8217;s a new macro, <kbd>TOC_ENTRY_STYLE</kbd>, that permits
+styling of each level in the toc hierarchy separately. The default
+overall layout has also been significantly improved, achieving a
+level of typographical elegance formerly lacking. Best of all, the
+Table of Contents can now be repositioned to the correct spot at the
+top of a document from within the mom source file.
+</p>
+
+<p>
+When mom files are processed with <strong>pdfmom</strong>, a PDF
+outline for the Contents panel of PDF viewers is automatically
+generated. In addition, entries in the Table of Contents
+are clickable links when a document is viewed at the screen.
+<strong>pdfmom</strong> also permits setting a document&#8217;s
+papersize within the source file without the corresponding need for
+<kbd>-P-p&lt;papersize&gt;</kbd> on the command line.
+</p>
+
+<p>
+Lastly, while not strictly part of mom, a bash script,
+<strong>install-font</strong>, has been posted at the
+<a href="http://www.schaffter.ca/mom/">mom site</a>.
+The script significantly eases the installation of new
+groff families and fonts, with conversion to .pfa
+and .t42 being performed by <strong>fontforge</strong>.
+</p>
+
+<h2 id="differences" class="docs">2. Differences between v2.0 and v1.x</h2>
+
+<h3 id="pdf-support" class="docs">2.1. PDF support</h3>
+
+<p>
+PDF support has been added, with features including the automatic
+generation of PDF outlines, embedding of images in PDF format (via
+the
+<a href="images.html#pdf-image">PDF_IMAGE</a>
+macro) and PDF linking (internal and external).
+</p>
+
+<h4 id="mom-pdf" class="docs">2.1.1. Producing PDFs with groff and mom</h4>
+
+<p>
+A manual in PDF format,
+<span class="book-title">Producing PDFs with groff and mom</span>,
+has been added to the documentation. The file,
+<strong>mom-pdf.pdf</strong> can be found in
+<br/>
+<span class="pre-in-pp">
+ /usr/local/share/doc/groff-1.21/pdf/
+</span>
+or
+<br/>
+<span class="pre-in-pp">
+ /usr/share/doc/groff-base/pdf/
+</span>
+or at
+<br/>
+<span class="pre-in-pp">
+ <a href="http://www.schaffter.ca/mom/momdoc/mom-pdf.pdf">http://www.schaffter.ca/mom/momdoc/mom-pdf.pdf</a>
+</span>
+PDF usage, and all associated macros except
+<a href="#pdf-image">PDF_IMAGE</a>,
+are fully explained in the manual, which should be considered an
+integral part of the present documentation. In addition, the mom
+source file for the manual can be found in
+<br/>
+<span class="pre-in-pp">
+ /usr/local/share/doc/groff-1.21/examples/mom
+</span>
+or
+<br/>
+<span class="pre-in-pp">
+ /usr/share/doc/groff-base/examples/mom/
+</span>
+and provides an excellent demonstration of mom usage.
+</p>
+
+<h4 id="pdf-image" class="docs">2.1.2. PDF_IMAGE</h4>
+
+<p>
+A new macro for embedding PDF images has been added,
+<a href="images.html#pdf-image"><kbd>PDF_IMAGE</kbd></a>.
+</p>
+
+<p>
+<kbd>PDF_IMAGE</kbd> functions similarly to <kbd>PSPIC</kbd> and
+accepts the same arguments. Differences in implementation are that
+PDF_IMAGE requires the image dimensions (the bounding box) to be
+supplied. Instructions for getting the bounding box are included in
+the documentation entry for PDF_IMAGE. Two additional options,
+<kbd>SCALE</kbd> and <kbd>ADJUST</kbd>, allow scaling of the image
+and optical centering.
+</p>
+
+<h3 id="covers" class="docs">2.2. Covers</h3>
+
+<p>
+Arguments to
+<a href="cover.html#cover"><kbd>COVER</kbd></a>
+and
+<a href="cover.html#doc-cover"><kbd>DOC_COVER</kbd></a>
+may now be given in any order.
+</p>
+
+<h3 id="headings" class="docs">2.3. Headings</h3>
+
+<p>
+The 1.x macros
+<br/>
+<span class="pre-in-pp">
+ HEAD SUBHEAD SUBSUBHEAD
+</span>
+are now deprecated and have been replaced by a single macro,
+<br/>
+<span class="pre-in-pp">
+ <a href="docelement.html#heading"><kbd>HEADING &lt;n&gt;</kbd></a>
+</span>
+where <kbd>&lt;n&gt;</kbd> is the heading level. The deprecated
+macros may still be used, and conform in style to their original
+defaults; they are, however, wrappers around
+<kbd>HEADING</kbd> levels 1 - 3.
+Both the wrappers and <kbd>HEADING</kbd> itself can take a
+<kbd>NAMED &lt;id&gt;</kbd> argument, specifying a PDF link
+destination.
+</p>
+
+<p>
+Styling of headings is managed by a single macro,
+<br/>
+<span class="pre-in-pp">
+ <a href="docelement.html#heading"><kbd>HEADING_STYLE &lt;n&gt;</kbd></a>
+</span>
+where <kbd>&lt;n&gt;</kbd> conforms to a <kbd>HEADING</kbd> level.
+The control macros for HEAD, SUBHEAD and SUBSUBHEAD have been
+removed. Users wishing to style the wrappers must use
+<kbd>HEADING_STYLE</kbd>.
+</p>
+
+<p>
+<kbd>PARAHEAD</kbd> is no longer valid. Paragraph heads in
+2.0 are created by passing the <kbd>PARAHEAD</kbd> argument to
+<kbd>.HEADING</kbd>. Mom will abort with an informational message
+whenever she encounters <kbd>.PARAHEAD</kbd>.
+</p>
+
+<h3 id="margin-notes" class="docs">2.4. Margin notes</h3>
+
+<p>
+The macro for setting margin note parameters,
+<a href="docelement.html#mn-init"><kbd>MN_INIT</kbd></a>,
+has been re-written such that each parameter now has the form
+<br/>
+<span class="pre-in-pp">
+ &lt;PARAMETER&gt; &lt;value&gt;
+</span>
+This differs from 1.x where parameters were entered without a
+preceding <kbd>&lt;PARAMETER&gt;</kbd> flag. Parameters may be
+entered in any order. Any that are skipped are set to default
+values. Documents created with 1.x will have to have their
+<kbd>MN_INIT</kbd> updated accordingly.
+</p>
+
+<h3 id="floats" class="docs">2.5. Floats</h3>
+
+<p>
+A
+<a href="images.html#floats-intro">FLOAT</a>
+macro has been added, which functions similarly to the <kbd>ms</kbd>
+macros&#8217; <kbd>.KF/.KE</kbd>, ie the contents of the float are
+output immediately if there&#8217;s room on the page; otherwise,
+normal text processing continues and the contents are output at the
+top of the next page. An <kbd>ADJUST</kbd> argument to FLOAT allows
+for optical centering.
+</p>
+
+<h3 id="table-of-contents" class="docs">2.6. Table of contents</h3>
+
+<p>
+The default look of the Table of Contents has been overhauled to
+produce a more typographically pleasing result. All control macros
+for TOC title and entry styles have been removed, replaced by the
+macros
+<br/>
+<span class="pre-in-pp">
+ <a href="tables-of-contents.html#toc-title-style">TOC_TITLE_STYLE</a>
+</span>
+and
+<br/>
+<span class="pre-in-pp">
+ <a href="tables-of-contents.html#toc-title-style">TOC_ENTRY_STYLE &lt;n&gt;</a>
+</span>
+where <kbd>&lt;n&gt;</kbd> corresponds to a <kbd>HEADING</kbd>
+level. Both macros permit setting any or all of the style
+parameters for TOC titles (ie chapters or major sections/divisions
+of a collated document) and TOC entries (nested heading levels) at
+once. Documents created with 1.x that contain TOCs will need to
+have their TOC style updated if the new defaults are unsatisfactory.
+</p>
+
+<p>
+Two new TOC control macros have been added,
+<br/>
+<span class="pre-in-pp">
+ <a href="tables-of-contents.html#space-toc-items">SPACE_TOC_ITEMS</a>
+</span>
+and
+<br/>
+<span class="pre-in-pp">
+ <a
+ href="tables-of-contents.html#auto-relocate-toc">AUTO_RELOCATE_TOC</a>
+</span>
+<kbd>SPACE_TOC_ITEMS</kbd> groups TOC entry levels and separates
+them with a discrete amount of whitespace. This leads to improved
+legibility, and is highly recommended even though it is not
+mom&#8217;s default. <kbd>AUTO_RELOCATE_TOC</kbd> intelligently
+repositions the Table of Contents to the top of a document when
+the mom source file is processed with
+<a href="pdfmom"><strong>pdfmom</strong></a>.
+</p>
+
+<h2 id="pdfmom" class="docs">3. pdfmom</h2>
+
+<p>
+Deri James has provided <strong>pdfmom</strong>, a wrapper around
+groff that processes mom source files with all the PDF bells and
+whistles. Its use is highly recommended. Usage is explained in the
+manual,
+<a href="http://www.schaffter.ca/mom/pdf/mom-pdf.pdf"><span class="book-title">Producing PDFs with groff and mom</span></a>.
+A significant convenience of <strong>pdfmom</strong> is that it can,
+with the <kbd>-Tps</kbd> flag, be used to pass processing over to Keith
+Marshall&#8217;s <strong>pdfroff</strong>. This is useful when
+processing files that contain PostScript images embedded with
+<kbd>PSPIC</kbd>. <strong>pdfmom</strong>, without the flag, uses
+groff&#8217;s PDF device (<strong>gropdf</strong>), which only
+recognizes PDF images that have been embedded with
+<a href="images.html#pdf-image"><kbd>PDF_IMAGE</kbd></a>.
+</p>
+
+<h2 id="install-font" class="docs">4. install-font</h2>
+
+<p>
+A bash script, <strong>install-font</strong>, has been posted at the
+<a href="http://www.schaffter.ca/mom/mom-01.html">mom site</a>.
+There&#8217;s nothing mom-specific about the script, and it is not
+an official part of groff.
+</p>
+
+<p>
+Installing groff fonts is a multi-step procedure, which, while not
+difficult, can be a nuisance. <strong>install-font</strong> takes
+care of all the details, including converting fonts to formats
+acceptable to <strong>grops</strong> and <strong>gropdf</strong>,
+creating and installing the groff fonts in the appropriate
+directories, updating the <strong>download</strong> files, and
+installing the original fonts in a system-wide directory, if
+desired.
+</p>
+
+<div class="rule-long"><hr/></div>
+
+<!-- Navigation links -->
+<table style="width: 100%; margin-top: 12px;">
+<tr>
+ <td style="width: 33%;"><a href="toc.html">Back to Table of Contents</a></td>
+ <td style="width: 20%; text-align: center;"><a href="#top">Top</a></td>
+ <td style="width: 46%; text-align: right;"><a href="intro.html">Next: Introduction to mom</a></td>
+</tr>
+</table>
+
+</div>
+
+<div class="bottom-spacer"><br/></div>
+
+</body>
+</html>
+<!-- vim: fileencoding=utf-8: nomodified: -->
diff --git a/contrib/mom/om.tmac b/contrib/mom/om.tmac
index 0f2ec03..4ce2210 100644
--- a/contrib/mom/om.tmac
+++ b/contrib/mom/om.tmac
@@ -2,15 +2,17 @@
.ig
Mom -- a typesetting/document-processing macro set for groff.
-Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
- Written by Peter Schaffter (peter@schaffter.ca)
+Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+2011, 2012
+Free Software Foundation, Inc.
+ Written by Peter Schaffter <peter@schaffter.ca>
+ PDF integration contributed by Deri James <deri.james@chuzzlewit.co.uk>
This file is part of groff.
-groff is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation, either version 3 of the License, or
+groff is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
groff is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -21,26 +23,25 @@ for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-Version 1.6
------------
+Version 2.0-a
+-------------
Antoine de St-Exupry asserted that elegance in engineering is
achieved not when there is nothing left to add, but when there is
nothing left to take away.
By those standards, mom is a Rube Goldberg contraption. She was
created over the years while groff, and my understanding of it,
-changed and evolved. However, I'm a firm believer in "if it
-ain't broke, don't fix it," so I'm leaving any major clean-up
-of redundancies and whatnot for a rainy day.
-
-Inasmuch as possible, macros that turn a feature on or off follow
-a similar style. Invoking the macro without an argument turns
-the feature on. Invoking it with any other argument turns it off.
-Use of the argument OFF is recommended, but not required; users
-may find other conventions preferable (e.g. NO, X, END, QUIT, etc.).
+changed and evolved. However, I'm a firm believer in "if it ain't
+broke, don't fix it." Version 2.0 removes some of the redundancies
+and cruft, but mom still needs some nip and tuck.
"<anything>" in the description of arguments that can be passed
to a macro means that any argument turns the feature off.
+
+Thanks to everyone who has contributed suggestions and patches, and
+to those whose GPL'd work has been plundered. Special thanks to
+Werner Lemberg (margin notes), Tadziu Hoffman (underlining), and
+Deri James (pdf integration).
..
.\" %beginstrip%
\#
@@ -52,46 +53,123 @@ to a macro means that any argument turns the feature off.
\# Check that GNU troff is being run
.if !\n[.g]=1 \
. ab [mom]: The mom macros require that you be running GNU troff.
-.if \n(.C \
+.if \n[.C] \
. ab [mom]: The groff mom macros do not work in compatibility mode.
\# Add supplementary styles
+.sty \n[.fp] UL \" Ultra Light
+.sty \n[.fp] ULI \" Ultra Light Italic
+.sty \n[.fp] ULCD \" Ultra Light Condensed
+.sty \n[.fp] ULCDI \" Ultra Light Condensed Italic
+.sty \n[.fp] ULEX \" Ultra Light Extended
+.sty \n[.fp] ULEXI \" Ultra Light Extended Italic
+\#
+.sty \n[.fp] XL \" Extra Light
+.sty \n[.fp] XLI \" Extra Light Italic
+.sty \n[.fp] XLCD \" Extra Light Condensed
+.sty \n[.fp] XLCDI \" Extra Light Condensed Italic
+.sty \n[.fp] XLEX \" Extra Light Extended
+.sty \n[.fp] XLEXI \" Extra Light Extended Italic
+\#
+.sty \n[.fp] TH \" Thin
+.sty \n[.fp] THI \" Thin Italic
+.sty \n[.fp] THCD \" Thin Condensed
+.sty \n[.fp] THCDI \" Thin Condensed Italic
+.sty \n[.fp] THEX \" Thin Extended
+.sty \n[.fp] THEXI \" Thin Extended Italic
+\#
.sty \n[.fp] L \" Light Roman
.sty \n[.fp] LI \" Light Italic
-.sty \n[.fp] LCD \" Light Condensed Roman
+.sty \n[.fp] LCD \" Light Condensed
.sty \n[.fp] LCDI \" Light Condensed Italic
-.sty \n[.fp] LEX \" Light Extended Roman
+.sty \n[.fp] LEX \" Light Extended
.sty \n[.fp] LEXI \" Light Extended Italic
-.sty \n[.fp] CD \" Medium/Book Condensed Roman
-.sty \n[.fp] CDI \" Medium/Book Condensed Italic
-.sty \n[.fp] EX \" Medium/Book Extended Roman
-.sty \n[.fp] EXI \" Medium/Book Extended Italic
+\#
+.sty \n[.fp] BK \" Book Roman
+.sty \n[.fp] BKI \" Book Italic
+.sty \n[.fp] BKCD \" Book Condensed
+.sty \n[.fp] BKCDI \" Book Condensed Italic
+.sty \n[.fp] BKEX \" Book Extended
+.sty \n[.fp] BKEXI \" Book Extended Italic
+\#
+.sty \n[.fp] CD \" Medium Condensed
+.sty \n[.fp] CDI \" Medium Condensed Italic
+.sty \n[.fp] EX \" Medium Extended
+.sty \n[.fp] EXI \" Medium Extended Italic
+\#
.sty \n[.fp] DB \" DemiBold Roman
.sty \n[.fp] DBI \" DemiBold Italic
-.sty \n[.fp] BCD \" Bold Condensed Roman
+.sty \n[.fp] DBCD \" DemiBold Condensed
+.sty \n[.fp] DBCDI \" DemiBold Condensed Italic
+.sty \n[.fp] DBEX \" DemiBold Extended
+.sty \n[.fp] DBEXI \" DemiBold Extended Italic
+\#
+.sty \n[.fp] SB \" SemiBold Roman
+.sty \n[.fp] SBI \" SemiBold Italic
+.sty \n[.fp] SBCD \" SemiBold Condensed
+.sty \n[.fp] SBCDI \" SemiBold Condensed Italic
+.sty \n[.fp] SBEX \" SemiBold Extended
+.sty \n[.fp] SBEXI \" SemiBold Extended Italic
+\#
+.sty \n[.fp] BCD \" Bold Condensed
.sty \n[.fp] BCDI \" Bold Condensed Italic
-.sty \n[.fp] BEX \" Bold Extended Roman
+.sty \n[.fp] BEX \" Bold Extended
.sty \n[.fp] BEXI \" Bold Extended Italic
-.sty \n[.fp] HV \" Heavy Roman
+.sty \n[.fp] BO \" Bold Outline
+\#
+.sty \n[.fp] XB \" Extra Bold
+.sty \n[.fp] XBI \" Extra Bold Italic
+.sty \n[.fp] XBCD \" Extra Bold Condensed
+.sty \n[.fp] XBCDI \" Extra Bold Condensed Italic
+.sty \n[.fp] XBEX \" Extra Bold Extended
+.sty \n[.fp] XBEXI \" Extra Bold Extended Italic
+\#
+.sty \n[.fp] UB \" Ultra Bold
+.sty \n[.fp] UBI \" Ultra Bold Italic
+.sty \n[.fp] UBCD \" Ultra Bold Condensed
+.sty \n[.fp] UBCDI \" Ultra Bold Condensed Italic
+.sty \n[.fp] UBEX \" Ultra Bold Extended
+.sty \n[.fp] UBEXI \" Ultra Bold Extended Italic
+\#
+.sty \n[.fp] HV \" Heavy
.sty \n[.fp] HVI \" Heavy Italic
-.sty \n[.fp] HVCD \" Heavy Condensed Roman
+.sty \n[.fp] HVCD \" Heavy Condensed
.sty \n[.fp] HVCDI \" Heavy Condensed Italic
-.sty \n[.fp] HVEX \" Heavy Extended Roman
+.sty \n[.fp] HVEX \" Heavy Extended
.sty \n[.fp] HVEXI \" Heavy Extended Italic
-.sty \n[.fp] BL \" Black Roman
+\#
+.sty \n[.fp] BL \" Black
.sty \n[.fp] BLI \" Black Italic
-.sty \n[.fp] BLCD \" Black Condensed Roman
+.sty \n[.fp] BLCD \" Black Condensed
.sty \n[.fp] BLCDI \" Black Condensed Italic
-.sty \n[.fp] BLEX \" Black Extended Roman
+.sty \n[.fp] BLEX \" Black Extended
.sty \n[.fp] BLEXI \" Black Extended Italic
-.sty \n[.fp] UBL \" Ultra-Black Roman
-.sty \n[.fp] UBLI \" Ultra-Black Italic
+.sty \n[.fp] BLO \" Black Outline
+\#
+.sty \n[.fp] XBL \" Extra Black
+.sty \n[.fp] XBLI \" Extra Black Italic
+.sty \n[.fp] XBLCD \" Extra Black
+.sty \n[.fp] XBLCDI \" Extra Black
+.sty \n[.fp] XBLEX \" Extra Black Italic
+.sty \n[.fp] XBLEXI \" Extra Black Italic
+\#
+.sty \n[.fp] UBL \" Ultra Black
+.sty \n[.fp] UBLI \" Ultra Black Italic
+.sty \n[.fp] UBLCD \" Ultra Black Condensed
+.sty \n[.fp] UBLCDI \" Ultra Black Condensed Italic
+.sty \n[.fp] UBLEX \" Ultra Black Exteneded
+.sty \n[.fp] UBLEXI \" Ultra Black Extended Italic
+\#
+.sty \n[.fp] SC \" Small Caps Roman
+.sty \n[.fp] SCI \" Small Caps Italic
+.sty \n[.fp] SCDB \" Small Caps Demibold
+.sty \n[.fp] SCDBI \" Small Caps Demibold Italic
+.sty \n[.fp] SCSB \" Small Caps Semibold
+.sty \n[.fp] SCSBI \" Small Caps Semibold Italic
\#
\# Instruct grops to use square linecaps and joins.
\# This instruction is also executed in DO_B_MARGIN, NEWPAGE, and HEADER
\#
-.if !n \{\
-\X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap'
-.\}
+.if !n \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap'
\#
\# The following PostScript, provided by Tadziu Hoffmann, permits
\# no-fail underlining
@@ -132,9 +210,11 @@ decornone
/T { moveto 0 exch 0 SC 5 2 roll X awidthshow Y } def
end
..
-.if !n \{\
-\Y[ul*ps]
-.\}
+\#
+.if !n \Y[ul*ps]
+.if n .color 0
+.nr TOC.RELOCATE 0 \" TOC.RELOCATE is off by default
+.ds PDFHREF.TEXTCOL.DEFAULT 0.0 0.3 0.9
\#
\# ====================================================================
\#
@@ -148,14 +228,11 @@ end
.als ALIAS als
.als ALIASN aln
\#
-\#
\# ALIASES FOR GROFF REQUESTS
\# --------------------------
\#
.ALIAS MAC de
.ALIAS BR br
-.ALIAS SP sp
-.ALIAS PAGELENGTH pl
.ALIAS SPREAD brp
.ALIAS ESC_CHAR ec
.ALIAS STRING ds
@@ -168,7 +245,7 @@ end
.ALIASN #DIVER_DEPTH dn \"diversion depth
.ALIASN #DIVER_WIDTH dl \"diversion width
.ALIASN #TRAP_DISTANCE .t \"distance to next trap
-.ALIASN #LEAD .v \"line space (.vs, not .ls)
+.ALIASN #LEAD .v \"line space
.ALIASN #PAGE_LENGTH .p \"page length
.ALIASN #NUM_ARGS .$ \"number of arguments passed to a macro
.ALIASN #INDENT .i \"value of current indent
@@ -177,32 +254,8 @@ end
\#
\# MISCELLANEOUS
\# =============
-.nr #L_MARGIN \n(.o \" Tabs, etc require #L_MARGIN
-.cflags 4 /\(en \" So slash and en-dashes get broken
-.warn 8192
-\#
-\# About the warn level
-\# --------------------
-\#
-\# There's a lot of testing for the presence of number registers and
-\# strings in this macro file. Many of the registers and strings
-\# pop into and out of existence on the fly. For convenience, I
-\# often use
-\#
-\# .if \\n[whatever] and .if !\\n[whatever]
-\#
-\# to test "if the register exists and is (not) empty." Groff,
-\# encountering such tests when called with the -ww options, emits
-\#
-\# warning: number register whatever not defined.
-\#
-\# Groff also warns about strings similarly tested for.
-\#
-\# The warn level, above, is high in order to shut off those
-\# warnings. If you're futzing in this file and need more verbose
-\# warnings, either comment out ".warn 8192" or set the warnlevel
-\# to the one you need (but be ready for lots of what I've just
-\# described).
+.nr #L_MARGIN \n[.o] \" Tabs, etc require #L_MARGIN
+.cflags 4 /\[en] \" So slash and en-dashes get broken
\#
\# ====================================================================
\#
@@ -224,11 +277,11 @@ end
.MAC PAGEWIDTH END
. br
. nr #PAGE_WIDTH \\$1
-. if !r#L_MARGIN \{ .L_MARGIN \\n(.o \}
-. if !r#R_MARGIN \{ .R_MARGIN 1i \}
+. if !r#L_MARGIN .L_MARGIN \\n[.o]
+. if !r#R_MARGIN .R_MARGIN 1i
+. if '\\*[.T]'pdf' \X'papersize=\\n[#PAGE_WIDTH]z,\\n[#PAGE_LENGTH]z'
.END
\#
-\#
\# L_MARGIN
\# --------
\# *Argument:
@@ -245,7 +298,6 @@ end
. po \\n[#L_MARGIN]u
.END
\#
-\#
\# R_MARGIN
\# --------
\# *Argument:
@@ -265,11 +317,10 @@ end
. br
. nr #R_MARGIN (\\$1)
. ll \\n[#PAGE_WIDTH]u-\\n[#L_MARGIN]u-\\n[#R_MARGIN]u
-. ta \\n(.lu
-. nr #L_LENGTH \\n(.l
+. ta \\n[.l]u
+. nr #L_LENGTH \\n[.l]
.END
\#
-\#
\# T_MARGIN
\# --------
\# *Argument:
@@ -283,13 +334,10 @@ end
.MAC T_MARGIN END
. nr #T_MARGIN (\\$1)
. nr #TOP 1
-. if !\\n[#DOCS] \{\
-. sp |\\n[#T_MARGIN]u-1v
-. \}
+. if !\\n[#DOCS] .sp |\\n[#T_MARGIN]u-1v
. wh 0i DO_T_MARGIN
.END
\#
-\#
\# B_MARGIN
\# --------
\# *Argument:
@@ -307,7 +355,6 @@ end
. wh -\\n[#B_MARGIN]u DO_B_MARGIN
.END
\#
-\#
\# PAGE
\# ----
\# *Arguments:
@@ -326,12 +373,19 @@ end
. br
. PAGEWIDTH \\$1
. PAGELENGTH \\$2
-. ie '\\$3'' \{ .L_MARGIN \\n(.o \}
-. el \{ .L_MARGIN \\$3 \}
-. ie '\\$4'' \{ .R_MARGIN 1i \}
-. el \{ .R_MARGIN \\$4 \}
-. if !'\\$5'' \{ .T_MARGIN \\$5 \}
-. if !'\\$6'' \{ .B_MARGIN \\$6 \}
+. ie '\\$3'' .L_MARGIN \\n[.o]
+. el .L_MARGIN \\$3
+. ie '\\$4'' .R_MARGIN 1i
+. el .R_MARGIN \\$4
+. if !'\\$5'' .T_MARGIN \\$5
+. if !'\\$6'' .B_MARGIN \\$6
+.END
+\#
+\# gropdf: pass pagelength to postprocessor; no need for -P-p
+\#
+.MAC PAGELENGTH END
+. pl \\$*
+. if '\\*[.T]'pdf' \X'papersize=\\n[#PAGE_WIDTH]z,\\n[#PAGE_LENGTH]z'
.END
\#
\# =====================================================================
@@ -357,7 +411,6 @@ end
. sp -\\n[#T_MARGIN_LEAD_ADJ]u
.END
\#
-\#
\# DO_B_MARGIN
\# -----------
\# *Argument:
@@ -371,11 +424,10 @@ end
. nr #T_MARGIN_LEAD_ADJ \\n[#LEAD]-12000
. ev B_MARGIN
. bp
-. if !n \{ .nop \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap' \}
+. if !n .nop \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap'
. ev
.END
\#
-\#
\# NEWPAGE
\# -------
\# *Argument:
@@ -391,42 +443,32 @@ end
' br
. rr #NO_BREAK
. \}
-. el \{\
-. br
-. \}
+. el .br
. nr #NEWPAGE 1
. ie \\n[#B_MARGIN_SET]=1 \{\
. ie !\\n[#DOCS]=1 \{\
. ev NP
. bp
-. if !n \{ .nop \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap' \}
+. if !n .nop \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap'
. ev
. \}
. el \{\
-. if \\n[#COLUMNS]=1 \{ .nr #COL_NUM \\n[#NUM_COLS] \}
+. if \\n[#COLUMNS]=1 .nr #COL_NUM \\n[#NUM_COLS]
. ie !\\n[#FN_DEPTH] \{\
. ch FN_OVERFLOW_TRAP
-. DO_B_MARGIN
+. bp
. wh -(\\n[#FN_OVERFLOW_TRAP_POS]u) FN_OVERFLOW_TRAP
. \}
-. el \{\
-. DO_B_MARGIN
-. \}
+. el .bp
. \}
. \}
-. el \{\
-. DO_B_MARGIN
-. \}
+. el .DO_B_MARGIN
.END
\#
\# =====================================================================
\#
\# +++GENERAL STYLE MACROS+++
\#
-\# Macros that are likely to appear together to define general
-\# type style: line length, family, font, point size, and line
-\# spacing.
-\#
\# LINE LENGTH
\# -----------
\# *Argument:
@@ -440,11 +482,10 @@ end
.MAC LL END
. nr #USER_SET_L_LENGTH 1
. ll \\$1
-. nr #L_LENGTH \\n(.l
-. ta \\n(.lu
+. nr #L_LENGTH \\n[.l]
+. ta \\n[.l]u
.END
\#
-\#
\# +++FAMILY AND FONT+++
\#
\# FALLBACK FONT
@@ -466,20 +507,18 @@ end
\#
.MAC FALLBACK_FONT END
. if \\n[#NUM_ARGS]=1 \{\
-. if '\\$1'ABORT' \{ .nr #ABORT_FT_ERRORS 1 \}
+. if '\\$1'ABORT' .nr #ABORT_FT_ERRORS 1
. if '\\$1'WARN' \{\
-. if r#ABORT_FT_ERRORS \{ .nr #ABORT_FT_ERRORS 0 \}
+. if r #ABORT_FT_ERRORS .nr #ABORT_FT_ERRORS 0
. \}
. if !'\\$1'ABORT' \{\
-. if !'\\$1'WARN' \{\
-. fp 0 dummy \\$1
-. \}
+. if !'\\$1'WARN' .fp 0 dummy \\$1
. \}
. \}
. if \\n[#NUM_ARGS]=2 \{\
. fp 0 dummy \\$1
-. if '\\$2'ABORT' \{ .nr #ABORT_FT_ERRORS 1 \}
-. if '\\$2'WARN' \{ .nr #ABORT_FT_ERRORS 0 \}
+. if '\\$2'ABORT' .nr #ABORT_FT_ERRORS 1
+. if '\\$2'WARN' .nr #ABORT_FT_ERRORS 0
. \}
.END
\#
@@ -503,26 +542,21 @@ end
. fam \\*[$TYPEWRITER_FAM]
. return
. \}
-. if (\\n[.x]\\n[.y]\\n[.Y] >= 1192) \{\
-. ds $SAVED_STYLE \\n[.sty]
-. \}
+. if (\\n[.x]\\n[.y]\\n[.Y] >= 1192) .ds $SAVED_STYLE \\n[.sty]
. ft 0
. fam \\*[$FAMILY]
. if (\\n[.x]\\n[.y]\\n[.Y] >= 1192) \{\
. ft \\*[$SAVED_STYLE]
-. if !F\\n[.fn] \{\
-. ft 0
-. \}
+. if !F\\n[.fn] .ft 0
. \}
-. ie \\n[#PRE_COLLATE]=1 \{ . \}
+. ie \\n[#PRE_COLLATE]=1 .
. el \{\
. if \\n[#COLLATE]=1 \{\
-. if !r#START \{ .DOC_FAM \\*[$FAMILY] \}
+. if !r#START .DOC_FAM \\*[$FAMILY]
. \}
. \}
.END
\#
-\#
\# FONT
\# ----
\# *Argument:
@@ -545,9 +579,7 @@ end
. \}
. \}
. el \{\
-. ev 1
. UNDERLINE OFF
-. ev
. \}
. return
. \}
@@ -557,26 +589,25 @@ end
. if '\\n[.sty]'' \{\
. if !F\\n[.fn] \{\
. if !S\\*[$FONT] \{\
-. tm1 "[mom]: Font style "\\*[$FONT]" at line \\n(.c has not been registered.
+. tm1 "[mom]: Font style "\\*[$FONT]" at line \\n[.c] has not been registered.
. ie \\n[#ABORT_FT_ERRORS]=0 \{\
. tm1 " Continuing to process using fallback font.
. \}
-. el .ab Aborting.
+. el .ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
. if \\n[.f]=0 \{\
-. tm1 "[mom]: Either font style "\\*[$FONT]" at line \\n(.c does not exist in family "\\n[.fam]",
-. tm1 " or family "\\n[.fam]" has not been installed in font/devps.
+. tm1 "[mom]: Either font style "\\*[$FONT]" at line \\n[.c] does not exist in family "\\n[.fam]",
+. tm1 " or family "\\n[.fam]" has not been installed.
. ie \\n[#ABORT_FT_ERRORS]=0 \{\
. tm1 " Continuing to process using fallback font.
. \}
-. el .ab Aborting.
+. el .ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
. \}
. \}
. \}
.END
\#
-\#
\# POINT SIZE
\# ----------
\# *Arguments:
@@ -588,18 +619,17 @@ end
\# Must NOT use a unit of measure.
\#
.MAC PT_SIZE END
-. if \\n[#PRINT_STYLE]=1 \{ .return \}
-. if \\n[#IGNORE] \{ .return \}
+. if \\n[#PRINT_STYLE]=1 .return
+. if \\n[#IGNORE] .return
. nr #PT_SIZE_SET 1
. ps \\$1
. if \\n[#AUTO_LEAD] \{\
-. ie \\n[#AUTOLEAD_FACTOR] \{ .vs \\n[#PT_SIZE]u*\\n[#AUTOLEAD_VALUE]u/1000u \}
-. el \{ .vs \\n[#PT_SIZE]u+\\n[#AUTOLEAD_VALUE]u \}
+. ie \\n[#AUTOLEAD_FACTOR] .vs \\n[#PT_SIZE]u*\\n[#AUTOLEAD_VALUE]u/1000u
+. el .vs \\n[#PT_SIZE]u+\\n[#AUTOLEAD_VALUE]u
. \}
. nr #PT_SIZE_IN_UNITS \\n[.ps]
.END
\#
-\#
\# SIZE (inline)
\# -------------
\# *Arguments:
@@ -615,7 +645,6 @@ end
.ps \\$1
.END
\#
-\#
\# LEADING
\# -------
\# *Argument:
@@ -628,16 +657,16 @@ end
\#
.MAC LS END
. br
-. nr #OLD_LEAD \\n(.v
-. if \\n[#PRINT_STYLE]=1 \{ .return \}
-. if \\n[#IGNORE] \{ .return \}
+. nr #OLD_LEAD \\n[.v]
+. if \\n[#PRINT_STYLE]=1 .return
+. if \\n[#IGNORE] .return
. if \\n[#AUTO_LEAD] \{\
. rr #AUTO_LEAD
. rr #AUTOLEAD_FACTOR
. \}
. vs \\$1
. if \\n[#TOP] \{\
-. nr #TOP_BASELINE_ADJ \\n(.v-\\n[#OLD_LEAD]
+. nr #TOP_BASELINE_ADJ \\n[.v]-\\n[#OLD_LEAD]
. sp -\\n[#TOP_BASELINE_ADJ]u
. rr #TOP
. rr #TOP_BASELINE_ADJ
@@ -649,7 +678,6 @@ end
. ch RESET_LEAD
.END
\#
-\#
\# AUTOLEAD
\# --------
\# *Argument:
@@ -665,10 +693,10 @@ end
\# together.
\#
.MAC AUTOLEAD END
-. if \\n[#PRINT_STYLE]=1 \{ .return \}
-. if \\n[#IGNORE] \{ .return \}
+. if \\n[#PRINT_STYLE]=1 .return
+. if \\n[#IGNORE] .return
. nr #AUTO_LEAD 1
-. nr #OLD_LEAD \\n(.v
+. nr #OLD_LEAD \\n[.v]
. nr #AUTOLEAD_VALUE (p;\\$1)
. ie \\n[#NUM_ARGS]=2 \{\
. if '\\$2'FACTOR' \{\
@@ -676,24 +704,21 @@ end
. vs \\n[#PT_SIZE]u*\\n[#AUTOLEAD_VALUE]u/1000u
. \}
. \}
-. el \{\
-. vs \\n[#PT_SIZE]u+\\n[#AUTOLEAD_VALUE]u
-. \}
+. el .vs \\n[#PT_SIZE]u+\\n[#AUTOLEAD_VALUE]u
. if \\n[#TOP] \{\
-. nr #TOP_BASELINE_ADJ \\n(.v-\\n[#OLD_LEAD]
+. nr #TOP_BASELINE_ADJ \\n[.v]-\\n[#OLD_LEAD]
. sp -\\n[#TOP_BASELINE_ADJ]u
. rr #TOP
. rr #TOP_BASELINE_ADJ
. \}
.END
\#
-\#
\# STRINGS FOR INLINE CONTROL OF GENERAL TYPE STYLE
\# ------------------------------------------------
-.ds ROM \EfR
-.ds IT \EfI
-.ds BD \EfB
-.ds BDI \Ef(BI
+.ds ROM \Ef[R]
+.ds IT \Ef[I]
+.ds BD \Ef[B]
+.ds BDI \Ef[BI]
.ds PREV \Ef[]
.ds S \Es
\#
@@ -719,34 +744,22 @@ end
. \}
.END
\#
-\#
\# INLINE KERNING AND HORIZONTAL MOVEMENT
\# --------------------------------------
-\# Kerning
-\#
-\# Inline kerning provides a simple method for users to adjust the
-\# amount of space between any two letters. It's predicated on a
-\# unit of measure "U", which is 1/36 of the current point size as
-\# returned by \n[.ps]. E.g., if the current point size is 18,
-\# \n[.ps] returns 18000u, therefore U=500u. Since U remains
-\# proportional relative to the current point size, the amount
-\# of kerning between two letters as expressed in Us remains
-\# visually similar regardless of changes in point size.
-\#
+\#
+\# Inline kerning provides a simple way to adjust the amount of
+\# space between any two letters. It's predicated on a unit of
+\# measure "U", which is 1/36 of the current point size as returned
+\# by \n[.ps]. E.g., if the current point size is 18, \n[.ps]
+\# returns 18000u, therefore U=500u. Since U remains proportional
+\# relative to the current point size, the amount of kerning
+\# between two letters as expressed in Us remains visually similar
+\# regardless of changes in point size.
+\#
\# N.B.--the amount of inline kerning supplied by \*[BU<n>] or
\# \*[FU<n>] is added to or subtracted from any kerning that already
\# takes place between two characters when automatic kerning is
\# turned on.
-\#
-\# In groff v. 1.17.2, it was not possible to pass arguments to macros that
-\# were called with inline escapes, nor thence to evaluate conditional
-\# expressions. Consequently, each pseudo-escape \[BU<n>] had to be defined
-\# separately with ".char".
-\#
-\# As of v. 1.18, one can pass arguments to inline strings/macros,
-\# hence it is now possible to do \*[BU n] where n, inline, is the desired
-\# number of kern units. The original .char definitions have been left in
-\# for backward compatibility with documents created prior to mom-1.1.3c.
\#
.nr #KERN_UNIT 36
.ds BU \h'-(\En[#PT_SIZE]u/\n[#KERN_UNIT]u*\\$1u)'
@@ -761,7 +774,7 @@ end
\#
.nr #LOOP 0 1
.while \n+[#LOOP]<37 \{\
-. ds FU\n[#LOOP] \h'(\En[#PT_SIZE]u/\n[#KERN_UNIT]u*\n[#LOOP]u)'
+. ds FU\n[#LOOP] \h'(\En[#PT_SIZE]u/\n[#KERN_UNIT]u*\n[#LOOP]u)'
.\}
.rr #LOOP
\#
@@ -770,10 +783,6 @@ end
\# BP1...12.75 and FP1...12.75 move backwards or forwards inline by the
\# specified number of points.
\#
-\# Left in for backward compatibility with mom-1.1.3c, the
-\# preferred methods for inline horizontal movements are now
-\# \*[BCK <n><unit>] and \*[FWD <n><unit>].
-\#
.ds BCK \h'-\\$1'
.ds FWD \h'\\$1'
\#
@@ -881,16 +890,10 @@ end
.ds FP12.5 \h'12.5p'
.ds FP12.75 \h'12.75p'
\#
-\#
-\# WHOLE LINE KERNING (RW and EW)
-\# -----------------------------
-\# The line kerning macros are special instances of track kerning,
-\# used where a complete line needs to be tightened (or relaxed) in
-\# order to accomodate or remove one or two more characters
-\# than the default justification permits.
-\#
+\# WHOLE LINE (TRACK) KERNING
+\# --------------------------
\# *Argument:
-\# <amount of overall "kerning" (letter spacing) to apply to the line>
+\# <amount of track kerning>
\# *Function:
\# Invokes .tkf (track kerning) for the current font with
\# 1 as both the upper and lower point size limits, so that
@@ -901,49 +904,39 @@ end
\# *Notes:
\# Decimal values are acceptable.
\#
-\# The groff documentation is a tad confusing about what unit of
-\# measure is used in track kerning, only that the width of each
-\# character is increased or decreased by the amount(s) passed as
-\# arguments to .tkf, and something about linear function of point
-\# size. In fact, with the way I've put this macro together, it
-\# doesn't matter. All the user needs to know is that a value of
-\# one will produce an unacceptably tight or loose line at most text
-\# point sizes; therefore, effective use of RW and EW is in the
-\# fractional range below 1 (e.g. .25, .5). Given that RW and EW
-\# are for massaging type, a certain amount of experimentation and
-\# previewing is expected and necessary.
-\#
-\# \n(.f holds the current font number, which is acceptable to .tkf.
-\#
+\# A value of 1 will produce an unacceptably tight or loose line
+\# at most text point sizes; therefore, effective use of RW and
+\# EW is in the fractional range below 1.
+\#
+\# \n[.f] holds the current font number, which is acceptable to .tkf.
+\#
\# RW and EW must be reset to 0 to cancel their effect on subsequent
\# output lines.
\#
.MAC RW END
. if \\n[#BR_AT_LINE_KERN] \{\
-. ie \\n[#JUSTIFY]=1 \{ .brp \}
-. el \{ .br \}
+. ie \\n[#JUSTIFY]=1 .brp
+. el .br
. \}
. rr #EW
. rm $EW
. nr #RW 1
. ds $RW \\$1
-. tkf \\n(.f 1 -\\$1 1 -\\$1
+. tkf \\n[.f] 1 -\\$1 1 -\\$1
.END
\#
-\#
.MAC EW END
. if \\n[#BR_AT_LINE_KERN] \{\
-. ie \\n[#JUSTIFY]=1 \{ .brp \}
-. el \{ .br \}
+. ie \\n[#JUSTIFY]=1 .brp
+. el .br
. \}
. rr #RW
. rm $RW
. nr #EW 1
. ds $EW \\$1
-. tkf \\n(.f 1 \\$1 1 \\$1
+. tkf \\n[.f] 1 \\$1 1 \\$1
.END
\#
-\#
\# BREAK AT LINE KERN
\# ------------------
\# *Arguments:
@@ -956,8 +949,8 @@ end
\# default and must be invoked explicitly.
\#
.MAC BR_AT_LINE_KERN END
-. ie '\\$1'' \{ .nr #BR_AT_LINE_KERN 1 \}
-. el \{ .rr #BR_AT_LINE_KERN \}
+. ie '\\$1'' .nr #BR_AT_LINE_KERN 1
+. el .rr #BR_AT_LINE_KERN
.END
\#
\# =====================================================================
@@ -999,7 +992,7 @@ end
. nr #HYPHENATE 1
. \}
. el \{\
-. if !'\\$1'LINES' \{\
+. if !'\\$1'LINES' \{\
. nh
. nr #HYPHENATE 0
. \}
@@ -1007,17 +1000,17 @@ end
. nh
. nr #HYPHENATE 0
. \}
-. if !'\\$1'SPACE' \{\
+. if !'\\$1'SPACE' \{\
. nh
. nr #HYPHENATE 0
. \}
-. if !'\\$1'DEFAULT' \{\
+. if !'\\$1'DEFAULT' \{\
. nh
. nr #HYPHENATE 0
. \}
-. if '\\$1'LINES' \{ .hlm \\$2 \}
-. if '\\$1'MARGIN' \{ .hym \\$2 \}
-. if '\\$1'SPACE' \{ .hys \\$2 \}
+. if '\\$1'LINES' .hlm \\$2
+. if '\\$1'MARGIN' .hym \\$2
+. if '\\$1'SPACE' .hys \\$2
. if '\\$1'DEFAULT' \{\
. hlm -1
. hym 0
@@ -1026,7 +1019,6 @@ end
. \}
.END
\#
-\#
\# HYPHENATION PARAMETERS
\# ----------------------
\# *Arguments:
@@ -1056,25 +1048,26 @@ end
\# Requires a unit of measure.
\#
.MAC ALD END
-. if \\n(nl=0 \{ .nr #TOP 1 \}
+. br
+. if \\n[nl]=0 .nr #TOP 1
. if '\\$0'ALD' \{\
. nr #ALD (\\$1)
. sp \\n[#ALD]u
. \}
. if '\\$0'ADD_SPACE' \{\
+. vpt 0
. nr #ALD (\\$1)
. rs
-. sp \\n[#ALD]u
-. \}
-. if '\\$0'SPACE' \{\
-. sp \\$1
-. \}
-. if '\\$0'SP' \{\
-. sp \\$1
+. nop \&
+. sp |\\n[#T_MARGIN]u-1v+\\n[#ALD]u
+. rr @TOP
+. nr #SPACE_ADDED 1
+. vpt
. \}
+. if '\\$0'SPACE' .sp \\$1
+. if '\\$0'SP' .sp \\$1
.END
\#
-\#
\# REVERSE LEAD
\# ------------
\# *Argument:
@@ -1086,6 +1079,7 @@ end
\# Requires a unit of measure.
\#
.MAC RLD END
+. br
. nr #RLD (\\$1)
. sp -\\n[#RLD]u
.END
@@ -1094,7 +1088,7 @@ end
\# ---------------
\# The strings \*[ALD.25]...\*[ALD12.75] and their corresponding
\# \*[RLD] forms have been left in for backward compatibility with
-\# documents created using mom-1.1.3c or earlier. The prefered methods
+\# documents created using mom-1.1.3c or earlier. The preferred methods
\# of advancing and reversing on the page inline are \*[UP <n><unit>]
\# and \*[DOWN <n><unit>].
\#
@@ -1216,7 +1210,7 @@ end
\# *Function:
\# Turns automatic ligature generation on or off.
\# *Notes:
-\# Ligatures may be supplied manually with \(fi, \(fl, etc.
+\# Ligatures may be supplied manually with \[fi], \[fl], etc.
\#
.MAC LIGATURES END
. ie '\\$1'' \{\
@@ -1229,7 +1223,6 @@ end
. \}
.END
\#
-\#
\# SMARTQUOTES
\# -----------
\# *Arguments:
@@ -1244,8 +1237,6 @@ end
\# processed. The strings for open/close ($QUOTE<n>) are then
\# defined in the macro.
\#
-\# (Note to myself: code for " is \N'34'.)
-\#
.char " \\*[$QUOTE\\n[#OPEN_CLOSE]]\R'#OPEN_CLOSE (1-\\n[#OPEN_CLOSE])'
\#
.MAC SMARTQUOTES END
@@ -1353,8 +1344,8 @@ end
\#
\# Strings for foot and inch marks
\#
-.ds FOOT \(fm
-.ds INCH \(fm\(fm
+.ds FOOT \[fm]
+.ds INCH \[fm]\[fm]
\#
\# =====================================================================
\#
@@ -1382,9 +1373,10 @@ end
. TRAP
.END
\#
-\# An inline escape to accomplish the same thing. Actually
-\# preferable, since it works with filled and non-filled copy and
-\# doesn't require the user to remember to use (or not use) the \c.
+\# An inline escape to accomplish the same thing.
+\# Preferable, since it works with filled and non-filled copy and
+\# doesn't require the user to remember whether to use (or not use)
+\# \c.
\#
.ds B \h'|0'\R'#NO_ADVANCE 1'\c
\#
@@ -1408,11 +1400,10 @@ end
. \}
' ce 0
. QUAD J
-. if \\n[#PRINT_STYLE]=1 \{ .QUAD L \}
+. if \\n[#PRINT_STYLE]=1 .QUAD L
. nr #PSEUDO_FILL 0
.END
\#
-\#
\# QUAD
\# ----
\# *Arguments:
@@ -1434,35 +1425,35 @@ end
. \}
' ce 0
' fi
-. if '\\*[$QUAD_VALUE]'L' \{\
+. if '\\*[$QUAD_VALUE]'L' \{\
. nr #JUSTIFY 0
. ad l
. \}
-. if '\\*[$QUAD_VALUE]'LEFT' \{\
+. if '\\*[$QUAD_VALUE]'LEFT' \{\
. nr #JUSTIFY 0
. ad l
. \}
-. if '\\*[$QUAD_VALUE]'R' \{\
+. if '\\*[$QUAD_VALUE]'R' \{\
. nr #JUSTIFY 0
. ad r
. \}
-. if '\\*[$QUAD_VALUE]'RIGHT' \{\
+. if '\\*[$QUAD_VALUE]'RIGHT' \{\
. nr #JUSTIFY 0
. ad r
. \}
-. if '\\*[$QUAD_VALUE]'C' \{\
+. if '\\*[$QUAD_VALUE]'C' \{\
. nr #JUSTIFY 0
. ad c
. \}
-. if '\\*[$QUAD_VALUE]'CENTER' \{\
+. if '\\*[$QUAD_VALUE]'CENTER' \{\
. nr #JUSTIFY 0
. ad c
. \}
-. if '\\*[$QUAD_VALUE]'CENTRE' \{\
+. if '\\*[$QUAD_VALUE]'CENTRE' \{\
. nr #JUSTIFY 0
. ad c
. \}
-. if '\\*[$QUAD_VALUE]'J' \{\
+. if '\\*[$QUAD_VALUE]'J' \{\
. nr #JUSTIFY 1
. ad b
. \}
@@ -1473,16 +1464,15 @@ end
. nr #PSEUDO_FILL 0
.END
\#
-\#
\# LEFT, RIGHT, AND CENTER
\# -----------------------
-\# The purpose of these macros is to allow the user to enter lines of
-\# text that will be quadded LRC *without* the user having to enter .BR
-\# or .br between lines. For the sake of consistency, all three appear
-\# to behave similarly (from the point of view of the user), although
-\# the underlying primitives don't. For this reason, LEFT, RIGHT, and
-\# CENTER must be followed by .QUAD [L R C J] or .JUSTIFY to restore
-\# text to groff fill mode.
+\# The purpose of these macros is to allow the user to enter lines
+\# of text that will be quadded LRC having to stick .BR or .br
+\# between lines. For the sake of consistency, all three appear to
+\# behave similarly (from the point of view of the user), although
+\# the underlying primitives don't. For this reason, LEFT, RIGHT,
+\# and CENTER must be followed by .QUAD [L R C J] or .JUSTIFY to
+\# restore text to fill mode.
\#
\# LEFT
\# ----
@@ -1492,10 +1482,9 @@ end
\# Turns fill mode off. Allows user to quad lines left without
\# requiring the .BR or .br macro.
\# *Notes:
-\# LEFT simply turns fill off. Lines that exceed the current LL will
-\# not be broken, just continued (indefinitely) until a return is
-\# encountered. Note that this behaviour differs from the RIGHT and
-\# CENTER macros.
+\# LEFT simply turns fill off. Lines that exceed the current LL
+\# will not be broken. Note that this behaviour differs from the
+\# RIGHT and CENTER macros.
\#
.MAC LEFT END
. if \\n[#TAB_ACTIVE]=0 \{\
@@ -1506,10 +1495,9 @@ end
. nf
. nr #PSEUDO_FILL 1
.\" Fix for a little conflict with DOCTYPE LETTER
-. if '\\n(.z'LETTERHEAD1' \{ .rr #DATE_FIRST \}
+. if '\\n[.z]'LETTERHEAD1' .rr #DATE_FIRST
.END
\#
-\#
\# RIGHT
\# -----
\# *Argument:
@@ -1531,7 +1519,6 @@ end
. nr #PSEUDO_FILL 1
.END
\#
-\#
\# CENTER
\# ------
\# *Argument:
@@ -1557,33 +1544,31 @@ end
\#
\# +++TABS+++
\#
-\# There are two different kinds of tabs available: typesetting tabs
-\# and string tabs.
-\#
+\# There are two different kinds of tabs: typesetting tabs and
+\# string tabs.
+\#
\# Typesetting tabs are set with TAB_SET, which requires a tab number,
\# an indent (offset) from the left margin and a length (optionally
\# with a quad direction and an instruction to fill lines). After tabs
\# are set with TAB_SET, they are called with .TAB n, where "n"
\# corresponds to the number passed to TAB_SET as a valid tab number.
-\#
+\#
\# String tabs allow the user to mark off tab positions inline. Tab
\# indents and lengths are calculated from the beginning and end
\# positions of the marks. Up to 19 string tabs may be created,
\# numbered 1-19. Once created, they are called with .TAB n,
\# just like typesetting tabs.
-\#
+\#
\# Setting up string tabs is a two-step procedure. First, the user
\# enters an input line in which s/he wants to mark off string tabs.
\# The beginning of a tab is marked with \*[STn], where "n" is
\# the desired number of the tab. The end of the the tab is marked
\# with \*[STnX]. All ST's must have a matching STX. String tabs
\# may be nested.
-\#
+\#
\# Next, the user invokes .ST n for every string tab defined, and
\# optionally passes quad information to it. That done, string tabs
\# can be called just like typesetting tabs.
-\#
-\# String tabs don't preview properly with gxditview. Use gv instead.
\#
\# Strings for string tab inlines
\# ------------------------------
@@ -1600,14 +1585,12 @@ end
.\}
.rr #LOOP
\#
-\#
\# These are reserved ST numbers for internal use
.ds ST100 \Ek[#ST100_OFFSET]
.ds ST100X \Ek[#ST100_MARK]
.ds ST101 \Ek[#ST101_OFFSET]
.ds ST101X \Ek[#ST101_MARK]
\#
-\#
\# QUAD AND SET STRING TABS
\# ------------------------
\# *Arguments:
@@ -1623,19 +1606,16 @@ end
\#
.MAC ST END
. ds $ST\\$1_QUAD_DIR \\$2
-. if \\n[#NUM_ARGS]=3 \{\
-. ds $ST\\$1_FILL QUAD
-. \}
+. if \\n[#NUM_ARGS]=3 .ds $ST\\$1_FILL QUAD
. nr #ST\\$1_LENGTH \\n[#ST\\$1_MARK]-\\n[#ST\\$1_OFFSET]
-. ie \\n[#IN_TAB] \{\
-. TAB_SET \\$1 \\n[#ST\\$1_OFFSET]u+\\n[#ST_OFFSET]u \\n[#ST\\$1_LENGTH]u \\*[$ST\\$1_QUAD_DIR] \\*[$ST\\$1_FILL]
-. \}
-. el \{\
-. TAB_SET \\$1 \\n[#ST\\$1_OFFSET]u \\n[#ST\\$1_LENGTH]u \\*[$ST\\$1_QUAD_DIR] \\*[$ST\\$1_FILL]
-. \}
+. ie \\n[#IN_TAB] \
+. TAB_SET \\$1 \\n[#ST\\$1_OFFSET]u+\\n[#ST_OFFSET]u \
+ \\n[#ST\\$1_LENGTH]u \\*[$ST\\$1_QUAD_DIR] \\*[$ST\\$1_FILL]
+. el \
+. TAB_SET \\$1 \\n[#ST\\$1_OFFSET]u \\n[#ST\\$1_LENGTH]u \
+ \\*[$ST\\$1_QUAD_DIR] \\*[$ST\\$1_FILL]
.END
\#
-\#
\# TAB SET
\# -------
\# *Arguments:
@@ -1659,41 +1639,16 @@ end
\#
\# N.B. -- indents *must* be turned off before setting tabs
\#
-\# Examples:
-\# --------
-\#
-\# .TAB_SET 1 2P+6p 12P C
-\#
-\# means "create a tab numbered 1 that starts 2 picas and 6 points from
-\# the left margin, is 12 picas long, and centre each input line."
-\#
-\# .TAB_SET 1 2P+6P 12P C QUAD
-\#
-\# means exactly the same thing, except that input lines are joined and
-\# the area delimted by the tab filled with centered text.
-\#
-\# TAB n can be called at any time after being set.
-\#
-\# Tabs are NOT columnar in behaviour. If the text inside a
-\# tab runs to several lines, when you call the next tab a break
-\# occurs, meaning that the new tab starts one line below the last
-\# line in the previous tab. For columnar behaviour, you must
-\# use the multi-column macros in addition to tabs.
-\#
-\# If you want tabs to line up bottom-line to bottom-line (most likely
-\# single line tabs), use .TN (provided the tabs are numbered sequentially).
-\# Otherwise, you must use .EL then .TAB <n> if you want them to align.
-\#
-\# If you want to reset tabs, you must use .TQ before .TAB_SET.
-\#
-\# Note that indents are turned off automatically whenever a new
-\# tab is called with TAB <n>.
-\#
-\# Tabs themselves are user-invoked using the TAB macro with a numeric
-\# argument, e.g. TAB 1.
-\#
-\# Generally, in order not to get confused, it's a good idea
-\# to make sure all indents are off before setting tabs.
+\# Tabs are not columnar in behaviour. .TN and \*[TB+] permit
+\# bottom-line to bottom-line tab movement.
+\#
+\# When resetting tabs, .TQ must be invoked before .TAB_SET.
+\#
+\# Indents are turned off automatically whenever a new tab is called
+\# with TAB <n>.
+\#
+\# Generally, it's a good idea to make sure all indents are off
+\# before setting tabs.
\#
.MAC TAB_SET END
. br
@@ -1701,8 +1656,8 @@ end
. ds $CURRENT_TAB \\n[#TAB_NUMBER]
. nr #TAB_OFFSET (\\$2)
. nr #TAB_LENGTH (\\$3)
-. MAC TAB\\n[#TAB_NUMBER] DONE \"Define TAB macro
-. if !\\\\n[#TB+]=1 \{ .br \}
+. MAC TAB\\n[#TAB_NUMBER]
+. if !\\\\n[#TB+]=1 .br
. if \\\\n[#TB+]=1 \{\
. EL
. vpt 0
@@ -1716,29 +1671,28 @@ end
. nr #ST_OFFSET \\n[#TAB_OFFSET]
. po \\\\n[#L_MARGIN]u+\\\\n[#TAB_OFFSET\\\\*[$CURRENT_TAB]]u
. ll \\n[#TAB_LENGTH]u
-. ta \En(.lu
+. ta \En[.l]u
. ie '\\$5'QUAD' \{\
-. if '\\$4'L' \{ .QUAD L \}
-. if '\\$4'R' \{ .QUAD R \}
-. if '\\$4'C' \{ .QUAD C \}
-. if '\\$4'J' \{ .JUSTIFY \}
+. if '\\$4'L' .QUAD L
+. if '\\$4'R' .QUAD R
+. if '\\$4'C' .QUAD C
+. if '\\$4'J' .JUSTIFY
. \}
. el \{\
-. if '\\$4'' \{ .LEFT \}
-. if '\\$4'L' \{ .LEFT \}
-. if '\\$4'R' \{ .RIGHT \}
-. if '\\$4'C' \{ .CENTER \}
-. if '\\$4'J' \{ .JUSTIFY \}
+. if '\\$4'' .LEFT
+. if '\\$4'L' .LEFT
+. if '\\$4'R' .RIGHT
+. if '\\$4'C' .CENTER
+. if '\\$4'J' .JUSTIFY
. \}
. if \\\\n[#TN]=1 \{\
. TRAP
. rr #TN
. \}
-.DONE
+..
. rr #TAB_ACTIVE
.END
\#
-\#
\# TAB
\# ---
\# *Arguments:
@@ -1752,7 +1706,6 @@ end
. nr #IN_TAB 1
.END
\#
-\#
\# TAB NEXT
\# --------
\# *Argument:
@@ -1773,11 +1726,12 @@ end
. TRAP
.END
\#
-\# An inline escape to accomplish the same thing. Actually
-\# preferable, since it works with filled and non-filled copy and
-\# doesn't require the user to remember to use (or not use) the \c.
+\# An inline escape to accomplish the same thing. Preferable, since
+\# it works with filled and non-filled copy and doesn't require the
+\# user to remember to use (or not use) the \c.
\#
-.ds TB+ "\c\\R'#TB+ 1'\\R'#TN 1'\\R'#NEXT_TAB \\n[#CURRENT_TAB]+1'\\*[TAB\\n[#NEXT_TAB]]\c
+.ds TB+ \
+"\c\R'#TB+ 1'\R'#TN 1'\R'#NEXT_TAB \\n[#CURRENT_TAB]+1'\\*[TAB\\n[#NEXT_TAB]]\c
\#
\# TAB QUIT
\# --------
@@ -1792,10 +1746,9 @@ end
\# Resets QUAD [ L|R|C ], LEFT, RIGHT, CENTER, or JUSTIFY
\# in effect prior to tabs.
\# *Notes:
-\# TQ *must* come before setting any new tabs if you want the
-\# tabs' indents measured from page left. Otherwise, the tabs'
-\# indents are measured from the left margin of the tab you're
-\# currently in.
+\# TQ must precede setting new tabs to get the tabs' indents
+\# measured from page left. Otherwise, the tabs' indents are
+\# measured from the left margin of the currently active tab.
\#
.MAC TQ END
. br
@@ -1804,19 +1757,19 @@ end
. nr #LOOP 0 1
. while \\n+[#LOOP]<20 \{\
. rm $ST\\n[#LOOP]_FILL
-.\}
+. \}
. rr #LOOP
. po \\n[#L_MARGIN]u
. ll \\n[#L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. ie \\n[#QUAD] \{\
-. ie '\\*[$RESTORE_QUAD_VALUE]'J' \{ .JUSTIFY \}
-. el \{ .QUAD \\*[$RESTORE_QUAD_VALUE] \}
+. ie '\\*[$RESTORE_QUAD_VALUE]'J' .JUSTIFY
+. el .QUAD \\*[$RESTORE_QUAD_VALUE]
. \}
. el \{\
-. if '\\*[$RESTORE_QUAD_VALUE]'LEFT' \{ .LEFT \}
-. if '\\*[$RESTORE_QUAD_VALUE]'RIGHT' \{ .RIGHT \}
-. if '\\*[$RESTORE_QUAD_VALUE]'CENTER' \{ .CENTER \}
+. if '\\*[$RESTORE_QUAD_VALUE]'LEFT' .LEFT
+. if '\\*[$RESTORE_QUAD_VALUE]'RIGHT' .RIGHT
+. if '\\*[$RESTORE_QUAD_VALUE]'CENTER' .CENTER
. \}
.END
\#
@@ -1834,14 +1787,13 @@ end
\# as a macro.
\#
.MAC COLOR END
-.ie \\n(.u=1 \{\
+. ie \\n[.u]=1 \{\
\c
\\*[\\$1]\c
-.\}
-.el \{ \\*[\\$1] \}
+. \}
+. el \\*[\\$1]
.END
\#
-\#
\# NEWCOLOR
\# --------
\# *Arguments:
@@ -1863,8 +1815,8 @@ end
. defcolor \\$1 rgb \\$2
. \}
. if \\n[#NUM_ARGS]=3 \{\
-. if '\\$2'RGB' .ds $COLOR_SCHEME rgb
-. if '\\$2'CYM' .ds $COLOR_SCHEME cym
+. if '\\$2'RGB' .ds $COLOR_SCHEME rgb
+. if '\\$2'CYM' .ds $COLOR_SCHEME cym
. if '\\$2'CMYK' .ds $COLOR_SCHEME cmyk
. if '\\$2'GRAY' .ds $COLOR_SCHEME gray
. if '\\$2'GREY' .ds $COLOR_SCHEME gray
@@ -1873,7 +1825,6 @@ end
. ds \\$1 \\m[\\$1]
.END
\#
-\#
\# XCOLOR
\# ------
\# *Arguments:
@@ -1891,6 +1842,7 @@ end
. if \\n[#NUM_ARGS]=2 \{\
. ds \\$2 \m[\\$1]
. ds $\\$2_FILL \\$1
+. ds COLAL_\\$2 \\$1
. \}
.END
\#
@@ -1919,9 +1871,9 @@ end
.nr _d 1250
\#
.MAC UNDERLINE_SPECS END
-. ie \B'\\$1' \{ .nr _w (u;\\$1) \}
+. ie \B'\\$1' .nr _w (u;\\$1)
. el \{\
-. ie '\\$1'DEFAULT' \{ .nr _w 500 \}
+. ie '\\$1'DEFAULT' .nr _w 500
. el \{\
. nr _w 500
. tm1 "[mom]: The first argument to \\$0 must be a numeric
@@ -1930,9 +1882,9 @@ end
. \}
. \}
. shift
-. ie \B'\\$1' \{ .nr _d (u;\\$1) \}
+. ie \B'\\$1' .nr _d (u;\\$1)
. el \{\
-. ie '\\$1'DEFAULT' \{ .nr _d 1250 \}
+. ie '\\$1'DEFAULT' .nr _d 1250
. el \{\
. nr _d 1250
. tm1 "[mom]: The second argument to \\$0 must be a numeric
@@ -1948,22 +1900,17 @@ end
. ie '\\$1'' \{\
. nr #UNDERLINE_ON 1
. ss \\n[.ss] (\\n[.ss]-\\n[.ss])
-. ie !n \{\
-. nop \X'ps: exec \\n[_w] \\n[_d] decorline'\c
-. \}
-. el \{ .ul 1000 \}
+. ie !n .nop \X'ps: exec \\n[_w] \\n[_d] decorline'\c
+. el .ul 1000
. \}
. el \{\
. nr #UNDERLINE_ON 0
. SS \\*[$SAVED_SS_VAR]
-. ie !n \{\
-. nop \X'ps: exec decornone'\c
-. \}
-. el \{ .ul 0 \}
+. ie !n .nop \X'ps: exec decornone'\c
+. el .ul 0
. \}
.END
\#
-\#
\# UL/ULX
\# ------
\# *Arguments:
@@ -1978,31 +1925,29 @@ end
\c
. ds $SAVED_SS_VAR \\*[$SS_VAR]
. ss \\n[.ss] (\\n[.ss]-\\n[.ss])
-. ie !'\\n[.z]''
+. ie !'\\n[.z]'' \{\
\c
. ie !n \{\
-\?\h'-\w'\\n[.ss]'u'\?
+.if !\\n[.k]=0 \?\h'-\w'\\n[.ss]'u'\?
\?\R'#UNDERLINE_ON 1'\X'ps: exec \\n[_w] \\n[_d] decorline'\?\c
. \}
. el \{\
\?\R'#UNDERLINE_ON 1'\?\c
. ul 1000
. \}
+. \}
. el \{\
. ie !n \{\
-\h'-\w'\\n[.ss]'u'
. nr #UNDERLINE_ON 1
. nop \X'ps: exec \\n[_w] \\n[_d] decorline'\c
. \}
. el \{\
-\h'-\w'\\n[.ss]'u'
-. nr #UNDERLINE_ON 1
+\R'#UNDERLINE_ON 1'\c
. ul 1000
. \}
. \}
.END
\#
-\#
.MAC ULX END
\c
. SS \\*[$SAVED_SS_VAR]
@@ -2029,7 +1974,6 @@ end
. \}
.END
\#
-\#
\# UNDERSCORE
\# ----------
\# *Arguments:
@@ -2046,55 +1990,45 @@ end
\# or
\# .UNDERSCORE 2p "Text to be underscored
\#
-\# All text is underscored (including punctuation and spaces).
-\# This is the primary difference between UNDERLINE and
-\# UNDERSCORE, aside from the fact the UNDERLINE only works with
-\# fixed width fonts.
-\#
-\# UNDERSCORE does not work across line breaks. Each line of
-\# text must be entered separately with UNDERSCORE. If the
-\# UNDERSCORE begins in the middle of a line and crosses over a
-\# break, the portion before the break must be entered in its own
-\# UNDERSCORE, as must the portion that comes after the break.
+\# UNDERSCORE does not work across line breaks. Each line of text
+\# must be entered separately. If the UNDERSCORE begins in the
+\# middle of a line and crosses over a break, the portion before
+\# the break and the portion afterwards must be entered
+\# separately.
\#
.MAC UNDERSCORE END
. nr #SAVED_UNDERSCORE_WEIGHT \\n[#UNDERSCORE_WEIGHT]
. nr #SAVED_UNDERSCORE_WEIGHT_ADJ \\n[#UNDERSCORE_WEIGHT_ADJ]
. ds $SAVED_UNDERSCORE_GAP \\*[$UNDERSCORE_GAP]
. if \\n[#FROM_BIB_STRING]=1 \{\
-. nr #UNDERSCORE_WEIGHT \\n[#BIB_STRING_UNDERLINE_WEIGHT]
-. nr #UNDERSCORE_WEIGHT_ADJ \\n[#BIB_STRING_UNDERLINE_WEIGHT_ADJ]
-. ds $UNDERSCORE_GAP \\*[$BIB_STRING_UNDERLINE_GAP]
+. nr #UNDERSCORE_WEIGHT \\n[#BIB_STRING_UNDERLINE_WEIGHT]
+. nr #UNDERSCORE_WEIGHT_ADJ \\n[#BIB_STRING_UNDERLINE_WEIGHT_ADJ]
+. ds $UNDERSCORE_GAP \\*[$BIB_STRING_UNDERLINE_GAP]
. \}
. if \\n[#FROM_COVER]=1 \{\
-. nr #UNDERSCORE_WEIGHT \\n[#COVER_UNDERLINE_WEIGHT]
-. nr #UNDERSCORE_WEIGHT_ADJ \\n[#COVER_UNDERLINE_WEIGHT_ADJ]
-. ds $UNDERSCORE_GAP \\*[$COVER_UNDERLINE_GAP]
+. nr #UNDERSCORE_WEIGHT \\n[#COVER_UNDERLINE_WEIGHT]
+. nr #UNDERSCORE_WEIGHT_ADJ \\n[#COVER_UNDERLINE_WEIGHT_ADJ]
+. ds $UNDERSCORE_GAP \\*[$COVER_UNDERLINE_GAP]
. \}
. if \\n[#FROM_DOC_COVER]=1 \{\
-. nr #UNDERSCORE_WEIGHT \\n[#DOCCOVER_UNDERLINE_WEIGHT]
-. nr #UNDERSCORE_WEIGHT_ADJ \\n[#DOCCOVER_UNDERLINE_WEIGHT_ADJ]
-. ds $UNDERSCORE_GAP \\*[$DOCCOVER_UNDERLINE_GAP]
+. nr #UNDERSCORE_WEIGHT \\n[#DOC_COVER_UNDERLINE_WEIGHT]
+. nr #UNDERSCORE_WEIGHT_ADJ \\n[#DOC_COVER_UNDERLINE_WEIGHT_ADJ]
+. ds $UNDERSCORE_GAP \\*[$DOC_COVER_UNDERLINE_GAP]
. \}
. if \\n[#FROM_DOCTYPE]=1 \{\
-. nr #UNDERSCORE_WEIGHT \\n[#DOCTYPE_UNDERLINE_WEIGHT]
-. nr #UNDERSCORE_WEIGHT_ADJ \\n[#DOCTYPE_UNDERLINE_WEIGHT_ADJ]
-. ds $UNDERSCORE_GAP \\*[$DOCTYPE_UNDERLINE_GAP]
-. \}
-. if \\n[#FROM_HEAD]=1 \{\
-. nr #UNDERSCORE_WEIGHT \\n[#HEAD_UNDERLINE_WEIGHT]
-. nr #UNDERSCORE_WEIGHT_ADJ \\n[#HEAD_UNDERLINE_WEIGHT_ADJ]
-. ds $UNDERSCORE_GAP \\*[$HEAD_UNDERLINE_GAP]
+. nr #UNDERSCORE_WEIGHT \\n[#DOCTYPE_UNDERLINE_WEIGHT]
+. nr #UNDERSCORE_WEIGHT_ADJ \\n[#DOCTYPE_UNDERLINE_WEIGHT_ADJ]
+. ds $UNDERSCORE_GAP \\*[$DOCTYPE_UNDERLINE_GAP]
. \}
. if \\n[#FROM_EN_STRING]=1 \{\
-. nr #UNDERSCORE_WEIGHT \\n[#EN_STRING_UNDERLINE_WEIGHT]
-. nr #UNDERSCORE_WEIGHT_ADJ \\n[#EN_STRING_UNDERLINE_WEIGHT_ADJ]
-. ds $UNDERSCORE_GAP \\*[$EN_STRING_UNDERLINE_GAP]
+. nr #UNDERSCORE_WEIGHT \\n[#EN_STRING_UNDERLINE_WEIGHT]
+. nr #UNDERSCORE_WEIGHT_ADJ \\n[#EN_STRING_UNDERLINE_WEIGHT_ADJ]
+. ds $UNDERSCORE_GAP \\*[$EN_STRING_UNDERLINE_GAP]
. \}
. if \\n[#FROM_EN_TITLE]=1 \{\
-. nr #UNDERSCORE_WEIGHT \\n[#EN_TITLE_UNDERLINE_WEIGHT]
-. nr #UNDERSCORE_WEIGHT_ADJ \\n[#EN_TITLE_UNDERLINE_WEIGHT_ADJ]
-. ds $UNDERSCORE_GAP \\*[$EN_TITLE_UNDERLINE_GAP]
+. nr #UNDERSCORE_WEIGHT \\n[#EN_TITLE_UNDERLINE_WEIGHT]
+. nr #UNDERSCORE_WEIGHT_ADJ \\n[#EN_TITLE_UNDERLINE_WEIGHT_ADJ]
+. ds $UNDERSCORE_GAP \\*[$EN_TITLE_UNDERLINE_GAP]
. \}
. ie \\n[#NUM_ARGS]=1 \{\
. nr #TEXT_WIDTH \w'\\$1'
@@ -2126,7 +2060,6 @@ end
. rm $SAVED_UNDERSCORE_GAP
.END
\#
-\#
\# DOUBLE UNDERSCORE
\# -----------------
\# *Arguments:
@@ -2137,7 +2070,6 @@ end
\# *Notes:
\# The same double-quote requirement as UNDERSCORE.
\#
-\#
.MAC UNDERSCORE2 END
. nr #SAVED_UNDERSCORE_WEIGHT \\n[#UNDERSCORE_WEIGHT]
. nr #SAVED_UNDERSCORE_WEIGHT_ADJ \\n[#UNDERSCORE_WEIGHT_ADJ]
@@ -2151,16 +2083,16 @@ end
. ds $RULE_GAP \\$2
. \}
. if \\n[#FROM_BIB_STRING] \{\
-. nr #UNDERSCORE_WEIGHT \\n[#BIB_STRING_UNDERLINE_WEIGHT]
-. nr #UNDERSCORE_WEIGHT_ADJ \\n[#BIB_STRING_UNDERLINE_WEIGHT_ADJ]
-. ds $UNDERSCORE_GAP \\*[$BIB_STRING_UNDERLINE_GAP]
-. ds $RULE_GAP \\*[$BIB_STRING_RULE_GAP]
+. nr #UNDERSCORE_WEIGHT \\n[#BIB_STRING_UNDERLINE_WEIGHT]
+. nr #UNDERSCORE_WEIGHT_ADJ \\n[#BIB_STRING_UNDERLINE_WEIGHT_ADJ]
+. ds $UNDERSCORE_GAP \\*[$BIB_STRING_UNDERLINE_GAP]
+. ds $RULE_GAP \\*[$BIB_STRING_RULE_GAP]
. \}
. if \\n[#FROM_EN_STRING] \{\
-. nr #UNDERSCORE_WEIGHT \\n[#EN_STRING_UNDERLINE_WEIGHT]
-. nr #UNDERSCORE_WEIGHT_ADJ \\n[#EN_STRING_UNDERLINE_WEIGHT_ADJ]
-. ds $UNDERSCORE_GAP \\*[$EN_STRING_UNDERLINE_GAP]
-. ds $RULE_GAP \\*[$EN_STRING_RULE_GAP]
+. nr #UNDERSCORE_WEIGHT \\n[#EN_STRING_UNDERLINE_WEIGHT]
+. nr #UNDERSCORE_WEIGHT_ADJ \\n[#EN_STRING_UNDERLINE_WEIGHT_ADJ]
+. ds $UNDERSCORE_GAP \\*[$EN_STRING_UNDERLINE_GAP]
+. ds $RULE_GAP \\*[$EN_STRING_RULE_GAP]
. \}
. if \\n[#NUM_ARGS]=1 \{\
. nr #TEXT_WIDTH \w'\\$1'
@@ -2218,16 +2150,14 @@ end
.ds $BIB_STRING_UNDERLINE_GAP 2p
.ds $BIB_STRING_RULE_GAP 2p
.ds $COVER_UNDERLINE_GAP 2p
-.ds $DOCCOVER_UNDERLINE_GAP 2p
+.ds $DOC_COVER_UNDERLINE_GAP 2p
.ds $DOCTYPE_UNDERLINE_GAP 2p
.ds $EN_STRING_UNDERLINE_GAP 2p
.ds $EN_STRING_RULE_GAP 2p
.ds $EN_TITLE_UNDERLINE_GAP 2p
-.ds $HEAD_UNDERLINE_GAP 2p
.ds $RULE_GAP 2p
.ds $UNDERSCORE_GAP 2p
\#
-\#
\# SUPERSCRIPT
\# -----------
\# *Function:
@@ -2277,7 +2207,6 @@ end
\#
.ds EXTSUPX \s[\En[#PT_SIZE_IN_UNITS]u]\E*[$SUP_LOWER]\E*[EXT]
\#
-\#
\# SLANT
\# -----
\#
@@ -2309,21 +2238,20 @@ end
. ie '\\$1'RESET' \{\
. nr #DEGREES 15
. if \\n[#PRINT_STYLE]=1 \{\
-. if \\n[#UNDERLINE_SLANT] \{ .return \}
+. if \\n[#UNDERLINE_SLANT] .return
. \}
. ds SLANT \ER'#SLANT_ON 1'\ES'\En[#DEGREES]'
. \}
. el \{\
. nr #DEGREES \\$1
. if \\n[#PRINT_STYLE]=1 \{\
-. if \\n[#UNDERLINE_SLANT] \{ .return \}
+. if \\n[#UNDERLINE_SLANT] .return
. \}
. ds SLANT \ER'#SLANT_ON 1'\ES'\En[#DEGREES]'
. \}
. ds SLANTX \ER'#SLANT_ON 0'\ES'0'
.END
\#
-\#
\# BOLDER
\# ------
\#
@@ -2344,21 +2272,19 @@ end
.nr #BOLDER_UNITS 700
\#
.MAC SETBOLDER END
-. if \\n[#IGNORE]=1 \{ .return \}
-. ie '\\$1'RESET' \{ .nr #BOLDER_UNITS 700 \}
-. el \{ .nr #BOLDER_UNITS \\$1 \}
+. if \\n[#IGNORE]=1 .return
+. ie '\\$1'RESET' .nr #BOLDER_UNITS 700
+. el .nr #BOLDER_UNITS \\$1
.END
\#
-\#
.MAC BOLDER END
\c
-.bd \\n(.f \\n[#BOLDER_UNITS]
+.bd \\n[.f] \\n[#BOLDER_UNITS]
.END
\#
-\#
.MAC BOLDERX END
\c
-.bd \\n(.f
+.bd \\n[.f]
.END
\#
\# +++CONDENSE/EXTEND+++
@@ -2421,9 +2347,10 @@ end
. \}
.END
\#
-.ds CONDX \ER'#CONDENSE 0'\Es0\R'#PT_SIZE_IN_UNITS \En[.ps]'\H'\En[#PT_SIZE_IN_UNITS]u'
-.ds EXTX \ER'#EXTEND 0'\Es0\R'#PT_SIZE_IN_UNITS \En[.ps]'\H'\En[#PT_SIZE_IN_UNITS]u'
-\#
+.ds CONDX \
+\ER'#CONDENSE 0'\Es[0]\R'#PT_SIZE_IN_UNITS \En[.ps]'\H'\En[#PT_SIZE_IN_UNITS]u'
+.ds EXTX \
+\ER'#EXTEND 0'\Es[0]\R'#PT_SIZE_IN_UNITS \En[.ps]'\H'\En[#PT_SIZE_IN_UNITS]u'
\#
\# +++PAD LINES+++ (insert space)
\#
@@ -2440,29 +2367,28 @@ end
. ds $PAD_MARKER \\$1
.END
\#
-\#
\# PAD
\# ---
\# *Argments:
\# "<string of text with padding markers inserted>"
+\# "<id of bookmark created by .PDF_BOOKMARK>"
\# *Function:
\# Defines and redefines padding character (default=pound sign
\# unless padding character has been set with PAD_MARKER)
\# several times so that when the string is output at the end
\# of the macro, every # has been converted to an equal-sized
-\# amount of padding (blank space) on a line. # is equivalent to
-\# CompuGraphic's old <IS>.
+\# amount of padding (blank space) on a line.
\# *Notes:
\# String tabs may be marked off during PAD.
\#
.MAC PAD END
-. if \\n(.u=1 \{ .nr #FILL_MODE 1 \}
+. if \\n[.u]=1 .nr #FILL_MODE 1
. nf
. if !d$PAD_MARKER .ds $PAD_MARKER #
. char \\*[$PAD_MARKER] \R'#PAD_COUNT \En[#PAD_COUNT]+1'
. ds $FAMILY_FOR_PAD \\n[.fam]
-. if !n \{ .fp \\n[.fp] \\n[.sty] \}
-. ds $FONT_FOR_PAD \\*[$FONT]
+.\" .if !n .fp \\n[.fp] \\n[.sty]
+. ds $FONT_FOR_PAD \\n[.sty]
. nr #SIZE_FOR_PAD \\n[.ps]
. ds $PAD_STRING \\$1
. as $PAD_STRING \Ekp
@@ -2471,25 +2397,24 @@ end
\\f[\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING]
. br
. di
-. char \\*[$PAD_MARKER] \R'#SPACE_TO_END \En(.l-\Enp'\R'#PAD_SPACE \En[#SPACE_TO_END]/\En[#PAD_COUNT]'
+. char \\*[$PAD_MARKER] \
+\R'#SPACE_TO_END \En[.l]-\En[p]'\R'#PAD_SPACE \En[#SPACE_TO_END]/\En[#PAD_COUNT]'
. di PAD_STRING
. fam \\*[$FAMILY_FOR_PAD]
-\\f]\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING]
+\\f[\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING]
. br
. di
. char \\*[$PAD_MARKER] \h'\En[#PAD_SPACE]u'
-. ie \\n[#SILENT] \{\
-. SILENT
-. fam \\*[$FAMILY_FOR_PAD]
-\\f[\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING]
-. br
-. SILENT OFF
-. \}
+. if \\n[#SILENT] .SILENT
+. fam \\*[$FAMILY_FOR_PAD]
+\\f[\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]
+. ie '\\$2'' .nop \\*[$PAD_STRING]
. el \{\
-. fam \\*[$FAMILY_FOR_PAD]
-\\f[\\*[$FONT_FOR_PAD]]\\s[\\n[#SIZE_FOR_PAD]u]\\*[$PAD_STRING]
-. br
+. ie !'\\$2'NOBREAK' .pdfhref L -D "\\$2" -E -- \&\\*[$PAD_STRING]
+. el .nop \\*[$PAD_STRING]
. \}
+. if \\n[#SILENT] .SILENT OFF
+. br
. if \\n[#FILL_MODE]=1 \{\
. fi
. rr #FILL_MODE
@@ -2507,7 +2432,6 @@ end
. \}
.END
\#
-\#
\# +++LEADERS+++
\#
\# The leader mechanism is primitive, but it works. Basically, every
@@ -2544,7 +2468,6 @@ end
. ds $DC_FAM \\$1
.END
\#
-\#
\# DROP CAP FONT
\# -------------
\# *Argument:
@@ -2556,7 +2479,6 @@ end
. ds $DC_FT \\$1
.END
\#
-\#
\# DROPCAP COLOR
\# -------------
\# *Arguments:
@@ -2568,12 +2490,11 @@ end
\# DC_COLOR.
\#
.MAC DROPCAP_COLOR END
-. if \\n[#PRINT_STYLE]=1 \{ .return \}
+. if \\n[#PRINT_STYLE]=1 .return
. nr #DC_COLOR 1
. ds $DC_COLOR \\$1
.END
\#
-\#
\# DROP CAP GUTTER
\# ---------------
\# *Argument:
@@ -2587,7 +2508,6 @@ end
. nr #DC_GUT (\\$1)
.END
\#
-\#
\# DROP CAP ADJUST
\# ---------------
\# *Argument:
@@ -2606,7 +2526,6 @@ end
. ds $DC_ADJUST \\$1
.END
\#
-\#
\# DROP CAP
\# --------
\# *Arguments:
@@ -2618,8 +2537,6 @@ end
\# to bottom of dropcap, then resets indent to left margin (plus
\# any indent that was in effect prior to invoking DROPCAP).
\# *Notes:
-\# Drop caps put a strain on on resource-challenged systems.
-\#
\# Drop caps when using the doc processing macro PP only work with
\# initial paragraphs (i.e. at doc start, or after heads), only when
\# DROPCAPS comes immediately after PP, and only when the PRINTSTYLE
@@ -2669,43 +2586,67 @@ end
\\*[EXTX]
. nr #EXTEND_WAS_ON 1
. \}
-. if '\\$3'COND' \{ .CONDENSE \\$4 \}
-. if '\\$3'EXT' \{ .EXTEND \\$4 \}
-. if !r#DC_GUT \{ .nr #DC_GUT (3p) \}
-. ds $RESTORE_FAM \\n[.fam]
-. ds $RESTORE_FT \\*[$FONT]
+. if '\\$3'COND' .CONDENSE \\$4
+. if '\\$3'EXT' .EXTEND \\$4
+. if !r#DC_GUT .nr #DC_GUT (3p)
+. ie \\n[#DOCS] .ds $RESTORE_FAM \\*[$DOC_FAM]
+. el .ds $RESTORE_FAM \\n[.fam]
+. ie \\n[#DOCS] .ds $RESTORE_FT \\*[$PP_FT]
+. el .ds $RESTORE_FT \\*[$FONT]
. nr #RESTORE_PT_SIZE \\n[#PT_SIZE]
-. nr #RESTORE_INDENT \\n(.i
+. nr #RESTORE_INDENT \\n[.i]
. SIZESPECS
. nr #DC_HEIGHT \\n[#DC_LINES]*\\n[#LEAD]+\\n[#CAP_HEIGHT]
-. ie !d$DC_FAM \{ .FAM \\n[.fam] \}
-. el \{ .FAM \\*[$DC_FAM] \}
-. ie !d$DC_FT \{ .FT \\*[$FONT] \}
-. el \{ .FT \\*[$DC_FT] \}
+. ie !d$DC_FAM .FAM \\n[.fam]
+. el .FAM \\*[$DC_FAM]
+. ie !d$DC_FT .FT \\*[$FONT]
+. el .FT \\*[$DC_FT]
. while \\n[#GET_DC_HEIGHT]<\\n[#DC_HEIGHT] \{\
. ps \\n[#PT_SIZE]u+100u
. SIZESPECS
. nr #GET_DC_HEIGHT \\n[#CAP_HEIGHT]
-.\}
-. if d$DC_ADJUST \{ .ps \\*[$DC_ADJUST]p \}
+. \}
+. if d$DC_ADJUST .ps \\*[$DC_ADJUST]p
. nr #DC_LINES +1
+. if \\n[#DC_LINES]v>\\n[.t] \{\
+. nr pgnum \\n%+\\n[#PAGE_NUM_ADJ] 1
+. tm1 "[mom]: Dropcap at line \\n[.c] does not fit on page \\n[#PAGENUMBER].
+. tm1 " Shifting paragraph to top of page \\n+[pgnum].
+. bp
+. \}
. ie \\n[#DC_COLOR]=1 \{\
. ie !'\\$3'' \{\
-. ie '\\$3'COND' \{ .PRINT \\*[DOWN \\n[#DC_LINES]v]\m[\\*[$DC_COLOR]]\\*[COND]\\*[$DROPCAP]\\*[CONDX]\m[]\\*[UP \\n[#DC_LINES]v] \}
-. el \{ .PRINT \\*[DOWN \\n[#DC_LINES]v]\m[\\*[$DC_COLOR]]\\*[EXT]\\*[$DROPCAP]\\*[EXTX]\m[]\\*[UP \\n[#DC_LINES]v] \}
-. \}
-. el \{ .PRINT \\*[DOWN \\n[#DC_LINES]v]\m[\\*[$DC_COLOR]]\\*[$DROPCAP]\m[]\\*[UP \\n[#DC_LINES]v] \}
+. ie '\\$3'COND' \
+. PRINT \
+\\*[DOWN \\n[#DC_LINES]v]\
+\m[\\*[$DC_COLOR]]\\*[COND]\\*[$DROPCAP]\\*[CONDX]\m[]\\*[UP \\n[#DC_LINES]v]
+. el \
+. PRINT \
+\\*[DOWN \\n[#DC_LINES]v]\
+\m[\\*[$DC_COLOR]]\\*[EXT]\\*[$DROPCAP]\\*[EXTX]\m[]\\*[UP \\n[#DC_LINES]v]
+. \}
+. el .PRINT \
+\\*[DOWN \\n[#DC_LINES]v]\
+\m[\\*[$DC_COLOR]]\\*[$DROPCAP]\m[]\\*[UP \\n[#DC_LINES]v]
. \}
. el \{\
. ie !'\\$3'' \{\
-. ie '\\$3'COND' \{ .PRINT \\*[DOWN \\n[#DC_LINES]v]\\*[COND]\\*[$DROPCAP]\\*[CONDX]\\*[UP \\n[#DC_LINES]v] \}
-. el \{ .PRINT \\*[DOWN \\n[#DC_LINES]v]\\*[EXT]\\*[$DROPCAP]\\*[EXTX]\\*[UP \\n[#DC_LINES]v] \}
-. \}
-. el \{ .PRINT \\*[DOWN \\n[#DC_LINES]v]\m[\\*[$DC_COLOR]]\\*[$DROPCAP]\m[]\\*[UP \\n[#DC_LINES]v] \}
-. \}
-. if '\\$3'COND' \{ \E*[COND] \}
-. if '\\$3'EXT' \{ \E*[EXT] \}
-. ie \\n(.i \{\
+. ie '\\$3'COND' \
+. PRINT \
+\\*[DOWN \\n[#DC_LINES]v]\
+\\*[COND]\\*[$DROPCAP]\\*[CONDX]\\*[UP \\n[#DC_LINES]v]
+. el \
+. PRINT \
+\\*[DOWN \\n[#DC_LINES]v]\
+\\*[EXT]\\*[$DROPCAP]\\*[EXTX]\\*[UP \\n[#DC_LINES]v]
+. \}
+. el .PRINT \
+\\*[DOWN \\n[#DC_LINES]v]\
+\m[\\*[$DC_COLOR]]\\*[$DROPCAP]\m[]\\*[UP \\n[#DC_LINES]v]
+. \}
+. if '\\$3'COND' \E*[COND]
+. if '\\$3'EXT' \E*[EXT]
+. ie \\n[.i] \{\
. vs 0
. br
. in +\w'\\*[$DROPCAP]'u+\\n[#DC_GUT]u
@@ -2717,8 +2658,8 @@ end
. in \w'\\*[$DROPCAP]'u+\\n[#DC_GUT]u
. vs
. \}
-. if '\\$3'COND' \{ \E*[CONDX]\c \}
-. if '\\$3'EXT' \{ \E*[EXTX]\c \}
+. if '\\$3'COND' \E*[CONDX]\c
+. if '\\$3'EXT' \E*[EXTX]\c
. FAM \\*[$RESTORE_FAM]
. FT \\*[$RESTORE_FT]
. ps \\n[#RESTORE_PT_SIZE]u
@@ -2730,8 +2671,8 @@ end
. EXTEND \\*[$RESTORE_EXT]
\\*[EXT]\c
. \}
-. ie \\n(.u \{ .wh \\n(.du+\\n[#DC_HEIGHT]u-1v DROPCAP_OFF \}
-. el \{ .wh \\n(.du+\\n[#DC_HEIGHT]u DROPCAP_OFF \}
+. ie \\n[.u] .wh \\n[.d]u+\\n[#DC_HEIGHT]u-1v DROPCAP_OFF
+. el .wh \\n[.d]u+\\n[#DC_HEIGHT]u DROPCAP_OFF
. rr #CONDENSE_WAS_ON
. rr #EXTEND_WAS_ON
. rm $DROPCAP
@@ -2775,19 +2716,19 @@ end
. vpt 0
. nr #RESTORE_TRAP 1
. \}
-. ie !\\n[#NO_ADVANCE]=1 \{ .br \}
+. ie !\\n[#NO_ADVANCE]=1 .br
. el \{\
. sp -1v
. rr #NO_ADVANCE
. \}
-. ie \\n(.u=1 \{\
+. ie \\n[.u]=1 \{\
. nr #FILLED 1
-. nr #FILL_MODE \\n(.j
+. nr #FILL_MODE \\n[.j]
. \}
. el \{\
. nr #NOFILL 1
-. if \\n[.ce]>0 \{ .nr #NOFILL_MODE 3 \}
-. if \\n[.rj]>0 \{ .nr #NOFILL_MODE 5 \}
+. if \\n[.ce]>0 .nr #NOFILL_MODE 3
+. if \\n[.rj]>0 .nr #NOFILL_MODE 5
. ce 0
. rj 0
. \}
@@ -2795,27 +2736,23 @@ end
. ds $RL_WEIGHT \\$1
. ds $RL_INDENT \\$2
. ds $RL_LENGTH \\$3
-. ie !'\\$4'' \{\
-. ds $RL_COLOR \\$4
-. \}
-. el \{\
-. ds $RL_COLOR default
-. \}
+. ie !'\\$4'' .ds $RL_COLOR \\$4
+. el .ds $RL_COLOR default
. nr #SAVED_WEIGHT \\n[#RULE_WEIGHT]
. nr #SAVED_WEIGHT_ADJ \\n[#RULE_WEIGHT_ADJ]
. di NULL
-. if \\n[#NUM_ARGS]>=1 \{ .RULE_WEIGHT \\*[$RL_WEIGHT] \}
+. if \\n[#NUM_ARGS]>=1 .RULE_WEIGHT \\*[$RL_WEIGHT]
. di
. gcolor \\*[$RL_COLOR]
. ie \\n[#NUM_ARGS]=0 \{\
. ie \\n[#INDENT_ACTIVE] \{\
-. nr #RESTORE_L_LENGTH \\n(.l
-. if \\n[#INDENT_BOTH_ACTIVE] \{ .ll \\n(.lu-\\n[#BL_INDENT]u \}
-. if \\n[#INDENT_LEFT_ACTIVE] \{ .ll \\n(.lu-\\n[#L_INDENT]u \}
+. nr #RESTORE_L_LENGTH \\n[.l]
+. if \\n[#INDENT_BOTH_ACTIVE] .ll \\n[.l]u-\\n[#BL_INDENT]u
+. if \\n[#INDENT_LEFT_ACTIVE] .ll \\n[.l]u-\\n[#L_INDENT]u
\D't \\n[#RULE_WEIGHT]'\
\h'\\*[$RL_INDENT]-\\n[#RULE_WEIGHT]u'\
\v'\\n[#RULE_WEIGHT_ADJ]u'\
-\D'l \En(.lu 0'\v'-\\n[#RULE_WEIGHT_ADJ]u'\
+\D'l \En[.l]u 0'\v'-\\n[#RULE_WEIGHT_ADJ]u'\
\v'-\\n[#RULE_WEIGHT_ADJ]u'\
\D't \\n[#SAVED_RULE_WEIGHT]'
. ll \\n[#RESTORE_L_LENGTH]u
@@ -2825,7 +2762,7 @@ end
\D't \\n[#RULE_WEIGHT]'\
\h'\\*[$RL_INDENT]-\\n[#RULE_WEIGHT]u'\
\v'\\n[#RULE_WEIGHT_ADJ]u'\
-\D'l \En(.lu 0'\v'-\\n[#RULE_WEIGHT_ADJ]u'\
+\D'l \En[.l]u 0'\v'-\\n[#RULE_WEIGHT_ADJ]u'\
\v'-\\n[#RULE_WEIGHT_ADJ]u'\
\D't \\n[#SAVED_RULE_WEIGHT]'
. \}
@@ -2839,16 +2776,16 @@ end
\D't \\n[#SAVED_RULE_WEIGHT]'
. \}
. if \\n[#FILLED]=1 \{\
-. if \\n[#FILL_MODE]=0 \{ .QUAD LEFT \}
-. if \\n[#FILL_MODE]=1 \{ .JUSTIFY \}
-. if \\n[#FILL_MODE]=3 \{ .QUAD CENTER \}
-. if \\n[#FILL_MODE]=5 \{ .QUAD RIGHT \}
+. if \\n[#FILL_MODE]=0 .QUAD LEFT
+. if \\n[#FILL_MODE]=1 .JUSTIFY
+. if \\n[#FILL_MODE]=3 .QUAD CENTER
+. if \\n[#FILL_MODE]=5 .QUAD RIGHT
. rr #FILLED
. \}
. sp -1v
. if \\n[#NOFILL]=1 \{\
-. if \\n[#NOFILL_MODE]=3 \{ .CENTER \}
-. if \\n[#NOFILL_MODE]=5 \{ .RIGHT \}
+. if \\n[#NOFILL_MODE]=3 .CENTER
+. if \\n[#NOFILL_MODE]=5 .RIGHT
. \}
. gcolor
. nr #RULE_WEIGHT \\n[#SAVED_WEIGHT]
@@ -2861,7 +2798,6 @@ end
. \}
.END
\#
-\#
\# RULE
\# ----
\# *Argument:
@@ -2869,26 +2805,30 @@ end
\# *Function:
\# Draws a rule the length of the current measure.
\# *Notes:
-\# A convenience macro. DRV does the same thing. Kept in for
-\# backward compatibility.
+\# A convenience macro. DRH with no argument does the same thing.
+\# Kept in for backward compatibility.
\#
.MAC RULE END
-. if \\n(.u=1 \{\
+. if \\n[.u]=1 \{\
. nr #FILLED 1
. ds $CURRENT_QUAD \\*[$QUAD_VALUE]
. nf
. \}
. ie \\n[#INDENT_ACTIVE] \{\
-. if \\n[#INDENT_BOTH_ACTIVE] \{ .ll \\n(.lu-\\n[#BL_INDENT]u \}
-. if \\n[#INDENT_LEFT_ACTIVE] \{ .ll \\n(.lu-\\n[#L_INDENT]u \}
-. PRINT \D't \\n[#RULE_WEIGHT]'\v'\\n[#RULE_WEIGHT_ADJ]u'\D'l \En(.lu 0'\v'-\\n[#RULE_WEIGHT_ADJ]u'\h'|0'\c
+. if \\n[#INDENT_BOTH_ACTIVE] .ll \\n[.l]u-\\n[#BL_INDENT]u
+. if \\n[#INDENT_LEFT_ACTIVE] .ll \\n[.l]u-\\n[#L_INDENT]u
+. PRINT \
+\D't \\n[#RULE_WEIGHT]'\v'\\n[#RULE_WEIGHT_ADJ]u'\
+\D'l \En[.l]u 0'\v'-\\n[#RULE_WEIGHT_ADJ]u'\h'|0'\c
. ll
. rr #RESTORE_L_LENGTH
. \}
. el \{\
-. PRINT \D't \\n[#RULE_WEIGHT]'\v'\\n[#RULE_WEIGHT_ADJ]u'\D'l \En(.lu 0'\v'-\\n[#RULE_WEIGHT_ADJ]u'\h'|0'\c
+. PRINT \
+\D't \\n[#RULE_WEIGHT]'\v'\\n[#RULE_WEIGHT_ADJ]u'\
+\D'l \En[.l]u 0'\v'-\\n[#RULE_WEIGHT_ADJ]u'\h'|0'\c
. \}
-. if r#FILLED \{\
+. if r #FILLED \{\
. fi
. rr #FILLED
. QUAD \\*[$CURRENT_QUAD]
@@ -2897,7 +2837,6 @@ end
. EOL
.END
\#
-\#
\# VERTICAL RULE - DRV
\# -------------------
\# *Arguments:
@@ -2915,19 +2854,19 @@ end
. vpt 0
. nr #RESTORE_TRAP 1
. \}
-. ie !\\n[#NO_ADVANCE]=1 \{ .br \}
+. ie !\\n[#NO_ADVANCE]=1 .br
. el \{\
. sp -1v
. rr #NO_ADVANCE
. \}
-. ie \\n(.u=1 \{\
+. ie \\n[.u]=1 \{\
. nr #FILLED 1
-. nr #FILL_MODE \\n(.j
+. nr #FILL_MODE \\n[.j]
. \}
. el \{\
. nr #NOFILL 1
-. if \\n[.ce]>0 \{ .nr #NOFILL_MODE 3 \}
-. if \\n[.rj]>0 \{ .nr #NOFILL_MODE 5 \}
+. if \\n[.ce]>0 .nr #NOFILL_MODE 3
+. if \\n[.rj]>0 .nr #NOFILL_MODE 5
. ce 0
. rj 0
. \}
@@ -2943,25 +2882,23 @@ end
. \}
. nr #SAVED_WEIGHT \\n[#RULE_WEIGHT]
. nr #SAVED_WEIGHT_ADJ \\n[#RULE_WEIGHT_ADJ]
-. di NULL
-. RULE_WEIGHT \\*[$RL_WEIGHT]
-. di
+. RULE_WEIGHT \\*[$RL_WEIGHT]
. gcolor \\*[$RL_COLOR]
\D't \\n[#RULE_WEIGHT]'\
\h'\\*[$RL_INDENT]-\\n[#RULE_WEIGHT_ADJ]u'\
\D'l 0 \\*[$RL_DEPTH]'\
\D't \\n[#SAVED_RULE_WEIGHT]'
. if \\n[#FILLED]=1 \{\
-. if \\n[#FILL_MODE]=0 \{ .QUAD LEFT \}
-. if \\n[#FILL_MODE]=1 \{ .JUSTIFY \}
-. if \\n[#FILL_MODE]=3 \{ .QUAD CENTER \}
-. if \\n[#FILL_MODE]=5 \{ .QUAD RIGHT \}
+. if \\n[#FILL_MODE]=0 .QUAD LEFT
+. if \\n[#FILL_MODE]=1 .JUSTIFY
+. if \\n[#FILL_MODE]=3 .QUAD CENTER
+. if \\n[#FILL_MODE]=5 .QUAD RIGHT
. rr #FILLED
. \}
. sp -1v
. if \\n[#NOFILL]=1 \{\
-. if \\n[#NOFILL_MODE]=3 \{ .CENTER \}
-. if \\n[#NOFILL_MODE]=5 \{ .RIGHT \}
+. if \\n[#NOFILL_MODE]=3 .CENTER
+. if \\n[#NOFILL_MODE]=5 .RIGHT
. \}
. gcolor
. nr #RULE_WEIGHT \\n[#SAVED_WEIGHT]
@@ -2970,6 +2907,9 @@ end
. vpt 1
. rr #RESTORE_TRAP
. \}
+. if '\\n[.z]'FLOAT*DIV' \{\
+. if !(\\n[.d]+\\*[$RL_DEPTH])<\\n[D-float] .nr D-float \\n[.d]+\\*[$RL_DEPTH]
+. \}
.END
\#
\# BOXES - DBX
@@ -2990,49 +2930,37 @@ end
. vpt 0
. nr #RESTORE_TRAP 1
. \}
-. ie !\\n[#NO_ADVANCE]=1 \{ .br \}
+. ie !\\n[#NO_ADVANCE]=1 .br
. el \{\
. sp -1v
. rr #NO_ADVANCE
. \}
-. ie \\n(.u=1 \{\
+. ie \\n[.u]=1 \{\
. nr #FILLED 1
-. nr #FILL_MODE \\n(.j
+. nr #FILL_MODE \\n[.j]
. \}
. el \{\
. nr #NOFILL 1
-. if \\n[.ce]>0 \{ .nr #NOFILL_MODE 3 \}
-. if \\n[.rj]>0 \{ .nr #NOFILL_MODE 5 \}
+. if \\n[.ce]>0 .nr #NOFILL_MODE 3
+. if \\n[.rj]>0 .nr #NOFILL_MODE 5
. ce 0
. rj 0
. \}
. nf
-. ie '\\$1'SOLID' \{\
-. nr #BX_SOLID 1
-. \}
-. el \{\
-. ds $BX_WEIGHT \\$1
-. \}
+. ie '\\$1'SOLID' .nr #BX_SOLID 1
+. el .ds $BX_WEIGHT \\$1
. ds $BX_INDENT \\$2
-. ds $BX_WIDTH \\$3
+. ds $BX_WIDTH \\$3
. ds $BX_DEPTH \\$4
. ie !'\\$5'' \{\
-. ie d$\\$5_FILL \{\
-. ds $BX_COLOR \\*[$\\$5_FILL]
-. \}
-. el \{\
-. ds $BX_COLOR \\$5
-. \}
-. \}
-. el \{\
-. ds $BX_COLOR default
+. ie d$\\$5_FILL .ds $BX_COLOR \\*[$\\$5_FILL]
+. el .ds $BX_COLOR \\$5
. \}
+. el .ds $BX_COLOR default
. nr #SAVED_WEIGHT \\n[#RULE_WEIGHT]
. nr #SAVED_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
. if !'\\$1'SOLID' \{\
-. di NULL
-. RULE_WEIGHT \\*[$BX_WEIGHT]
-. di
+. RULE_WEIGHT \\*[$BX_WEIGHT]
. \}
. ds $BX_INDENT \\*[$BX_INDENT]-\\n[#WEIGHT_ADJ]u
. ie \\n[#BX_SOLID]=1 \{\
@@ -3054,15 +2982,15 @@ end
. \}
. sp -1v
. if \\n[#FILLED]=1 \{\
-. if \\n[#FILL_MODE]=0 \{ .QUAD LEFT \}
-. if \\n[#FILL_MODE]=1 \{ .JUSTIFY \}
-. if \\n[#FILL_MODE]=3 \{ .QUAD CENTER \}
-. if \\n[#FILL_MODE]=5 \{ .QUAD RIGHT \}
+. if \\n[#FILL_MODE]=0 .QUAD LEFT
+. if \\n[#FILL_MODE]=1 .JUSTIFY
+. if \\n[#FILL_MODE]=3 .QUAD CENTER
+. if \\n[#FILL_MODE]=5 .QUAD RIGHT
. rr #FILLED
. \}
. if \\n[#NOFILL]=1 \{\
-. if \\n[#NOFILL_MODE]=3 \{ .CENTER \}
-. if \\n[#NOFILL_MODE]=5 \{ .RIGHT \}
+. if \\n[#NOFILL_MODE]=3 .CENTER
+. if \\n[#NOFILL_MODE]=5 .RIGHT
. \}
. nr #RULE_WEIGHT \\n[#SAVED_WEIGHT]
. nr #WEIGHT_ADJ \\n[#SAVED_WEIGHT_ADJ]
@@ -3072,9 +3000,11 @@ end
. vpt 1
. rr #RESTORE_TRAP
. \}
+. if '\\n[.z]'FLOAT*DIV' \{\
+. if !(\\n[.d]+\\*[$BX_DEPTH])<\\n[D-float] .nr D-float \\n[.d]+\\*[$BX_DEPTH]
+. \}
.END
\#
-\#
\# ELLIPSES - DCL
\# --------------
\# *Arguments:
@@ -3094,49 +3024,37 @@ end
. vpt 0
. nr #RESTORE_TRAP 1
. \}
-. ie !\\n[#NO_ADVANCE]=1 \{ .br \}
+. ie !\\n[#NO_ADVANCE]=1 .br
. el \{\
. sp -1v
. rr #NO_ADVANCE
. \}
-. ie \\n(.u=1 \{\
+. ie \\n[.u]=1 \{\
. nr #FILLED 1
-. nr #FILL_MODE \\n(.j
+. nr #FILL_MODE \\n[.j]
. \}
. el \{\
. nr #NOFILL 1
-. if \\n[.ce]>0 \{ .nr #NOFILL_MODE 3 \}
-. if \\n[.rj]>0 \{ .nr #NOFILL_MODE 5 \}
+. if \\n[.ce]>0 .nr #NOFILL_MODE 3
+. if \\n[.rj]>0 .nr #NOFILL_MODE 5
. ce 0
. rj 0
. \}
. nf
-. ie '\\$1'SOLID' \{\
-. nr #CL_SOLID 1
-. \}
-. el \{\
-. ds $CL_WEIGHT \\$1
-. \}
+. ie '\\$1'SOLID' .nr #CL_SOLID 1
+. el .ds $CL_WEIGHT \\$1
. ds $CL_INDENT \\$2
. ds $CL_WIDTH \\$3
. ds $CL_DEPTH \\$4
. ie !'\\$5'' \{\
-. ie d$\\$5_FILL \{\
-. ds $CL_COLOR \\*[$\\$5_FILL]
-. \}
-. el \{\
-. ds $CL_COLOR \\$5
-. \}
-. \}
-. el \{\
-. ds $CL_COLOR default
+. ie d$\\$5_FILL .ds $CL_COLOR \\*[$\\$5_FILL]
+. el .ds $CL_COLOR \\$5
. \}
+. el .ds $CL_COLOR default
. nr #SAVED_WEIGHT \\n[#RULE_WEIGHT]
. nr #SAVED_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
. if !'\\$1'SOLID' \{\
-. di NULL
. RULE_WEIGHT \\*[$CL_WEIGHT]
-. di
. \}
. ds $CL_INDENT \\*[$CL_INDENT]-\\n[#WEIGHT_ADJ]u
. ie \\n[#CL_SOLID]=1 \{\
@@ -3160,15 +3078,15 @@ end
. \}
. sp -1v
. if \\n[#FILLED]=1 \{\
-. if \\n[#FILL_MODE]=0 \{ .QUAD LEFT \}
-. if \\n[#FILL_MODE]=1 \{ .JUSTIFY \}
-. if \\n[#FILL_MODE]=3 \{ .QUAD CENTER \}
-. if \\n[#FILL_MODE]=5 \{ .QUAD RIGHT \}
+. if \\n[#FILL_MODE]=0 .QUAD LEFT
+. if \\n[#FILL_MODE]=1 .JUSTIFY
+. if \\n[#FILL_MODE]=3 .QUAD CENTER
+. if \\n[#FILL_MODE]=5 .QUAD RIGHT
. rr #FILLED
. \}
. if \\n[#NOFILL]=1 \{\
-. if \\n[#NOFILL_MODE]=3 \{ .CENTER \}
-. if \\n[#NOFILL_MODE]=5 \{ .RIGHT \}
+. if \\n[#NOFILL_MODE]=3 .CENTER
+. if \\n[#NOFILL_MODE]=5 .RIGHT
. \}
. nr #RULE_WEIGHT \\n[#SAVED_WEIGHT]
. nr #WEIGHT_ADJ \\n[#SAVED_WEIGHT_ADJ]
@@ -3178,9 +3096,11 @@ end
. vpt 1
. rr #RESTORE_TRAP
. \}
+. if '\\n[.z]'FLOAT*DIV' \{\
+. if !(\\n[.d]+\\*[$CL_DEPTH])<\\n[D-float] .nr D-float \\n[.d]+\\*[$CL_DEPTH]
+. \}
.END
\#
-\#
\# RULE WEIGHT
\# -----------
\# *Argument:
@@ -3189,15 +3109,15 @@ end
\# Sets \D't <n>' to the correct number of machine units for the
\# argument given in points.
\# *Notes:
-\# Decimal fractions are allowed. Rule weight must be > 100.
+\# Decimal fractions are allowed. Rule weight must be < 100.
\#
.MAC RULE_WEIGHT END
. di NULL \" Diverted so there's no problem with breaks, spacing, etc.
. ds $ARG \\$1
. substring $ARG -1
. if !\B'\\*[$ARG]' \{\
-. tm1 "[mom]: The argument to \\$0 must not have a unit of measure appended.
-. ab Aborting at \\$0, line \\n[.c].
+. tm1 "[mom]: The argument to \\$0 must not have a unit of measure appended.
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
. length #STR_LENGTH \\$1
. ds $ARG \\$1
@@ -3209,8 +3129,8 @@ end
. if (\\n[#WEIGHT]>=1000) \{\
. while (\\n[#WEIGHT]>=1000) \{\
. nr #WEIGHT \\n[#WEIGHT]/10
-. \}
- \}
+. \}
+. \}
. \}
. el \{\
. ds $ARG \\$1
@@ -3224,19 +3144,17 @@ end
. if (\\n[#WEIGHT]>=10000) \{\
. while (\\n[#WEIGHT]>=10000) \{\
. nr #WEIGHT \\n[#WEIGHT]/10
-. \}
+. \}
. \}
. \}
. el \{\
-. ie \\n[#STR_LENGTH]<=2 \{\
-. nr #WEIGHT \\$1*1000
-. \}
+. ie \\n[#STR_LENGTH]<=2 .nr #WEIGHT \\$1*1000
. el \{\
. ds $ARG \\$1
. substring $ARG 2 2
. ie !'\\*[$ARG]'.' \{\
. tm1 "[mom]: Invalid argument given to macro \\$0 at line \\n[.c].
-. tm1 " Rule weight must be > 100 points.
+. tm1 " Rule weight must be < 100 points.
. tm1 " Falling back to default weight .5 points.
. nr #WEIGHT 500
. \}
@@ -3249,7 +3167,7 @@ end
. if (\\n[#WEIGHT]>=100000) \{\
. while (\\n[#WEIGHT]>=100000) \{\
. nr #WEIGHT \\n[#WEIGHT]/10
-. \}
+. \}
. \}
. \}
. \}
@@ -3264,9 +3182,9 @@ end
. nr #COVER_UNDERLINE_WEIGHT \\n[#WEIGHT]
. nr #COVER_UNDERLINE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
. \}
-. if '\\$0'DOCCOVER_UNDERLINE_WEIGHT' \{\
-. nr #DOCCOVER_UNDERLINE_WEIGHT \\n[#WEIGHT]
-. nr #DOCCOVER_UNDERLINE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
+. if '\\$0'DOC_COVER_UNDERLINE_WEIGHT' \{\
+. nr #DOC_COVER_UNDERLINE_WEIGHT \\n[#WEIGHT]
+. nr #DOC_COVER_UNDERLINE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
. \}
. if '\\$0'DOCTYPE_UNDERLINE_WEIGHT' \{\
. nr #DOCTYPE_UNDERLINE_WEIGHT \\n[#WEIGHT]
@@ -3288,10 +3206,6 @@ end
. nr #FN_RULE_WEIGHT \\n[#WEIGHT]
. nr #FN_RULE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
. \}
-. if '\\$0'HEAD_UNDERLINE_WEIGHT' \{\
-. nr #HEAD_UNDERLINE_WEIGHT \\n[#WEIGHT]
-. nr #HEAD_UNDERLINE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
-. \}
. if '\\$0'HEADER_RULE_WEIGHT' \{\
. nr #HEADER_RULE_WEIGHT \\n[#WEIGHT]
. nr #HEADER_RULE_WEIGHT_ADJ \\n[#WEIGHT_ADJ]
@@ -3308,16 +3222,15 @@ end
.END
\#
\# Aliases
-\# ~~~~~~~
+\#
.ALIAS BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT RULE_WEIGHT
.ALIAS COVER_UNDERLINE_WEIGHT RULE_WEIGHT
-.ALIAS DOCCOVER_UNDERLINE_WEIGHT RULE_WEIGHT
+.ALIAS DOC_COVER_UNDERLINE_WEIGHT RULE_WEIGHT
.ALIAS DOCTYPE_UNDERLINE_WEIGHT RULE_WEIGHT
.ALIAS ENDNOTE_STRING_UNDERLINE_WEIGHT RULE_WEIGHT
.ALIAS ENDNOTE_TITLE_UNDERLINE_WEIGHT RULE_WEIGHT
.ALIAS FOOTER_RULE_WEIGHT RULE_WEIGHT
.ALIAS FOOTNOTE_RULE_WEIGHT RULE_WEIGHT
-.ALIAS HEAD_UNDERLINE_WEIGHT RULE_WEIGHT
.ALIAS HEADER_RULE_WEIGHT RULE_WEIGHT
.ALIAS UNDERSCORE_WEIGHT RULE_WEIGHT
\#
@@ -3325,29 +3238,27 @@ end
\# ~~~~~~~~~~~~~~~~~~~~
.nr #BIB_STRING_UNDERLINE_WEIGHT 500
.nr #COVER_UNDERLINE_WEIGHT 500
-.nr #DOCCOVER_UNDERLINE_WEIGHT 500
+.nr #DOC_COVER_UNDERLINE_WEIGHT 500
.nr #DOCTYPE_UNDERLINE_WEIGHT 500
.nr #EN_STRING_UNDERLINE_WEIGHT 500
.nr #EN_TITLE_UNDERLINE_WEIGHT 500
.nr #FN_RULE_WEIGHT 500
.nr #FOOTER_RULE_WEIGHT 500
-.nr #HEAD_UNDERLINE_WEIGHT 500
.nr #HEADER_RULE_WEIGHT 500
.nr #RULE_WEIGHT 500
.nr #UNDERSCORE_WEIGHT 500
\#
-.nr #BIB_STRING_UNDERLINE_WEIGHT_ADJ \\n[#BIB_STRING_UNDERLINE_WEIGHT]/2
-.nr #COVER_UNDERLINE_WEIGHT_ADJ \\n[#DOCTYPE_UNDERLINE_WEIGHT]/2
-.nr #DOCCOVER_UNDERLINE_WEIGHT_ADJ \\n[#DOCTYPE_RULE_WEIGHT]/2
-.nr #DOCTYPE_UNDERLINE_WEIGHT_ADJ \\n[#DOCTYPE_RULE_WEIGHT]/2
-.nr #EN_STRING_UNDERLINE_WEIGHT_ADJ \\n[#EN_STRING_UNDERLINE_WEIGHT]/2
-.nr #EN_TITLE_UNDERLINE_WEIGHT_ADJ \\n[#EN_STRING_UNDERLINE_WEIGHT]/2
-.nr #FOOTER_RULE_WEIGHT_ADJ \\n[#FOOTER_RULE_WEIGHT]/2
-.nr #FN_RULE_WEIGHT_ADJ \\n[#FN_RULE_WEIGHT]/2
-.nr #HEAD_UNDERLINE_WEIGHT_ADJ \\n[#HEAD_UNDERLINE_WEIGHT]/2
-.nr #HEADER_RULE_WEIGHT_ADJ \\n[#HEADER_RULE_WEIGHT]/2
-.nr #RULE_WEIGHT_ADJ \\n[#RULE_WEIGHT]/2
-.nr #UNDERSCORE_WEIGHT_ADJ \\n[#UNDERSCORE_WEIGHT]/2
+.nr #BIB_STRING_UNDERLINE_WEIGHT_ADJ \n[#BIB_STRING_UNDERLINE_WEIGHT]/2
+.nr #COVER_UNDERLINE_WEIGHT_ADJ \n[#DOCTYPE_UNDERLINE_WEIGHT]/2
+.nr #DOC_COVER_UNDERLINE_WEIGHT_ADJ \n[#DOCTYPE_RULE_WEIGHT]/2
+.nr #DOCTYPE_UNDERLINE_WEIGHT_ADJ \n[#DOCTYPE_RULE_WEIGHT]/2
+.nr #EN_STRING_UNDERLINE_WEIGHT_ADJ \n[#EN_STRING_UNDERLINE_WEIGHT]/2
+.nr #EN_TITLE_UNDERLINE_WEIGHT_ADJ \n[#EN_STRING_UNDERLINE_WEIGHT]/2
+.nr #FOOTER_RULE_WEIGHT_ADJ \n[#FOOTER_RULE_WEIGHT]/2
+.nr #FN_RULE_WEIGHT_ADJ \n[#FN_RULE_WEIGHT]/2
+.nr #HEADER_RULE_WEIGHT_ADJ \n[#HEADER_RULE_WEIGHT]/2
+.nr #RULE_WEIGHT_ADJ \n[#RULE_WEIGHT]/2
+.nr #UNDERSCORE_WEIGHT_ADJ \n[#UNDERSCORE_WEIGHT]/2
\#
\# Set default rule weight
\#
@@ -3371,24 +3282,22 @@ end
\# $WS_VAR is the user supplied amount by which to in/decrease word space.
\# $WS is a concatenation of WS_CONSTANT and WS_VAR.
\#
-\# Because the user supplied value requires a literal + or - sign,
-\# the macro argument is stored in a string.
-\#
\# \n[.sss] holds the current sentence space value.
\#
.MAC WS END
-. ds $WS_CONSTANT 12
-. ds $WS_VAR \\$1
-. ie '\\$1'DEFAULT' .ds $WS_VAR +0
-. el .ds $WS (\\*[$WS_CONSTANT]\\*[$WS_VAR])
-. ie \\n[.sss]=12 \{ .ss \\*[$WS] 12 \}
+. ds $WS_CURR \\n[.ss]
+. ds $WS_VAR \\$1
+. ie '\\$1'DEFAULT' .ss 12 \\n[.sss]
. el \{\
-. ss \\*[$WS] (\\*[$WS]\\*[$SS_VAR])
-. SS \\*[$SS_VAR]
+. ds $WS (\\*[$WS_CURR]\\*[$WS_VAR])
+. ie \\n[.sss]=12 .ss \\*[$WS] 12
+. el \{\
+. ss \\*[$WS] (\\*[$WS]\\*[$SS_VAR])
+. SS \\*[$SS_VAR]
+. \}
. \}
.END
\#
-\#
\# SENTENCE SPACE CONTROL
\# ----------------------
\# *Argument:
@@ -3411,162 +3320,76 @@ end
\#
.MAC SS END
. ds $SS_VAR \\$1
-. ie '\\$1'0' \{ .ss \\n[.ss] (\\n[.ss]-\\n[.ss]) \}
+. ie '\\$1'0' .ss \\n[.ss] (\\n[.ss]-\\n[.ss])
. el \{\
-. ie '\\$1'DEFAULT' \{ .ss \\n[.ss] \}
-. el \{\
-. ss \\n[.ss] (0\\*[$SS_VAR])
-. \}
+. ie '\\$1'DEFAULT' .ss \\n[.ss]
+. el .ss \\n[.ss] (0\\*[$SS_VAR])
. \}
.END
\#
-\#
\# =====================================================================
\#
-\# +++INDENTS+++
-\#
-\# There are five styles of indents: left, right, both, temporary,
-\# and hanging. Each is set/invoked with a different macro.
-\# Indent macros begin with the letter "I", hence .IL means "indent left,"
-\# .IR means "indent right," and so on.
-\#
-\# The first time any of the indent macros is used, it requires an
-\# argument--the size of the indent (with a unit of measure). The
-\# size may also be entered using the \w escape--very useful
-\# for numbered lists using HI. The unit of measure is required.
-\# Subsequent invocations don't require the argument; the indent
-\# measure remains the same until it's changed by invoking the macro
-\# with an argument again.
-\#
-\# If no indents are in effect, the arguments passed to indent macros are
-\# measured from the left and right margins of the page. If a left indent
-\# or a right indent is already in effect, the arguments passed to
-\# the indent macros are calculated from the current values; in other words,
-\# the arguments are additive. If you quit an indent and later return
-\# to it, its value will be the value last in effect, unless you pass
-\# it an argument. If you do pass an argument, it is added to the last
-\# value in effect, unless you cleared the indent with one of
-\# .I<LRB>X/Q macros.
-\#
-\# Example
+\# INDENTS
\# -------
-\#
-\# .IL 2P
-\# ...some text...
-\# .IL 2P
-\# ...some text...
-\# .IQ
-\# ...some text...
-\# .IL
-\# ...some text...
-\#
-\# The first .IL 2P indents text 2P from the left margin. The second
-\# .IL 2P indents text by an additional 2P, i.e. 4P from the left margin.
-\# .IQ turns the indent off. The last .IL (which has no argument)
-\# takes its value from the total of all arguments passed to .IL (in
-\# this case, 2P and 2P), therefore it indents 2P+2P from the left
-\# margin, i.e. 4P. If you wanted the last .IL to indent just 2P,
-\# you'd either have to reset the .IL prior to .IQ (.IL -2P), or pass
-\# the last .IL the argument 2P.
-\#
-\# To reverse the sense of an indent added to an indent, you may use
-\# negative values.
-\#
-\# Indents can be turned off individually with ILX, IRX, and IBX.
-\# LEFT and RIGHT indents may be combined and manipulated
-\# separately, (e.g. you can have an IL of 2P and an IR of 4P
-\# operative at the same time, and then change, say, the IL to
-\# 4P--thereby left indenting 6P--while the IR remains at 4P.
-\#
-\# IB automatically turns off IL and IR. They have to be reinvoked
-\# again when needed. IL and IR automatically turn IB off; it, too,
-\# has to be reinvoked with needed.
-\#
-\# All indents can be turned off at once with IQ. The ILX, IRX, IBX,
-\# and IQ macros simply turn the indents off; the values stored in
-\# the respective indent macros (IL, IR, IB) remain in effect. If
-\# the user wishes to clear the values, the I<LRB>X macros should be
-\# invoked with the single argument CLEAR. IQ CLEAR clears out
-\# the values stored for all indent styles.
-\#
-\# Indents *must* be turned off before settting string tabs
-\# inside PAD. Generally, in order not to get confused, it's a
-\# good idea to turn all indents off before setting any tabs.
-\#
-\# TI and HI are special cases. There's no need to turn them off,
-\# since they affect only one line--the first after their
-\# invocation. Like the other indent styles, the first time
-\# they're invoked, they require a value in iPpcm; each subsequent
-\# invocation without an argument will use the same value. To
-\# change the value, simply pass a new value. Values for TI and HI
-\# are *not* additive.
-\#
-\# HI presupposes that you already have a left or both indent on.
-\# HI will never hang a line outside the left margin of a document
-\# or column. In other words, you must have IL or IB on before you
-\# can use HI.
\#
-\# INDENT LEFT
-\# -----------
+\# +++INDENT LEFT+++
\#
.MAC IL END
-. if \\n[#INDENT_STYLE_BOTH] \{ .IBX \}
+. if \\n[#INDENT_STYLE_BOTH] .IBX
. nr #INDENT_STYLE_LEFT 1
. nr #INDENT_ACTIVE 1
. nr #INDENT_LEFT_ACTIVE 1
. ie '\\$1'' \{\
. br
. in \\n[#L_INDENT]u
-. ta \\n(.lu-\\n[#L_INDENT]u
+. ta \\n[.l]u-\\n[#L_INDENT]u
. \}
. el \{\
. br
. nr #L_INDENT +(\\$1)
. in \\n[#L_INDENT]u
-. ta \\n(.lu-\\n[#L_INDENT]u
+. ta \\n[.l]u-\\n[#L_INDENT]u
. \}
. if \\n[#IN_ITEM] .nr #IN_ITEM_L_INDENT +(\\$1)
.END
\#
-\#
\# +++INDENT RIGHT+++
\#
.MAC IR END
-. if \\n[#INDENT_STYLE_BOTH] \{ .IBX \}
+. if \\n[#INDENT_STYLE_BOTH] .IBX
. nr #INDENT_STYLE_RIGHT 1
. nr #INDENT_ACTIVE 1
. nr #INDENT_RIGHT_ACTIVE 1
. ie '\\$1'' \{\
. br
. ie \\n[#TAB_ACTIVE] \{\
-. ll \\n(.lu-\\n[#R_INDENT]u
-. ta \\n(.lu-\\n[#L_INDENT]u
+. ll \\n[.l]u-\\n[#R_INDENT]u
+. ta \\n[.l]u-\\n[#L_INDENT]u
. \}
. el \{\
. ll \\n[#L_LENGTH]u-\\n[#R_INDENT]u
-. ta \\n(.lu-\\n[#L_INDENT]u
+. ta \\n[.l]u-\\n[#L_INDENT]u
. \}
. \}
. el \{\
. br
. nr #R_INDENT +(\\$1)
. ie \\n[#TAB_ACTIVE] \{\
-. ll \\n(.lu-\\n[#R_INDENT]u
-. ta \\n(.lu-\\n[#L_INDENT]u
+. ll \\n[.l]u-\\n[#R_INDENT]u
+. ta \\n[.l]u-\\n[#L_INDENT]u
. \}
. el \{\
. ll \\n[#L_LENGTH]u-\\n[#R_INDENT]u
-. ta \\n(.lu-\\n[#L_INDENT]u
+. ta \\n[.l]u-\\n[#L_INDENT]u
. \}
. \}
.END
\#
-\#
\# +++INDENT BOTH+++
\#
.MAC IB END
-. if \\n[#INDENT_STYLE_LEFT] \{ .ILX \}
-. if \\n[#INDENT_STYLE_RIGHT] \{ .IRX \}
+. if \\n[#INDENT_STYLE_LEFT] .ILX
+. if \\n[#INDENT_STYLE_RIGHT] .IRX
. nr #INDENT_STYLE_BOTH 1
. nr #INDENT_ACTIVE 1
. nr #INDENT_BOTH_ACTIVE 1
@@ -3574,45 +3397,40 @@ end
. br
. in \\n[#BL_INDENT]u
. ie \\n[#TAB_ACTIVE] \{\
-. ll \\n(.lu-\\n[#BR_INDENT]u
-. ta \\n(.lu-\\n[#BR_INDENT]u
+. ll \\n[.l]u-\\n[#BR_INDENT]u
+. ta \\n[.l]u-\\n[#BR_INDENT]u
. \}
. el \{\
. ll \\n[#L_LENGTH]u-\\n[#BR_INDENT]u
-. ta \\n(.lu-\\n[#BR_INDENT]u
+. ta \\n[.l]u-\\n[#BR_INDENT]u
. \}
. \}
. el \{\
. br
. nr #BL_INDENT (\\n[#INDENT]+\\$1)
-. ie \\n[#NUM_ARGS]=2 \{ .nr #BR_INDENT +(\\$2) \}
-. el \{ .nr #BR_INDENT \\n[#BL_INDENT] \}
+. ie \\n[#NUM_ARGS]=2 .nr #BR_INDENT +(\\$2)
+. el .nr #BR_INDENT \\n[#BL_INDENT]
. ie \\n[#TAB_ACTIVE] \{\
. in \\n[#BL_INDENT]u
-. ll \\n(.lu-\\n[#BR_INDENT]u
-. ta \\n(.lu-\\n[#BL_INDENT]u
+. ll \\n[.l]u-\\n[#BR_INDENT]u
+. ta \\n[.l]u-\\n[#BL_INDENT]u
. \}
. el \{\
. in \\n[#BL_INDENT]u
. ll \\n[#L_LENGTH]u-\\n[#BR_INDENT]u
-. ta \\n(.lu-\\n[#BR_INDENT]u
+. ta \\n[.l]u-\\n[#BR_INDENT]u
. \}
. \}
.END
\#
-\#
\# +++TEMPORARY INDENT+++
\#
.MAC TI END
. br
. ie '\\$1'' \{\
. ti \\n[#T_INDENT]u
-. if \\n[#INDENT_LEFT_ACTIVE] \{\
-. ti \\n[#T_INDENT]u+\\n[#L_INDENT]u
-. \}
-. if \\n[#INDENT_BOTH_ACTIVE] \{\
-. ti \\n[#T_INDENT]u+\\n[#BL_INDENT]u
-. \}
+. if \\n[#INDENT_LEFT_ACTIVE] .ti \\n[#T_INDENT]u+\\n[#L_INDENT]u
+. if \\n[#INDENT_BOTH_ACTIVE] .ti \\n[#T_INDENT]u+\\n[#BL_INDENT]u
. \}
. el \{\
. nr #T_INDENT (\\$1)
@@ -3620,22 +3438,20 @@ end
. \}
.END
\#
-\#
\# +++HANGING INDENT+++
\#
.MAC HI END
-. ie '\\$1'' \{ .ti -\\n[#HL_INDENT]u \}
+. ie '\\$1'' .ti -\\n[#HL_INDENT]u
. el \{\
. nr #HL_INDENT (\\$1)
. ti -\\n[#HL_INDENT]u
. \}
.END
\#
-\#
\# +++INDENTS OFF+++
\#
.MAC ILX END
-. ie \\n[#IN_ITEM] \{ .nr #L_INDENT -\\n[#IN_ITEM_L_INDENT] \}
+. ie \\n[#IN_ITEM] .nr #L_INDENT -\\n[#IN_ITEM_L_INDENT]
. el \{\
. br
. in 0
@@ -3647,19 +3463,18 @@ end
. \}
.END
\#
-\#
.MAC IRX END
. br
. rr #INDENT_RIGHT_ACTIVE
-. ie \\n[#TAB_ACTIVE] \{ .TAB\\n[#CURRENT_TAB] \}
+. ie \\n[#TAB_ACTIVE] .TAB\\n[#CURRENT_TAB]
. el \{\
. ie \\n[#COLUMNS] \{\
. ll \\n[#COL_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. el \{\
. ll \\n[#L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. \}
. if '\\$1'CLEAR' \{\
@@ -3668,20 +3483,19 @@ end
. \}
.END
\#
-\#
.MAC IBX END
. br
. in 0
. rr #INDENT_BOTH_ACTIVE
-. ie \\n[#TAB_ACTIVE] \{ .TAB\\n[#CURRENT_TAB] \}
+. ie \\n[#TAB_ACTIVE] .TAB\\n[#CURRENT_TAB]
. el \{\
. ie \\n[#COLUMNS] \{\
. ll \\n[#COL_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. el \{\
. ll \\n[#L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. \}
. if '\\$1'CLEAR' \{\
@@ -3691,11 +3505,10 @@ end
. \}
.END
\#
-\#
.MAC IX END
. if '\\$0'IX' \{\
. if !\\n[#IX_WARN] \{\
-. tm1 "[mom]: Use of .IX is now deprecated. Use .IQ instead.
+. tm1 "[mom]: Use of .IX is deprecated. Use .IQ instead.
. tm1 " .IX will continue to behave as before, but to
. tm1 " avoid this message, please update your document.
. nr #IX_WARN 1
@@ -3707,55 +3520,55 @@ end
. rr #INDENT_RIGHT_ACTIVE
. rr #INDENT_BOTH_ACTIVE
. if \\n[#INDENT_STYLE_RIGHT] \{\
-. ie \\n[#TAB_ACTIVE] \{ .TAB\\n[#CURRENT_TAB] \}
+. ie \\n[#TAB_ACTIVE] .TAB\\n[#CURRENT_TAB]
. el \{\
. ie \\n[#COLUMNS] \{\
. ll \\n[#COL_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. el \{\
. ll \\n[#L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. \}
. \}
. if \\n[#INDENT_STYLE_BOTH] \{\
-. ie \\n[#TAB_ACTIVE] \{ .TAB\\n[#CURRENT_TAB] \}
+. ie \\n[#TAB_ACTIVE] .TAB\\n[#CURRENT_TAB]
. el \{\
. ie \\n[#COLUMNS] \{\
. ll \\n[#COL_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. el \{\
. ll \\n[#L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. \}
. \}
. if '\\$1'CLEAR' \{\
. if \\n[#INDENT_STYLE_RIGHT] \{\
-. ie \\n[#TAB_ACTIVE] \{ .TAB\\n[#CURRENT_TAB] \}
+. ie \\n[#TAB_ACTIVE] .TAB\\n[#CURRENT_TAB]
. el \{\
. ie \\n[#COLUMNS] \{\
. ll \\n[#COL_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. el \{\
. ll \\n[#L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. \}
. \}
. if \\n[#INDENT_STYLE_BOTH] \{\
-. ie \\n[#TAB_ACTIVE] \{ .TAB\\n[#CURRENT_TAB] \}
+. ie \\n[#TAB_ACTIVE] .TAB\\n[#CURRENT_TAB]
. el \{\
. ie \\n[#COLUMNS] \{\
. ll \\n[#COL_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. el \{\
. ll \\n[#L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. \}
. \}
@@ -3784,7 +3597,7 @@ end
\# Marks the top of a column set
\#
.MAC MCO END
-.mk c
+. mk c
.END
\#
\# MULTIPLE COLUMN RETURN
@@ -3796,7 +3609,7 @@ end
\#
.MAC MCR END
. TRAP OFF
-. sp |\\ncu
+. sp |\\n[c]u
. TRAP
.END
\#
@@ -3817,13 +3630,13 @@ end
. TRAP OFF
. ie '\\$1'' \{\
. TQ
-. sp |\\n(.hu
+. sp |\\n[.h]u
. \}
. el \{\
. nr #MCX_ALD (\\$1)
. TQ
-. ie \\n[#MCX_ALD]=0 \{ .sp |\\n(.hu-1v \}
-. el \{ .sp |\\n(.hu+\\n[#MCX_ALD]u \}
+. ie \\n[#MCX_ALD]=0 .sp |\\n[.h]u-1v
+. el .sp |\\n[.h]u+\\n[#MCX_ALD]u
. rr #MCX_ALD
. \}
. TRAP
@@ -3847,11 +3660,10 @@ end
\# The user simply enloses the offending lines in TRAP OFF/TRAP.
\#
.MAC TRAP END
-. ie '\\$1'' \{ .vpt 1 \}
-. el \{ .vpt 0 \}
+. ie '\\$1'' .vpt 1
+. el .vpt 0
.END
\#
-\#
\# SILENT
\# ------
\# *Arguments:
@@ -3867,8 +3679,8 @@ end
\#
.MAC SILENT END
. nr #SILENT 1
-. if \\n[#QUAD] \{ .br \}
-. ie '\\$1'' \{ .di NO_FLASH \}
+. if \\n[#QUAD] .br
+. ie '\\$1'' .di NO_FLASH
. el \{\
. br
. di
@@ -3877,7 +3689,6 @@ end
. \}
.END
\#
-\#
\# PRINT
\# -----
\# *Function:
@@ -3887,7 +3698,6 @@ end
. nop \\$*
.END
\#
-\#
\# CAPS
\# ----
\# *Arguments:
@@ -4056,6 +3866,9 @@ end
\# The routine is diverted so it remains invisible to output.
\#
.MAC SIZESPECS END
+. if '\\n[.z]'FLOAT*DIV' \{\
+. if \\n[dn] .nr saved-dn \\n[dn]
+. \}
. di TYPESIZE
E\\R'#CAP_HEIGHT \\n[.cht]'
e\\R'#X_HEIGHT \\n[.cht]'
@@ -4065,6 +3878,9 @@ y\\R'#DESCENDER \\n[.cdp]'
. ds $X_HEIGHT \\n[#X_HEIGHT]u
. ds $DESCENDER \\n[#DESCENDER]u
. di
+. if '\\n[.z]'FLOAT*DIV' \{\
+. nr dn \\n[saved-dn]
+. \}
.END
\#
\# =====================================================================
@@ -4095,7 +3911,8 @@ y\\R'#DESCENDER \\n[.cdp]'
.ALIAS TB TAB
.ALIAS UNDERSCORE_2 UNDERSCORE2
.ALIAS XCOLOUR XCOLOR
-\#
+.ALIAS PDF_LINK_COLOUR PDF_LINK_COLOR
+.ALIAS AUTO_TOC_RELOCATE AUTO_RELOCATE_TOC
\#
\# ====================================================================
\#
@@ -4169,11 +3986,10 @@ y\\R'#DESCENDER \\n[.cdp]'
. PAGEWIDTH 501p
. PAGELENGTH 709p
. \}
-. if !r#L_MARGIN \{ .L_MARGIN \\n(.o \}
-. if !r#R_MARGIN \{ .R_MARGIN 1i \}
+. if !r#L_MARGIN .L_MARGIN \\n[.o]
+. if !r#R_MARGIN .R_MARGIN 1i
.END
\#
-\#
\# ====================================================================
\#
\# +++PRINTSTYLE -- TYPEWRITE OR TYPESET+++
@@ -4189,59 +4005,54 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
.MAC PRINTSTYLE END
. if !\\n[#COLLATE]=1 \{\
-. if !d$PAPER \{ .PAPER LETTER \}
+. if !d$PAPER .PAPER LETTER
. if '\\$1'TYPEWRITE' \{\
. nr #PRINT_STYLE 1
-. if !\\n[#DOC_TYPE]=4 \{ .L_MARGIN 6P \}
-. if !\\n[#DOC_TYPE]=4 \{ .R_MARGIN 6P \}
-. ds $TYPEWRITER_FAM C
-. ds $TYPEWRITER_PS 12
+. if !\\n[#DOC_TYPE]=4 .L_MARGIN 6P
+. if !\\n[#DOC_TYPE]=4 .R_MARGIN 6P
+. ds $TYPEWRITER_FAM C
+. ds $TYPEWRITER_PS 12
. TYPEWRITER
. color 0
. ie '\\$2'SINGLESPACE' \{\
. nr #SINGLE_SPACE 1
. vs 12
-. nr #ORIGINAL_DOC_LEAD \\n(.v
+. nr #ORIGINAL_DOC_LEAD \\n[.v]
. \}
. el \{\
. vs 24
-. nr #ORIGINAL_DOC_LEAD \\n(.v
+. nr #ORIGINAL_DOC_LEAD \\n[.v]
. \}
. QUAD L
. HY OFF
. SMARTQUOTES OFF
-. if !\\n[#PP_INDENT] \{\
-. in 3P \"Set indent
-. nr #PP_INDENT \\n(.i \"Read into #PP_INDENT
-. in 0 \"Remove indent
-. \}
+. if !\\n[#PP_INDENT] .nr #PP_INDENT 3P
. HDRFTR_RIGHT_CAPS
. nr #BOLDER_UNITS 0
. nr #CONDENSE 0
. nr #EXTEND 0
-. if !\\n[#ITALIC_MEANS_ITALIC] \{ .rm IT \}
+. if !\\n[#ITALIC_MEANS_ITALIC] .rm IT
. rm BD
. rm BDI
-. if !\\n[#ITALIC_MEANS_ITALIC] \{ .rm PREV \}
-. if !\\n[#SLANT_MEANS_SLANT] \{ .UNDERLINE_SLANT \}
-. if !\\n[#ITALIC_MEANS_ITALIC] \{ .UNDERLINE_ITALIC \}
-. if !\\n[#UNDERLINE_QUOTES] \{ .UNDERLINE_QUOTES \}
+. if !\\n[#ITALIC_MEANS_ITALIC] .rm PREV
+. if !\\n[#SLANT_MEANS_SLANT] .UNDERLINE_SLANT
+. if !\\n[#ITALIC_MEANS_ITALIC] .UNDERLINE_ITALIC
+. if !\\n[#UNDERLINE_QUOTES] .UNDERLINE_QUOTES
. nr #IGNORE_COLUMNS 1
. nr #RULE_WEIGHT 500
-. nr #HEAD_UNDERLINE_WEIGHT 500
-. char \(em --
+. char \[em] --
. tr `'
-. tr \(lq"
-. tr \(rq"
+. tr \[lq]"
+. tr \[rq]"
. \}
. if '\\$1'TYPESET' \{\
. nr #PRINT_STYLE 2
-. if !\\n[#DOC_TYPE]=4 \{ .L_MARGIN 6P \}
-. if !\\n[#DOC_TYPE]=4 \{ .R_MARGIN 6P \}
+. if !\\n[#DOC_TYPE]=4 .L_MARGIN 6P
+. if !\\n[#DOC_TYPE]=4 .R_MARGIN 6P
. FAMILY T
. FT R
-. if !\\n[#DOC_TYPE]=4 \{ .PT_SIZE 12.5 \}
-. if !\\n[#DOC_TYPE]=4 \{ .LS 16 \}
+. if !\\n[#DOC_TYPE]=4 .PT_SIZE 12.5
+. if !\\n[#DOC_TYPE]=4 .LS 16
. JUSTIFY
. HY
. HY_SET 2 36p 1p
@@ -4251,16 +4062,43 @@ y\\R'#DESCENDER \\n[.cdp]'
. SMARTQUOTES
. if !\\n[#PP_INDENT] \{\
. in 2m \"Set indent
-. nr #PP_INDENT \\n(.i \"Read into #PP_INDENT
+. nr #PP_INDENT \\n[.i] \"Read into #PP_INDENT
. in 0 \"Remove indent
. \}
. HDRFTR_RIGHT_CAPS
. rr #IGNORE_COLUMNS
. \}
+.\" Set up default style for nine levels of headings
+. nr #HD_LEVEL 0 1 \" loop step
+. nr #LOOP 9 \" loop count
+. while \\n+[#HD_LEVEL]<=\\n[#LOOP] \{\
+. HEADING_STYLE \\n[#HD_LEVEL] \
+ FONT B \
+ SIZE +0 \
+ QUAD L \
+ COLOR black
+.\" Set up default style for nine levels of TOC headings
+. TOC_ENTRY_STYLE \\n[#HD_LEVEL] \
+ FONT R \
+ SIZE +0 \
+ COLOR black
+. \}
+.\" Set up decreasing sizes for headings levels 1 - 3, starting at +3
+. nr #HD_LEVEL 0 1 \" loop step
+. nr #LOOP 3 \" loop count
+. nr #HD_SIZE 4 1
+. while \\n+[#HD_LEVEL]<=\\n[#LOOP] \{\
+. nr #HD_SIZE_CHANGE \\n-[#HD_SIZE]
+. ds $HEAD_\\n[#HD_LEVEL]_SIZE +\\n[#HD_SIZE_CHANGE]
+. \}
+.\" Set up TOC title style
+. TOC_TITLE_STYLE \
+ FONT R \
+ SIZE +0 \
+ INDENT 0
. \}
.END
\#
-\#
\# PRINTSTYLE TYPEWRITE control.
\#
.MAC TYPEWRITER_FAMILY END
@@ -4279,7 +4117,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. ps \\*[$TYPEWRITER_PS]
.END
\#
-\#
\# ITALIC MEANS ITALIC
\# -------------------
\# *Argument:
@@ -4298,13 +4135,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. rm ROM
. rm IT
. rm PREV
-. ds ROM \EfR
-. ds IT \EfI
+. ds ROM \Ef[R]
+. ds IT \Ef[I]
. ds PREV \Ef[]
. \}
.END
\#
-\#
\# UNDERLINE ITALIC
\# ----------------
\# *Argument:
@@ -4331,13 +4167,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
.END
\#
-\#
\# UNDERLINE SLANT
\# ---------------
\# *Arguments:
\# <none> | <anything>
\# *Function:
-\# Instructs TYPEWRITE to underline occurences of \*[SLANT], or
+\# Instructs TYPEWRITE to underline occurrences of \*[SLANT], or
\# turns feature off.
\# *Notes:
\# Users may want \*[SLANT] to mean slant in TYPEWRITE, although
@@ -4361,7 +4196,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
.END
\#
-\#
.MAC SLANT_MEANS_SLANT END
. if \\n[#PRINT_STYLE]=1 \{\
. rr #UNDERLINE_SLANT
@@ -4373,12 +4207,10 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
.END
\#
-\#
.MAC IGNORE_COLUMNS END
-. if \\n[#PRINT_STYLE]=1 \{ .nr #NO_COLUMNS 1 \}
+. if \\n[#PRINT_STYLE]=1 .nr #NO_COLUMNS 1
.END
\#
-\#
\# ====================================================================
\#
\# +++COPY STYLE -- DRAFT OR FINAL+++
@@ -4397,21 +4229,19 @@ y\\R'#DESCENDER \\n[.cdp]'
. ds $COPY_STYLE \\$1
. if '\\*[$COPY_STYLE]'DRAFT' \{\
. nr #COPY_STYLE 1
-. if !d$DRAFT \{ .DRAFT 1 \}
+. if !d$DRAFT .DRAFT 1
. \}
-. if '\\*[$COPY_STYLE]'FINAL' \{ .nr #COPY_STYLE 2 \}
-. if !d$CHAPTER_STRING \{ .CHAPTER_STRING "Chapter" \}
-. if !d$DRAFT_STRING \{ .DRAFT_STRING "Draft" \}
-. if !d$REVISION_STRING \{ .REVISION_STRING "Rev." \}
+. if '\\*[$COPY_STYLE]'FINAL' .nr #COPY_STYLE 2
+. if !d$CHAPTER_STRING .CHAPTER_STRING "Chapter"
+. if !d$DRAFT_STRING .DRAFT_STRING "Draft"
+. if !d$REVISION_STRING .REVISION_STRING "Rev."
.\" Default
. if \\n[#DOC_TYPE]=1 \{\
. ie \\n[#COPY_STYLE]=1 \{\
-. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \}
-. el \{ .PAGENUM_STYLE roman \}
+. ie \\n[#PAGENUM_STYLE_SET] .PAGENUM_STYLE \\*[$PAGENUM_STYLE]
+. el .PAGENUM_STYLE roman
. if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\
-. ie \\n[#DRAFT_WITH_PAGENUM] \{\
-. ds $HDRFTR_CENTER
-. \}
+. ie \\n[#DRAFT_WITH_PAGENUM] .ds $HDRFTR_CENTER
. el \{\
. ie '\\*[$REVISION]'' \{\
. ds $HDRFTR_CENTER \
@@ -4426,9 +4256,9 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. \}
. el \{\
-. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \}
-. el \{ .PAGENUM_STYLE DIGIT \}
-. if r#DRAFT_WITH_PAGENUM \{ .rr #DRAFT_WITH_PAGENUM \}
+. ie \\n[#PAGENUM_STYLE_SET] .PAGENUM_STYLE \\*[$PAGENUM_STYLE]
+. el .PAGENUM_STYLE DIGIT
+. if \\n[#DRAFT_WITH_PAGENUM] .rr #DRAFT_WITH_PAGENUM
. if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\
. ds $HDRFTR_CENTER
. rr #USER_DEF_HDRFTR_CENTER
@@ -4439,20 +4269,20 @@ y\\R'#DESCENDER \\n[.cdp]'
. if \\n[#DOC_TYPE]=2 \{\
.\" Copystyle DRAFT
. ie \\n[#COPY_STYLE]=1 \{\
-. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \}
-. el \{ .PAGENUM_STYLE roman \}
+. ie \\n[#PAGENUM_STYLE_SET] \
+. PAGENUM_STYLE \\*[$PAGENUM_STYLE]
+. el \
+. PAGENUM_STYLE roman
. if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\
. ie \\n[#DRAFT_WITH_PAGENUM] \{\
. ie '\\*[$CHAPTER]'' \{\
-. ie !'\\*[$CHAPTER_TITLE_1]'' \{\
-. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE]
-. \}
+. ie !'\\*[$CHAPTER_TITLE_1]'' \
+. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE]
. el .ds $HDRFTR_CENTER \\*[$CHAPTER_STRING]
. \}
. el \{\
-. ie !'\\*[$CHAPTER_TITLE_1]'' \{\
-. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE]
-. \}
+. ie !'\\*[$CHAPTER_TITLE_1]'' \
+. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE]
. el .ds $HDRFTR_CENTER \\*[$CHAPTER_STRING] \\*[$CHAPTER]
. \}
. \}
@@ -4460,9 +4290,8 @@ y\\R'#DESCENDER \\n[.cdp]'
. ie '\\*[$REVISION]'' \{\
. ie '\\*[$CHAPTER]'' \{\
. ie !'\\*[$CHAPTER_TITLE_1]'' \{\
-. ie '\\*[$DRAFT]'' \{\
+. ie '\\*[$DRAFT]'' \
. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE]
-. \}
. el \{\
. ds $HDRFTR_CENTER \
\\*[$CHAPTER_TITLE], \
@@ -4483,9 +4312,8 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. el \{\
. ie !'\\*[$CHAPTER_TITLE_1]'' \{\
-. ie '\\*[$DRAFT]'' \{\
+. ie '\\*[$DRAFT]'' \
. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE]
-. \}
. el \{\
. ds $HDRFTR_CENTER \
\\*[$CHAPTER_TITLE_1], \
@@ -4568,25 +4396,22 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
.\" Copystyle FINAL
. el \{\
-. if r#DRAFT_WITH_PAGENUM \{ .rr #DRAFT_WITH_PAGENUM \}
+. if \\n[#DRAFT_WITH_PAGENUM] .rr #DRAFT_WITH_PAGENUM
. if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\
-. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \}
-. el \{ .PAGENUM_STYLE DIGIT \}
+. ie \\n[#PAGENUM_STYLE_SET] \
+. PAGENUM_STYLE \\*[$PAGENUM_STYLE]
+. el .PAGENUM_STYLE DIGIT
. ie '\\*[$CHAPTER]'' \{\
-. ie !'\\*[$CHAPTER_TITLE_1]'' \{\
+. ie !'\\*[$CHAPTER_TITLE_1]'' \
. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE]
-. \}
-. el \{\
+. el \
. ds $HDRFTR_CENTER \\*[$CHAPTER_STRING]
-. \}
. \}
. el \{\
-. ie !'\\*[$CHAPTER_TITLE_1]'' \{\
+. ie !'\\*[$CHAPTER_TITLE_1]'' \
. ds $HDRFTR_CENTER \\*[$CHAPTER_TITLE]
-. \}
-. el \{\
+. el \
. ds $HDRFTR_CENTER \\*[$CHAPTER_STRING] \\*[$CHAPTER]
-. \}
. \}
. \}
. \}
@@ -4594,17 +4419,15 @@ y\\R'#DESCENDER \\n[.cdp]'
.\" Named
. if \\n[#DOC_TYPE]=3 \{\
. ie \\n[#COPY_STYLE]=1 \{\
-. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \}
-. el \{ .PAGENUM_STYLE roman \}
-. ie \\n[#DRAFT_WITH_PAGENUM] \{\
+. ie \\n[#PAGENUM_STYLE_SET] .PAGENUM_STYLE \\*[$PAGENUM_STYLE]
+. el .PAGENUM_STYLE roman
+. ie \\n[#DRAFT_WITH_PAGENUM] \
. ds $HDRFTR_CENTER \\*[$DOC_TYPE]
-. \}
. el \{\
. if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\
. ie '\\*[$REVISION]'' \{\
-. ie '\\*[$DRAFT]'' \{\
+. ie '\\*[$DRAFT]'' \
. ds $HDRFTR_CENTER \\*[$DOC_TYPE]
-. \}
. el \{\
. ds $HDRFTR_CENTER \
\\*[$DOC_TYPE], \
@@ -4628,10 +4451,10 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. \}
. el \{\
-. if r#DRAFT_WITH_PAGENUM \{ .rr #DRAFT_WITH_PAGENUM \}
+. if \\n[#DRAFT_WITH_PAGENUM] .rr #DRAFT_WITH_PAGENUM
. if \\n[#USER_DEF_HDRFTR_CENTER]=0 \{\
-. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \}
-. el \{ .PAGENUM_STYLE DIGIT \}
+. ie \\n[#PAGENUM_STYLE_SET] .PAGENUM_STYLE \\*[$PAGENUM_STYLE]
+. el .PAGENUM_STYLE DIGIT
. ds $HDRFTR_CENTER \\*[$DOC_TYPE]
. \}
. \}
@@ -4647,14 +4470,14 @@ y\\R'#DESCENDER \\n[.cdp]'
\# *Function:
\# Collect information about documents.
\#
-\#
.MAC DOCTITLE END
. rr #DOCTITLE_NUM
. nr #DOCTITLE_NUM 0 1
. while \\n[#NUM_ARGS]>\\n[#DOCTITLE_NUM] \{\
. ds $DOC_TITLE_\\n+[#DOCTITLE_NUM] \\$\\n[#DOCTITLE_NUM]
-.\}
+. \}
. ds $DOC_TITLE \\$*
+. PDF_TITLE \\*[$DOC_TITLE]
.END
\#
.MAC TITLE END \"Document title
@@ -4663,7 +4486,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #ITEM 0 1
. while \\n[#TITLE_NUM]>\\n[#ITEM] \{\
. rm $TITLE_\\n+[#ITEM]
-.\}
+. \}
. rr #TITLE_NUM
. \}
. \}
@@ -4671,67 +4494,64 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #TITLE_NUM 0 1
. while \\n[#NUM_ARGS]>\\n[#TITLE_NUM] \{\
. ds $TITLE_\\n+[#TITLE_NUM] \\$\\n[#TITLE_NUM]
-.\}
+. \}
. ds $TITLE \\$*
. \}
.END
\#
-\#
.MAC SUBTITLE END \"Document sub-title
. ie \\n[#NUM_ARGS]=0 \{\
. if \\n[#SUBTITLE_NUM] \{\
. nr #ITEM 0 1
. while \\n[#SUBTITLE_NUM]>\\n[#ITEM] \{\
. rm $SUBTITLE_\\n+[#ITEM]
-.\}
+. \}
. rr #SUBTITLE_NUM
. rm $SUBTITLE
. \}
. \}
. el \{\
-. if '\\$1'DOC_COVER' \{\
-. shift
-. nr #SUBTITLE_DOCCOVER_NUM 0 1
-. while \\n[#NUM_ARGS]>\\n[#SUBTITLE_DOCCOVER_NUM] \{\
-. ds $SUBTITLE_DOCCOVER_\\n+[#SUBTITLE_DOCCOVER_NUM] \\$\\n[#SUBTITLE_DOCCOVER_NUM]
-.\}
-. return
-. \}
-. if '\\$1'COVER' \{\
-. shift
-. nr #SUBTITLE_COVER_NUM 0 1
-. while \\n[#NUM_ARGS]>\\n[#SUBTITLE_COVER_NUM] \{\
-. ds $SUBTITLE_COVER_\\n+[#SUBTITLE_COVER_NUM] \\$\\n[#SUBTITLE_COVER_NUM]
-.\}
-. return
-. \}
+. if '\\$1'DOC_COVER' \{\
+. shift
+. nr #SUBTITLE_DOC_COVER_NUM 0 1
+. while \\n[#NUM_ARGS]>\\n[#SUBTITLE_DOC_COVER_NUM] \{\
+. ds $SUBTITLE_DOC_COVER_\\n+[#SUBTITLE_DOC_COVER_NUM] \
+\\$\\n[#SUBTITLE_DOC_COVER_NUM]
+. \}
+. return
+. \}
+. if '\\$1'COVER' \{\
+. shift
+. nr #SUBTITLE_COVER_NUM 0 1
+. while \\n[#NUM_ARGS]>\\n[#SUBTITLE_COVER_NUM] \{\
+. ds $SUBTITLE_COVER_\\n+[#SUBTITLE_COVER_NUM] \
+\\$\\n[#SUBTITLE_COVER_NUM]
+. \}
+. return
+. \}
. nr #SUBTITLE_NUM 0 1
. while \\n[#NUM_ARGS]>\\n[#SUBTITLE_NUM] \{\
. ds $SUBTITLE_\\n+[#SUBTITLE_NUM] \\$\\n[#SUBTITLE_NUM]
-.\}
-. ds $SUBTITLE \\$*
+. \}
+. ds $SUBTITLE \\$*
. \}
.END
\#
-\#
.MAC CHAPTER END \"If document is a chapter, the chapter number
. nr #CHAPTER_CALLED 1
. ds $CHAPTER \\$1
-. if r#CH_NUM \{\
-. if \B'\\*[$CHAPTER]' \{\
-. nr #CH_NUM \\*[$CHAPTER]
-. \}
+. if r #CH_NUM \{\
+. if \B'\\*[$CHAPTER]' .nr #CH_NUM \\*[$CHAPTER]
. \}
.END
\#
-\#
.MAC CHAPTER_TITLE END \" This defines what comes after Chapter #
. ie \\n[#NUM_ARGS]=0 \{\
. if \\n[#CHAPTER_TITLE_NUM] \{\
. nr #ITEM 0 1
. while \\n[#CHAPTER_TITLE_NUM]>\\n[#ITEM] \{\
. rm $CHAPTER_TITLE_\\n+[#ITEM]
-.\}
+. \}
. rr #CHAPTER_TITLE_NUM
. rm $CHAPTER_TITLE
. \}
@@ -4740,44 +4560,42 @@ y\\R'#DESCENDER \\n[.cdp]'
. rr #CHAPTER_TITLE_NUM
. nr #CHAPTER_TITLE_NUM 0 1
. while \\n[#NUM_ARGS]>\\n[#CHAPTER_TITLE_NUM] \{\
-. ds $CHAPTER_TITLE_\\n+[#CHAPTER_TITLE_NUM] \\$\\n[#CHAPTER_TITLE_NUM]
-.\}
+. ds $CHAPTER_TITLE_\\n+[#CHAPTER_TITLE_NUM] \
+\\$\\n[#CHAPTER_TITLE_NUM]
+. \}
. ds $CHAPTER_TITLE \\$*
. \}
.END
\#
-\#
.MAC DRAFT END \"Draft number
-. ie '\\$1'' .ds $DRAFT
-. el .ds $DRAFT " \\$1
+. ie '\\$1'' .ds $DRAFT
+. el .ds $DRAFT " \\$1
.END
\#
-\#
.MAC REVISION END \"Revision number
. ds $REVISION \\$1
.END
\#
-\#
.MAC DRAFT_WITH_PAGENUMBER END \"Attach draft/revision strings to page number
. nr #DRAFT_WITH_PAGENUM 1
.END
\#
-\#
.MAC AUTHOR END \"Author. Enclose all args fully in double quotes.
. if '\\$1'DOC_COVER' \{\
. shift
. nr #AUTHOR_DOCCOVER_NUM 0 1
. while \\n[#NUM_ARGS]>\\n[#AUTHOR_DOCCOVER_NUM] \{\
-. ds $AUTHOR_DOCCOVER_\\n+[#AUTHOR_DOCCOVER_NUM] \\$\\n[#AUTHOR_DOCCOVER_NUM]
-.\}
+. ds $AUTHOR_DOCCOVER_\\n+[#AUTHOR_DOCCOVER_NUM] \
+\\$\\n[#AUTHOR_DOCCOVER_NUM]
+. \}
. return
. \}
. if '\\$1'COVER' \{\
. shift
. nr #AUTHOR_COVER_NUM 0 1
. while \\n[#NUM_ARGS]>\\n[#AUTHOR_COVER_NUM] \{\
-. ds $AUTHOR_COVER_\\n+[#AUTHOR_COVER_NUM] \\$\\n[#AUTHOR_COVER_NUM]
-.\}
+. ds $AUTHOR_COVER_\\n+[#AUTHOR_COVER_NUM] \\$\\n[#AUTHOR_COVER_NUM]
+. \}
. return
. \}
. nr #AUTHOR_NUM 0 1
@@ -4785,92 +4603,90 @@ y\\R'#DESCENDER \\n[.cdp]'
. while \\n[#NUM_ARGS]>\\n[#AUTHOR_NUM] \{\
. ds $AUTHOR_\\n+[#AUTHOR_NUM] \\$\\n[#AUTHOR_NUM]
. as $AUTHORS \\*[$AUTHOR_\\n[#AUTHOR_NUM]], \"
-.\}
+. \}
. substring $AUTHORS 0 -3
-. ds $AUTHOR \\*[$AUTHOR_1]
+. ds PDF_AUTHORS \\*[$AUTHORS]
+. pdfmomclean PDF_AUTHORS
+\#. pdfinfo /Author \\*[PDF_AUTHORS]
+. nop \!x X ps:exec [/Author (\\*[PDF_AUTHORS]) /DOCINFO pdfmark
.END
\#
.ALIAS EDITOR AUTHOR
\#
-.MAC COPYRIGHT END \"For use on cover pages only
+.MAC COPYRIGHT END \"For use on cover pages only
. ie \\n[#NUM_ARGS]=1 \{\
. ds $COPYRIGHT \[co]\\$1
. rm $COPYRIGHT_DOCCOVER
. rm $COPYRIGHT_COVER
. \}
. el \{\
-. if '\\$1'DOC_COVER' \{\
-. ds $COPYRIGHT_DOCCOVER \[co]\\$2
-. \}
-. if '\\$1'COVER' \{\
-. ds $COPYRIGHT_COVER \[co]\\$2
-. \}
+. if '\\$1'DOC_COVER' .ds $COPYRIGHT_DOCCOVER \[co]\\$2
+. if '\\$1'COVER' .ds $COPYRIGHT_COVER \[co]\\$2
. \}
.END
\#
-\#
.MAC MISC END \"For use on cover pages only; enclose all args in double quotes
. ie \\n[#NUM_ARGS]=0 \{\
. if \\n[#MISC_NUM] \{\
. nr #ITEM 0 1
. while \\n[#MISC_NUM]>\\n[#ITEM] \{\
. rm $MISC_\\n+[#ITEM]
-.\}
+. \}
. rr #MISC_NUM
. rr #NUM_MISCS
. \}
-. if \\n[#MISC_DOCCOVER_NUM] \{\
+. if \\n[#MISC_DOC_COVER_NUM] \{\
. nr #ITEM 0 1
-. while \\n[#MISC_DOCCOVER_NUM]>\\n[#ITEM] \{\
-. rm $MISC_DOCCOVER_\\n+[#ITEM]
-.\}
-. rr #MISC_DOCCOVER_NUM
+. while \\n[#MISC_DOC_COVER_NUM]>\\n[#ITEM] \{\
+. rm $MISC_DOC_COVER_\\n+[#ITEM]
+. \}
+. rr #MISC_DOC_COVER_NUM
. rr #NUM_MISCS
. \}
. if \\n[#MISC_COVER_NUM] \{\
. nr #ITEM 0 1
. while \\n[#MISC_COVER_NUM]>\\n[#ITEM] \{\
. rm $MISC_COVER_\\n+[#ITEM]
-.\}
+. \}
. rr #MISC_COVER_NUM
. rr #NUM_MISCS
. \}
. \}
. el \{\
. if !'\\$1'DOC_COVER' \{\
-. if !'\\$1'COVER' \{ .nr #NEITHER 1 \}
+. if !'\\$1'COVER' .nr #NEITHER 1
. \}
. if !'\\$1'COVER' \{\
-. if !'\\$1'DOC_COVER'\{ .nr #NEITHER 1 \}
+. if !'\\$1'DOC_COVER' .nr #NEITHER 1
. \}
. if '\\$1'DOC_COVER' \{\
. shift
-. nr #MISC_DOCCOVER_NUM 0 1
-. while \\n[#NUM_ARGS]>\\n[#MISC_DOCCOVER_NUM] \{\
-. ds $MISC_DOCCOVER_\\n+[#MISC_DOCCOVER_NUM] \\$\\n[#MISC_DOCCOVER_NUM]
-.\}
+. nr #MISC_DOC_COVER_NUM 0 1
+. while \\n[#NUM_ARGS]>\\n[#MISC_DOC_COVER_NUM] \{\
+. ds $MISC_DOC_COVER_\\n+[#MISC_DOC_COVER_NUM] \
+\\$[\\n[#MISC_DOC_COVER_NUM]]
+. \}
. nr #NUM_MISCS_DOCCOVER \\n[#NUM_ARGS]
. \}
. if '\\$1'COVER' \{\
. shift
. nr #MISC_COVER_NUM 0 1
. while \\n[#NUM_ARGS]>\\n[#MISC_COVER_NUM] \{\
-. ds $MISC_COVER_\\n+[#MISC_COVER_NUM] \\$\\n[#MISC_COVER_NUM]
-.\}
+. ds $MISC_COVER_\\n+[#MISC_COVER_NUM] \\$[\\n[#MISC_COVER_NUM]]
+. \}
. nr #NUM_MISCS_COVER \\n[#NUM_ARGS]
. \}
. if \\n[#NEITHER]=1 \{\
. nr #MISC_NUM 0 1
. while \\n[#NUM_ARGS]>\\n[#MISC_NUM] \{\
-. ds $MISC_\\n+[#MISC_NUM] \\$\\n[#MISC_NUM]
-.\}
+. ds $MISC_\\n+[#MISC_NUM] \\$[\\n[#MISC_NUM]]
+. \}
. nr #NUM_MISCS \\n[#NUM_ARGS]
. rr #NEITHER
. \}
. \}
.END
\#
-\#
.MAC PAGENUMBER END \"Page # that appears on page one.
. nr #n%_AT_PAGENUM_SET \\n%
. nr #PAGE_NUM_ADJ \\$1-\\n[#n%_AT_PAGENUM_SET]
@@ -4892,12 +4708,8 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Number registers: DEFAULT=1, CHAPTER=2, NAMED=3, LETTER=4
\#
.MAC DOCTYPE END
-. if '\\$1'DEFAULT' \{\
-. nr #DOC_TYPE 1
-. \}
-. if '\\$1'CHAPTER' \{\
-. nr #DOC_TYPE 2
-. \}
+. if '\\$1'DEFAULT' .nr #DOC_TYPE 1
+. if '\\$1'CHAPTER' .nr #DOC_TYPE 2
. if '\\$1'NAMED' \{\
. ds $DOC_TYPE \\$2
. nr #DOC_TYPE 3
@@ -4942,18 +4754,15 @@ y\\R'#DESCENDER \\n[.cdp]'
\# LETTERHEAD<n>
\#
.MAC DATE END
-. if !'\\n(.z'' \{ .di \}
+. if !'\\n[.z]'' .di
. di LETTERHEAD\\n+[#FIELD]
. ie \\n[#FIELD]=1 \{\
. nr #DATE_FIRST 1
. RIGHT
. \}
-. el \{\
-. LEFT
-. \}
+. el .LEFT
.END
\#
-\#
\# TO
\# --
\# *Arguments:
@@ -4963,12 +4772,11 @@ y\\R'#DESCENDER \\n[.cdp]'
\# diversion LETTERHEAD<n>
\#
.MAC TO END
-. if !'\\n(.z'' \{ .di \}
+. if !'\\n[.z]'' .di
. di LETTERHEAD\\n+[#FIELD]
. LEFT
.END
\#
-\#
\# FROM
\# ----
\# *Arguments:
@@ -4978,12 +4786,11 @@ y\\R'#DESCENDER \\n[.cdp]'
\# diversion LETTERHEAD<n>
\#
.MAC FROM END
-. if !'\\n(.z'' \{ .di \}
+. if !'\\n[.z]'' .di
. di LETTERHEAD\\n+[#FIELD]
. LEFT
.END
\#
-\#
\# GREETING
\# --------
\# *Arguments:
@@ -4993,12 +4800,11 @@ y\\R'#DESCENDER \\n[.cdp]'
\# diversion LETTERHEAD<n>
\#
.MAC GREETING END
-. if !'\\n(.z'' \{ .di \}
+. if !'\\n[.z]'' .di
. di LETTERHEAD\\n+[#FIELD]
. LEFT
.END
\#
-\#
\# CLOSING
\# -------
\# *Arguments:
@@ -5007,9 +4813,17 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Stores greeting in diversion CLOSING.
\#
.MAC CLOSING END
-. br
+. if '\\*[$SIG_SPACE]'' .ds $SIG_SPACE 3v
+. ie ( (2v+\\*[$SIG_SPACE]) > \\n[.t] ) \{\
+. ch HEADER
+. ch FOOTER
+. br
+. tm1 "[mom]: Insufficient room for \\$0 and signature line.
+. ab Aborting '\\n[.F]'.
+. \}
+. el .br
. nr #CLOSING 1
-. di CLOSING
+. di CLOSING_TEXT
.END
\#
\# CLOSING INDENT
@@ -5060,167 +4874,264 @@ y\\R'#DESCENDER \\n[.cdp]'
\# the macro whose style is to be changed.
\#
.MAC _FAMILY END
-. if '\\$0'AUTHOR_FAMILY' .ds $AUTHOR_FAM \\$1
-. if '\\$0'BIBLIOGRAPHY_FAMILY' .ds $BIB_FAM \\$1
-. if '\\$0'BIBLIOGRAPHY_STRING_FAMILY' .ds $BIB_STRING_FAM \\$1
-. if '\\$0'BLOCKQUOTE_FAMILY' .ds $BQUOTE_FAM \\$1
-. if '\\$0'CITATION_FAMILY' .ds $BQUOTE_FAM \\$1
-. if '\\$0'CITE_FAMILY' .ds $BQUOTE_FAM \\$1
-. if '\\$0'CHAPTER_TITLE_FAMILY' .ds $CHAPTER_TITLE_FAM \\$1
-. if '\\$0'COVER_AUTHOR_FAMILY' .ds $COVER_AUTHOR_FAM \\$1
-. if '\\$0'COVER_CHAPTER_TITLE_FAMILY' .ds $COVER_CHAPTER_TITLE_FAM \\$1
-. if '\\$0'COVER_COPYRIGHT_FAMILY' .ds $COVER_COPYRIGHT_FAM \\$1
-. if '\\$0'COVER_DOCTYPE_FAMILY' .ds $COVER_DOCTYPE_FAM \\$1
-. if '\\$0'COVER_FAMILY' .ds $COVER_FAM \\$1
-. if '\\$0'COVER_MISC_FAMILY' .ds $COVER_MISC_FAM \\$1
-. if '\\$0'COVER_SUBTITLE_FAMILY' .ds $COVER_SUBTITLE_FAM \\$1
-. if '\\$0'COVER_TITLE_FAMILY' .ds $COVER_TITLE_FAM \\$1
-. if '\\$0'DOC_COVER_AUTHOR_FAMILY' .ds $DOC_COVER_AUTHOR_FAM \\$1
-. if '\\$0'DOC_COVER_CHAPTER_TITLE_FAMILY' .ds $DOC_COVER_CHAPTER_TITLE_FAM \\$1
-. if '\\$0'DOC_COVER_COPYRIGHT_FAMILY' .ds $DOC_COVER_COPYRIGHT_FAM \\$1
-. if '\\$0'DOC_COVER_DOCTYPE_FAMILY' .ds $DOC_COVER_DOCTYPE_FAM \\$1
-. if '\\$0'DOC_COVER_FAMILY' .ds $DOC_COVER_FAM \\$1
-. if '\\$0'DOC_COVER_MISC_FAMILY' .ds $DOC_COVER_MISC_FAM \\$1
-. if '\\$0'DOC_COVER_SUBTITLE_FAMILY' .ds $DOC_COVER_SUBTITLE_FAM \\$1
-. if '\\$0'DOC_COVER_TITLE_FAMILY' .ds $DOC_COVER_TITLE_FAM \\$1
-. if '\\$0'DOCHEADER_FAMILY' .ds $DOCHEADER_FAM \\$1
-. if '\\$0'DOCTYPE_FAMILY' .ds $DOCTYPE_FAM \\$1
-. if '\\$0'ENDNOTE_FAMILY' .ds $EN_FAM \\$1
-. if '\\$0'ENDNOTE_NUMBER_FAMILY' .ds $EN_NUMBER_FAM \\$1
-. if '\\$0'ENDNOTE_LINENUMBER_FAMILY' .ds $EN_LN_FAM \\$1
-. if '\\$0'ENDNOTE_STRING_FAMILY' .ds $EN_STRING_FAM \\$1
-. if '\\$0'ENDNOTE_TITLE_FAMILY' .ds $EN_TITLE_FAM \\$1
-. if '\\$0'EPIGRAPH_FAMILY' .ds $EPI_FAM \\$1
-. if '\\$0'FOOTNOTE_FAMILY' .ds $FN_FAM \\$1
-. if '\\$0'HDRFTR_CENTER_FAMILY' .ds $HDRFTR_CENTER_FAM \\$1
+. if '\\$0'AUTHOR_FAMILY' \
+. ds $AUTHOR_FAM \\$1
+. if '\\$0'BIBLIOGRAPHY_FAMILY' \
+. ds $BIB_FAM \\$1
+. if '\\$0'BIBLIOGRAPHY_STRING_FAMILY' \
+. ds $BIB_STRING_FAM \\$1
+. if '\\$0'BLOCKQUOTE_FAMILY' \
+. ds $BQUOTE_FAM \\$1
+. if '\\$0'CITATION_FAMILY' \
+. ds $BQUOTE_FAM \\$1
+. if '\\$0'CITE_FAMILY' \
+. ds $BQUOTE_FAM \\$1
+. if '\\$0'CHAPTER_TITLE_FAMILY' \
+. ds $CHAPTER_TITLE_FAM \\$1
+. if '\\$0'COVER_AUTHOR_FAMILY' \
+. ds $COVER_AUTHOR_FAM \\$1
+. if '\\$0'COVER_CHAPTER_TITLE_FAMILY' \
+. ds $COVER_CHAPTER_TITLE_FAM \\$1
+. if '\\$0'COVER_COPYRIGHT_FAMILY' \
+. ds $COVER_COPYRIGHT_FAM \\$1
+. if '\\$0'COVER_DOCTYPE_FAMILY' \
+. ds $COVER_DOCTYPE_FAM \\$1
+. if '\\$0'COVER_FAMILY' \
+. ds $COVER_FAM \\$1
+. if '\\$0'COVER_MISC_FAMILY' \
+. ds $COVER_MISC_FAM \\$1
+. if '\\$0'COVER_SUBTITLE_FAMILY' \
+. ds $COVER_SUBTITLE_FAM \\$1
+. if '\\$0'COVER_TITLE_FAMILY' \
+. ds $COVER_TITLE_FAM \\$1
+. if '\\$0'DOC_COVER_AUTHOR_FAMILY' \
+. ds $DOC_COVER_AUTHOR_FAM \\$1
+. if '\\$0'DOC_COVER_CHAPTER_TITLE_FAMILY' \
+. ds $DOC_COVER_CHAPTER_TITLE_FAM \\$1
+. if '\\$0'DOC_COVER_COPYRIGHT_FAMILY' \
+. ds $DOC_COVER_COPYRIGHT_FAM \\$1
+. if '\\$0'DOC_COVER_DOCTYPE_FAMILY' \
+. ds $DOC_COVER_DOCTYPE_FAM \\$1
+. if '\\$0'DOC_COVER_FAMILY' \
+. ds $DOC_COVER_FAM \\$1
+. if '\\$0'DOC_COVER_MISC_FAMILY' \
+. ds $DOC_COVER_MISC_FAM \\$1
+. if '\\$0'DOC_COVER_SUBTITLE_FAMILY' \
+. ds $DOC_COVER_SUBTITLE_FAM \\$1
+. if '\\$0'DOC_COVER_TITLE_FAMILY' \
+. ds $DOC_COVER_TITLE_FAM \\$1
+. if '\\$0'DOCHEADER_FAMILY' \
+. ds $DOCHEADER_FAM \\$1
+. if '\\$0'DOCTYPE_FAMILY' \
+. ds $DOCTYPE_FAM \\$1
+. if '\\$0'ENDNOTE_FAMILY' \
+. ds $EN_FAM \\$1
+. if '\\$0'ENDNOTE_NUMBER_FAMILY' \
+. ds $EN_NUMBER_FAM \\$1
+. if '\\$0'ENDNOTE_LINENUMBER_FAMILY' \
+. ds $EN_LN_FAM \\$1
+. if '\\$0'ENDNOTE_STRING_FAMILY' \
+. ds $EN_STRING_FAM \\$1
+. if '\\$0'ENDNOTE_TITLE_FAMILY' \
+. ds $EN_TITLE_FAM \\$1
+. if '\\$0'EPIGRAPH_FAMILY' \
+. ds $EPI_FAM \\$1
+. if '\\$0'FOOTNOTE_FAMILY' \
+. ds $FN_FAM \\$1
+. if '\\$0'HDRFTR_CENTER_FAMILY' \
+. ds $HDRFTR_CENTER_FAM \\$1
. if '\\$0'HDRFTR_FAMILY' \{\
. ds $HDRFTR_FAM \\$1
. ds $HDRFTR_LEFT_FAM \\$1
. ds $HDRFTR_CENTER_FAM \\$1
. ds $HDRFTR_RIGHT_FAM \\$1
. \}
-. if '\\$0'HDRFTR_LEFT_FAMILY' .ds $HDRFTR_LEFT_FAM \\$1
-. if '\\$0'HDRFTR_RIGHT_FAMILY' .ds $HDRFTR_RIGHT_FAM \\$1
-. if '\\$0'HEAD_FAMILY' .ds $HEAD_FAM \\$1
-. if '\\$0'LINENUMBER_FAMILY' .ds $LN_FAM \\$1
-. if '\\$0'PAGENUM_FAMILY' .ds $PAGE_NUM_FAM \\$1
-. if '\\$0'PARAHEAD_FAMILY' .ds $PH_FAM \\$1
-. if '\\$0'QUOTE_FAMILY' .ds $QUOTE_FAM \\$1
-. if '\\$0'SUBHEAD_FAMILY' .ds $SH_FAM \\$1
-. if '\\$0'SUBTITLE_FAMILY' .ds $SUBTITLE_FAM \\$1
-. if '\\$0'TITLE_FAMILY' .ds $TITLE_FAM \\$1
-. if '\\$0'TOC_FAMILY' .ds $TOC_FAM \\$1
-. if '\\$0'TOC_FAM' .ds $TOC_FAM \\$1
-. if '\\$0'TOC_HEADER_FAMILY' .ds $TOC_HEADER_FAM \\$1
-. if '\\$0'TOC_HEAD_FAMILY' .ds $TOC_HEAD_FAM \\$1
-. if '\\$0'TOC_PARAHEAD_FAMILY' .ds $TOC_PH_FAM \\$1
-. if '\\$0'TOC_PN_FAMILY' .ds $TOC_PN_FAM \\$1
-. if '\\$0'TOC_SUBHEAD_FAMILY' .ds $TOC_SH_FAM \\$1
-. if '\\$0'TOC_TITLE_FAMILY' .ds $TOC_TITLE_FAM \\$1
+. if '\\$0'HDRFTR_LEFT_FAMILY' \
+. ds $HDRFTR_LEFT_FAM \\$1
+. if '\\$0'HDRFTR_RIGHT_FAMILY' \
+. ds $HDRFTR_RIGHT_FAM \\$1
+. if '\\$0'LINENUMBER_FAMILY' \
+. ds $LN_FAM \\$1
+. if '\\$0'PAGENUM_FAMILY' \
+. ds $PAGE_NUM_FAM \\$1
+. if '\\$0'QUOTE_FAMILY' \
+. ds $QUOTE_FAM \\$1
+. if '\\$0'SUBTITLE_FAMILY' \
+. ds $SUBTITLE_FAM \\$1
+. if '\\$0'TITLE_FAMILY' \
+. ds $TITLE_FAM \\$1
+. if '\\$0'TOC_FAMILY' \
+. ds $TOC_FAM \\$1
+. if '\\$0'TOC_FAM' \
+. ds $TOC_FAM \\$1
+. if '\\$0'TOC_HEADER_FAMILY' \
+. ds $TOC_HEADER_FAM \\$1
+. if '\\$0'TOC_PN_FAMILY' \
+. ds $TOC_PN_FAM \\$1
.END
\#
-\#
.MAC _FONT END
-. if '\\$0'AUTHOR_FONT' .ds $AUTHOR_FT \\$1
-. if '\\$0'BIBLIOGRAPHY_FONT' .ds $BIB_FT \\$1
-. if '\\$0'BIBLIOGRAPHY_STRING_FONT' .ds $BIB_STRING_FT \\$1
-. if '\\$0'BLOCKQUOTE_FONT' .ds $BQUOTE_FT \\$1
-. if '\\$0'CITATION_FONT' .ds $BQUOTE_FT \\$1
-. if '\\$0'CITE_FONT' .ds $BQUOTE_FT \\$1
-. if '\\$0'CHAPTER_TITLE_FONT' .ds $CHAPTER_TITLE_FT \\$1
-. if '\\$0'COVER_AUTHOR_FONT' .ds $COVER_AUTHOR_FT \\$1
-. if '\\$0'COVER_CHAPTER_TITLE_FONT' .ds $COVER_CHAPTER_TITLE_FT \\$1
-. if '\\$0'COVER_COPYRIGHT_FONT' .ds $COVER_COPYRIGHT_FT \\$1
-. if '\\$0'COVER_DOCTYPE_FONT' .ds $COVER_DOCTYPE_FT \\$1
-. if '\\$0'COVER_MISC_FONT' .ds $COVER_MISC_FT \\$1
-. if '\\$0'COVER_SUBTITLE_FONT' .ds $COVER_SUBTITLE_FT \\$1
-. if '\\$0'COVER_TITLE_FONT' .ds $COVER_TITLE_FT \\$1
-. if '\\$0'DOC_COVER_AUTHOR_FONT' .ds $DOC_COVER_AUTHOR_FT \\$1
-. if '\\$0'DOC_COVER_CHAPTER_TITLE_FONT' .ds $DOC_COVER_CHAPTER_TITLE_FT \\$1
-. if '\\$0'DOC_COVER_COPYRIGHT_FONT' .ds $DOC_COVER_COPYRIGHT_FT \\$1
-. if '\\$0'DOC_COVER_DOCTYPE_FONT' .ds $DOC_COVER_DOCTYPE_FT \\$1
-. if '\\$0'DOC_COVER_MISC_FONT' .ds $DOC_COVER_MISC_FT \\$1
-. if '\\$0'DOC_COVER_SUBTITLE_FONT' .ds $DOC_COVER_SUBTITLE_FT \\$1
-. if '\\$0'DOC_COVER_TITLE_FONT' .ds $DOC_COVER_TITLE_FT \\$1
-. if '\\$0'DOCTYPE_FONT' .ds $DOCTYPE_FT \\$1
-. if '\\$0'ENDNOTE_FONT' .ds $EN_FT \\$1
-. if '\\$0'ENDNOTE_NUMBER_FONT' .ds $EN_NUMBER_FT \\$1
-. if '\\$0'ENDNOTE_LINENUMBER_FONT' .ds $EN_LN_FT \\$1
-. if '\\$0'ENDNOTE_STRING_FONT' .ds $EN_STRING_FT \\$1
-. if '\\$0'ENDNOTE_TITLE_FONT' .ds $EN_TITLE_FT \\$1
-. if '\\$0'EPIGRAPH_FONT' .ds $EPI_FT \\$1
-. if '\\$0'FOOTNOTE_FONT' .ds $FN_FT \\$1
-. if '\\$0'HDRFTR_CENTER_FONT' .ds $HDRFTR_CENTER_FT \\$1
-. if '\\$0'HDRFTR_LEFT_FONT' .ds $HDRFTR_LEFT_FT \\$1
-. if '\\$0'HDRFTR_RIGHT_FONT' .ds $HDRFTR_RIGHT_FT \\$1
-. if '\\$0'HEAD_FONT' .ds $HEAD_FT \\$1
-. if '\\$0'LINENUMBER_FONT' .ds $LN_FT \\$1
-. if '\\$0'PAGENUM_FONT' .ds $PAGE_NUM_FT \\$1
-. if '\\$0'PARAHEAD_FONT' .ds $PH_FT \\$1
-. if '\\$0'QUOTE_FONT' .ds $QUOTE_FT \\$1
-. if '\\$0'SUBHEAD_FONT' .ds $SH_FT \\$1
-. if '\\$0'SUBTITLE_FONT' .ds $SUBTITLE_FT \\$1
-. if '\\$0'TITLE_FONT' .ds $TITLE_FT \\$1
-. if '\\$0'TOC_HEADER_FONT' .ds $TOC_HEADER_FT \\$1
-. if '\\$0'TOC_HEAD_FONT' .ds $TOC_HEAD_FT \\$1
-. if '\\$0'TOC_PARAHEAD_FONT' .ds $TOC_PH_FT \\$1
-. if '\\$0'TOC_PN_FONT' .ds $TOC_PN_FT \\$1
-. if '\\$0'TOC_SUBHEAD_FONT' .ds $TOC_SH_FT \\$1
-. if '\\$0'TOC_TITLE_FONT' .ds $TOC_TITLE_FT \\$1
+. if '\\$0'AUTHOR_FONT' \
+. ds $AUTHOR_FT \\$1
+. if '\\$0'BIBLIOGRAPHY_FONT' \
+. ds $BIB_FT \\$1
+. if '\\$0'BIBLIOGRAPHY_STRING_FONT' \
+. ds $BIB_STRING_FT \\$1
+. if '\\$0'BLOCKQUOTE_FONT' \
+. ds $BQUOTE_FT \\$1
+. if '\\$0'CITATION_FONT' \
+. ds $BQUOTE_FT \\$1
+. if '\\$0'CITE_FONT' \
+. ds $BQUOTE_FT \\$1
+. if '\\$0'CHAPTER_TITLE_FONT' \
+. ds $CHAPTER_TITLE_FT \\$1
+. if '\\$0'COVER_AUTHOR_FONT' \
+. ds $COVER_AUTHOR_FT \\$1
+. if '\\$0'COVER_CHAPTER_TITLE_FONT' \
+. ds $COVER_CHAPTER_TITLE_FT \\$1
+. if '\\$0'COVER_COPYRIGHT_FONT' \
+. ds $COVER_COPYRIGHT_FT \\$1
+. if '\\$0'COVER_DOCTYPE_FONT' \
+. ds $COVER_DOCTYPE_FT \\$1
+. if '\\$0'COVER_MISC_FONT' \
+. ds $COVER_MISC_FT \\$1
+. if '\\$0'COVER_SUBTITLE_FONT' \
+. ds $COVER_SUBTITLE_FT \\$1
+. if '\\$0'COVER_TITLE_FONT' \
+. ds $COVER_TITLE_FT \\$1
+. if '\\$0'DOC_COVER_AUTHOR_FONT' \
+. ds $DOC_COVER_AUTHOR_FT \\$1
+. if '\\$0'DOC_COVER_CHAPTER_TITLE_FONT' \
+. ds $DOC_COVER_CHAPTER_TITLE_FT \\$1
+. if '\\$0'DOC_COVER_COPYRIGHT_FONT' \
+. ds $DOC_COVER_COPYRIGHT_FT \\$1
+. if '\\$0'DOC_COVER_DOCTYPE_FONT' \
+. ds $DOC_COVER_DOCTYPE_FT \\$1
+. if '\\$0'DOC_COVER_MISC_FONT' \
+. ds $DOC_COVER_MISC_FT \\$1
+. if '\\$0'DOC_COVER_SUBTITLE_FONT' \
+. ds $DOC_COVER_SUBTITLE_FT \\$1
+. if '\\$0'DOC_COVER_TITLE_FONT' \
+. ds $DOC_COVER_TITLE_FT \\$1
+. if '\\$0'DOCTYPE_FONT' \
+. ds $DOCTYPE_FT \\$1
+. if '\\$0'ENDNOTE_FONT' \
+. ds $EN_FT \\$1
+. if '\\$0'ENDNOTE_NUMBER_FONT' \
+. ds $EN_NUMBER_FT \\$1
+. if '\\$0'ENDNOTE_LINENUMBER_FONT' \
+. ds $EN_LN_FT \\$1
+. if '\\$0'ENDNOTE_STRING_FONT' \
+. ds $EN_STRING_FT \\$1
+. if '\\$0'ENDNOTE_TITLE_FONT' \
+. ds $EN_TITLE_FT \\$1
+. if '\\$0'EPIGRAPH_FONT' \
+. ds $EPI_FT \\$1
+. if '\\$0'FOOTNOTE_FONT' \
+. ds $FN_FT \\$1
+. if '\\$0'HDRFTR_CENTER_FONT' \
+. ds $HDRFTR_CENTER_FT \\$1
+. if '\\$0'HDRFTR_LEFT_FONT' \
+. ds $HDRFTR_LEFT_FT \\$1
+. if '\\$0'HDRFTR_RIGHT_FONT' \
+. ds $HDRFTR_RIGHT_FT \\$1
+. if '\\$0'LINENUMBER_FONT' \
+. ds $LN_FT \\$1
+. if '\\$0'PAGENUM_FONT' \
+. ds $PAGE_NUM_FT \\$1
+. if '\\$0'QUOTE_FONT' \
+. ds $QUOTE_FT \\$1
+. if '\\$0'SUBTITLE_FONT' \
+. ds $SUBTITLE_FT \\$1
+. if '\\$0'TITLE_FONT' \
+. ds $TITLE_FT \\$1
+. if '\\$0'TOC_HEADER_FONT' \
+. ds $TOC_HEADER_FT \\$1
+. if '\\$0'TOC_PN_FONT' \
+. ds $TOC_PN_FT \\$1
.END
\#
-\#
.MAC _SIZE END
-. if '\\$0'AUTHOR_SIZE' .ds $AUTHOR_SIZE_CHANGE \\$1
-. if '\\$0'BIBLIOGRAPHY_STRING_SIZE' .ds $BIB_STRING_SIZE_CHANGE \\$1
-. if '\\$0'BLOCKQUOTE_SIZE' .ds $BQUOTE_SIZE_CHANGE \\$1
-. if '\\$0'CITATION_SIZE' .ds $BQUOTE_SIZE_CHANGE \\$1
-. if '\\$0'CITE_SIZE' .ds $BQUOTE_SIZE_CHANGE \\$1
-. if '\\$0'CHAPTER_TITLE_SIZE' .ds $CHAPTER_TITLE_SIZE_CHANGE \\$1
-. if '\\$0'COVER_AUTHOR_SIZE' .ds $COVER_AUTHOR_SIZE_CHANGE \\$1
-. if '\\$0'COVER_CHAPTER_TITLE_SIZE' .ds $COVER_CHAPTER_TITLE_SIZE_CHANGE \\$1
-. if '\\$0'COVER_COPYRIGHT_SIZE' .ds $COVER_COPYRIGHT_SIZE_CHANGE \\$1
-. if '\\$0'COVER_DOCTYPE_SIZE' .ds $COVER_DOCTYPE_SIZE_CHANGE \\$1
-. if '\\$0'COVER_MISC_SIZE' .ds $COVER_MISC_SIZE_CHANGE \\$1
-. if '\\$0'COVER_SUBTITLE_SIZE' .ds $COVER_SUBTITLE_SIZE_CHANGE \\$1
-. if '\\$0'COVER_TITLE_SIZE' .ds $COVER_TITLE_SIZE_CHANGE \\$1
-. if '\\$0'DOC_COVER_AUTHOR_SIZE' .ds $DOC_COVER_AUTHOR_SIZE_CHANGE \\$1
-. if '\\$0'DOC_COVER_CHAPTER_TITLE_SIZE' .ds $DOC_COVER_CHAPTER_TITLE_SIZE_CHANGE \\$1
-. if '\\$0'DOC_COVER_COPYRIGHT_SIZE' .ds $DOC_COVER_COPYRIGHT_SIZE_CHANGE \\$1
-. if '\\$0'DOC_COVER_DOCTYPE_SIZE' .ds $DOC_COVER_DOCTYPE_SIZE_CHANGE \\$1
-. if '\\$0'DOC_COVER_MISC_SIZE' .ds $DOC_COVER_MISC_SIZE_CHANGE \\$1
-. if '\\$0'DOC_COVER_SUBTITLE_SIZE' .ds $DOC_COVER_SUBTITLE_SIZE_CHANGE \\$1
-. if '\\$0'DOC_COVER_TITLE_SIZE' .ds $DOC_COVER_TITLE_SIZE_CHANGE \\$1
-. if '\\$0'DOCTYPE_SIZE' .ds $DOCTYPE_SIZE_CHANGE \\$1
-. if '\\$0'ENDNOTE_NUMBER_SIZE' .ds $EN_NUMBER_SIZE_CHANGE \\$1
-. if '\\$0'ENDNOTE_LINENUMBER_SIZE' .ds $EN_LN_SIZE_CHANGE \\$1
-. if '\\$0'ENDNOTE_STRING_SIZE' .ds $EN_STRING_SIZE_CHANGE \\$1
-. if '\\$0'ENDNOTE_TITLE_SIZE' .ds $EN_TITLE_SIZE_CHANGE \\$1
-. if '\\$0'EPIGRAPH_SIZE' .ds $EPI_SIZE_CHANGE \\$1
-. if '\\$0'FOOTNOTE_SIZE' .ds $FN_SIZE_CHANGE \\$1
-. if '\\$0'HDRFTR_CENTER_SIZE' .ds $HDRFTR_CENTER_SIZE_CHANGE \\$1
-. if '\\$0'HDRFTR_LEFT_SIZE' .ds $HDRFTR_LEFT_SIZE_CHANGE \\$1
-. if '\\$0'HDRFTR_RIGHT_SIZE' .ds $HDRFTR_RIGHT_SIZE_CHANGE \\$1
-. if '\\$0'HDRFTR_SIZE' .ds $HDRFTR_SIZE_CHANGE \\$1
-. if '\\$0'HEAD_SIZE' .ds $HEAD_SIZE_CHANGE \\$1
-. if '\\$0'LINENUMBER_SIZE' .ds $LN_SIZE_CHANGE \\$1
-. if '\\$0'PAGENUM_SIZE' .ds $PAGE_NUM_SIZE_CHANGE \\$1
-. if '\\$0'PARAHEAD_SIZE' .ds $PH_SIZE_CHANGE \\$1
-. if '\\$0'QUOTE_SIZE' .ds $QUOTE_SIZE_CHANGE \\$1
-. if '\\$0'SUBHEAD_SIZE' .ds $SH_SIZE_CHANGE \\$1
-. if '\\$0'SUBTITLE_SIZE' .ds $SUBTITLE_SIZE_CHANGE \\$1
-. if '\\$0'TITLE_SIZE' .ds $TITLE_SIZE_CHANGE \\$1
-. if '\\$0'TOC_HEADER_SIZE' .ds $TOC_HEADER_SIZE_CHANGE \\$1
-. if '\\$0'TOC_HEAD_SIZE' .ds $TOC_HEAD_SIZE_CHANGE \\$1
-. if '\\$0'TOC_PARAHEAD_SIZE' .ds $TOC_PH_SIZE_CHANGE \\$1
-. if '\\$0'TOC_PN_SIZE' .ds $TOC_PN_SIZE_CHANGE \\$1
-. if '\\$0'TOC_SUBHEAD_SIZE' .ds $TOC_SH_SIZE_CHANGE \\$1
-. if '\\$0'TOC_TITLE_SIZE' .ds $TOC_TITLE_SIZE_CHANGE \\$1
+. if '\\$0'AUTHOR_SIZE' \
+. ds $AUTHOR_SIZE_CHANGE \\$1
+. if '\\$0'BIBLIOGRAPHY_STRING_SIZE' \
+. ds $BIB_STRING_SIZE_CHANGE \\$1
+. if '\\$0'BLOCKQUOTE_SIZE' \
+. ds $BQUOTE_SIZE_CHANGE \\$1
+. if '\\$0'CITATION_SIZE' \
+. ds $BQUOTE_SIZE_CHANGE \\$1
+. if '\\$0'CITE_SIZE' \
+. ds $BQUOTE_SIZE_CHANGE \\$1
+. if '\\$0'CHAPTER_TITLE_SIZE' \
+. ds $CHAPTER_TITLE_SIZE_CHANGE \\$1
+. if '\\$0'COVER_AUTHOR_SIZE' \
+. ds $COVER_AUTHOR_SIZE_CHANGE \\$1
+. if '\\$0'COVER_CHAPTER_TITLE_SIZE' \
+. ds $COVER_CHAPTER_TITLE_SIZE_CHANGE \\$1
+. if '\\$0'COVER_COPYRIGHT_SIZE' \
+. ds $COVER_COPYRIGHT_SIZE_CHANGE \\$1
+. if '\\$0'COVER_DOCTYPE_SIZE' \
+. ds $COVER_DOCTYPE_SIZE_CHANGE \\$1
+. if '\\$0'COVER_MISC_SIZE' \
+. ds $COVER_MISC_SIZE_CHANGE \\$1
+. if '\\$0'COVER_SUBTITLE_SIZE' \
+. ds $COVER_SUBTITLE_SIZE_CHANGE \\$1
+. if '\\$0'COVER_TITLE_SIZE' \
+. ds $COVER_TITLE_SIZE_CHANGE \\$1
+. if '\\$0'DOC_COVER_AUTHOR_SIZE' \
+. ds $DOC_COVER_AUTHOR_SIZE_CHANGE \\$1
+. if '\\$0'DOC_COVER_CHAPTER_TITLE_SIZE' \
+. ds $DOC_COVER_CHAPTER_TITLE_SIZE_CHANGE \\$1
+. if '\\$0'DOC_COVER_COPYRIGHT_SIZE' \
+. ds $DOC_COVER_COPYRIGHT_SIZE_CHANGE \\$1
+. if '\\$0'DOC_COVER_DOCTYPE_SIZE' \
+. ds $DOC_COVER_DOCTYPE_SIZE_CHANGE \\$1
+. if '\\$0'DOC_COVER_MISC_SIZE' \
+. ds $DOC_COVER_MISC_SIZE_CHANGE \\$1
+. if '\\$0'DOC_COVER_SUBTITLE_SIZE' \
+. ds $DOC_COVER_SUBTITLE_SIZE_CHANGE \\$1
+. if '\\$0'DOC_COVER_TITLE_SIZE' \
+. ds $DOC_COVER_TITLE_SIZE_CHANGE \\$1
+. if '\\$0'DOCTYPE_SIZE' \
+. ds $DOCTYPE_SIZE_CHANGE \\$1
+. if '\\$0'ENDNOTE_NUMBER_SIZE' \
+. ds $EN_NUMBER_SIZE_CHANGE \\$1
+. if '\\$0'ENDNOTE_LINENUMBER_SIZE' \
+. ds $EN_LN_SIZE_CHANGE \\$1
+. if '\\$0'ENDNOTE_STRING_SIZE' \
+. ds $EN_STRING_SIZE_CHANGE \\$1
+. if '\\$0'ENDNOTE_TITLE_SIZE' \
+. ds $EN_TITLE_SIZE_CHANGE \\$1
+. if '\\$0'EPIGRAPH_SIZE' \
+. ds $EPI_SIZE_CHANGE \\$1
+. if '\\$0'FOOTNOTE_SIZE' \
+. ds $FN_SIZE_CHANGE \\$1
+. if '\\$0'HDRFTR_CENTER_SIZE' \
+. ds $HDRFTR_CENTER_SIZE_CHANGE \\$1
+. if '\\$0'HDRFTR_LEFT_SIZE' \
+. ds $HDRFTR_LEFT_SIZE_CHANGE \\$1
+. if '\\$0'HDRFTR_RIGHT_SIZE' \
+. ds $HDRFTR_RIGHT_SIZE_CHANGE \\$1
+. if '\\$0'HDRFTR_SIZE' \
+. ds $HDRFTR_SIZE_CHANGE \\$1
+. if '\\$0'LINENUMBER_SIZE' \
+. ds $LN_SIZE_CHANGE \\$1
+. if '\\$0'PAGENUM_SIZE' \
+. ds $PAGE_NUM_SIZE_CHANGE \\$1
+. if '\\$0'QUOTE_SIZE' \
+. ds $QUOTE_SIZE_CHANGE \\$1
+. if '\\$0'SUBTITLE_SIZE' \
+. ds $SUBTITLE_SIZE_CHANGE \\$1
+. if '\\$0'TITLE_SIZE' \
+. ds $TITLE_SIZE_CHANGE \\$1
+. if '\\$0'TOC_HEADER_SIZE' \
+. ds $TOC_HEADER_SIZE_CHANGE \\$1
+. if '\\$0'TOC_PN_SIZE' \
+. ds $TOC_PN_SIZE_CHANGE \\$1
.END
\#
-\#
.MAC _COLOR END
-. if \\n[#PRINT_STYLE]=1 \{ .return \}
+. if \\n[#PRINT_STYLE]=1 .return
. if '\\$0'ATTRIBUTE_COLOR' \{\
. nr #ATTRIBUTE_COLOR 1
. ds $ATTRIBUTE_COLOR \\$1
@@ -5329,6 +5240,10 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #DOCTYPE_COLOR 1
. ds $DOCTYPE_COLOR \\$1
. \}
+. if '\\$0'ENDNOTE_STRING_COLOR' \{\
+. nr #ENDNOTE_STRING_COLOR 1
+. ds $ENDNOTE_STRING_COLOR \\$1
+. \}
. if '\\$0'EPIGRAPH_COLOR' \{\
. nr #EPI_COLOR 1
. ds $EPI_COLOR \\$1
@@ -5361,10 +5276,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #HDRFTR_RULE_COLOR 1
. ds $HDRFTR_RULE_COLOR \\$1
. \}
-. if '\\$0'HEAD_COLOR' \{\
-. nr #HEAD_COLOR 1
-. ds $HEAD_COLOR \\$1
-. \}
. if '\\$0'LINEBREAK_COLOR' \{\
. nr #LINEBREAK_COLOR 1
. ds $LINEBREAK_COLOR \\$1
@@ -5377,10 +5288,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #PAGE_NUM_COLOR 1
. ds $PAGENUM_COLOR \\$1
. \}
-. if '\\$0'PARAHEAD_COLOR' \{\
-. nr #PH_COLOR 1
-. ds $PH_COLOR \\$1
-. \}
. if '\\$0'QUOTE_COLOR' \{\
. nr #QUOTE_COLOR 1
. ds $QUOTE_COLOR \\$1
@@ -5389,10 +5296,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #LINEBREAK_COLOR 1
. ds $LINEBREAK_COLOR \\$1
. \}
-. if '\\$0'SUBHEAD_COLOR' \{\
-. nr #SH_COLOR 1
-. ds $SH_COLOR \\$1
-. \}
. if '\\$0'SUBTITLE_COLOR' \{\
. nr #SUBTITLE_COLOR 1
. ds $SUBTITLE_COLOR \\$1
@@ -5403,43 +5306,59 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
.END
\#
-\#
.MAC _QUAD END
. if '\\$0'BIBLIOGRAPHY_QUAD' \{\
. ds $BIB_QUAD \\$1
-. if '\\*[$BIB_QUAD]'R' .ab Fatal error: \\$0 must be set to either L or J
-. if '\\*[$BIB_QUAD]'C' .ab Fatal error: \\$0 must be set to either L or J
-. \}
-. if '\\$0'BIBLIOGRAPHY_STRING_QUAD' .ds $BIB_STRING_QUAD \\$1
-. if '\\$0'BLOCKQUOTE_QUAD' .ds $BQUOTE_QUAD \\$1
-. if '\\$0'CITATION_QUAD' .ds $BQUOTE_QUAD \\$1
-. if '\\$0'CITE_QUAD' .ds $BQUOTE_QUAD \\$1
-. if '\\$0'COVER_COPYRIGHT_QUAD' .ds $COVER_COPYRIGHT_QUAD \\$1
-. if '\\$0'COVER_MISC_QUAD' .ds $COVER_MISC_QUAD \\$1
-. if '\\$0'COVER_QUAD' .ds $COVER_QUAD \\$1
-. if '\\$0'DOC_COVER_COPYRIGHT_QUAD' .ds $DOC_COVER_COPYRIGHT_QUAD \\$1
-. if '\\$0'DOC_COVER_MISC_QUAD' .ds $DOC_COVER_MISC_QUAD \\$1
-. if '\\$0'DOC_COVER_QUAD' .ds $DOC_COVER_QUAD \\$1
-. if '\\$0'DOCHEADER_QUAD' .ds $DOCHEADER_QUAD \\$1
+. if '\\*[$BIB_QUAD]'R' \
+.ab \\$0 at line \\n[.c] must be set to either L or J. Aborting \\n'[.F]'.
+. if '\\*[$BIB_QUAD]'C' \
+.ab \\$0 at line \\n[.c] must be set to either L or J. Aborting \\n'[.F]'.
+. \}
+. if '\\$0'BIBLIOGRAPHY_STRING_QUAD' \
+. ds $BIB_STRING_QUAD \\$1
+. if '\\$0'BLOCKQUOTE_QUAD' \
+. ds $BQUOTE_QUAD \\$1
+. if '\\$0'CITATION_QUAD' \
+. ds $BQUOTE_QUAD \\$1
+. if '\\$0'CITE_QUAD' \
+. ds $BQUOTE_QUAD \\$1
+. if '\\$0'COVER_COPYRIGHT_QUAD' \
+. ds $COVER_COPYRIGHT_QUAD \\$1
+. if '\\$0'COVER_MISC_QUAD' \
+. ds $COVER_MISC_QUAD \\$1
+. if '\\$0'COVER_QUAD' \
+. ds $COVER_QUAD \\$1
+. if '\\$0'DOC_COVER_COPYRIGHT_QUAD' \
+. ds $DOC_COVER_COPYRIGHT_QUAD \\$1
+. if '\\$0'DOC_COVER_MISC_QUAD' \
+. ds $DOC_COVER_MISC_QUAD \\$1
+. if '\\$0'DOC_COVER_QUAD' \
+. ds $DOC_COVER_QUAD \\$1
+. if '\\$0'DOCHEADER_QUAD' \
+. ds $DOCHEADER_QUAD \\$1
. if '\\$0'DOC_QUAD' \{\
. ds $DOC_QUAD \\$1
. QUAD \\*[$DOC_QUAD]
. \}
. if '\\$0'ENDNOTE_QUAD' \{\
. ds $EN_QUAD \\$1
-. if '\\*[$EN_QUAD]'R' .ab Fatal error: \\$0 must be set to either L or J
-. if '\\*[$EN_QUAD]'C' .ab Fatal error: \\$0 must be set to either L or J
-. \}
-. if '\\$0'ENDNOTE_STRING_QUAD' .ds $EN_STRING_QUAD \\$1
-. if '\\$0'ENDNOTE_TITLE_QUAD' .ds $EN_TITLE_QUAD \\$1
-. if '\\$0'EPIGRAPH_QUAD' .ds $EPI_QUAD \\$1
-. if '\\$0'FOOTNOTE_QUAD' .ds $FN_QUAD \\$1
-. if '\\$0'HEAD_QUAD' .ds $HEAD_QUAD \\$1
-. if '\\$0'SUBHEAD_QUAD' .ds $SH_QUAD \\$1
-. if '\\$0'TOC_HEADER_QUAD' .ds $TOC_HEADER_QUAD \\$1
+. if '\\*[$EN_QUAD]'R' \
+.ab \\$0 at line \\n[.c] must be set to either L or J. Aborting \\n'[.F]'.
+. if '\\*[$EN_QUAD]'C' \
+.ab \\$0 at line \\n[.c] must be set to either L or J. Aborting \\n'[.F]'.
+. \}
+. if '\\$0'ENDNOTE_STRING_QUAD' \
+. ds $EN_STRING_QUAD \\$1
+. if '\\$0'ENDNOTE_TITLE_QUAD' \
+. ds $EN_TITLE_QUAD \\$1
+. if '\\$0'EPIGRAPH_QUAD' \
+. ds $EPI_QUAD \\$1
+. if '\\$0'FOOTNOTE_QUAD' \
+. ds $FN_QUAD \\$1
+. if '\\$0'TOC_HEADER_QUAD' \
+. ds $TOC_HEADER_QUAD \\$1
.END
\#
-\#
\# DEFAULTS
\# --------
\# *Arguments:
@@ -5451,177 +5370,176 @@ y\\R'#DESCENDER \\n[.cdp]'
\# $REVISION_STRING are in the COPYSTYLE macro.
\#
.MAC DEFAULTS END
-. if !d$PAPER \{ .PAPER LETTER \}
-. if !\\n[#DOC_TYPE] \{ .DOCTYPE DEFAULT \}
-. ie \\n[#PAGENUM_STYLE_SET] \{ .PAGENUM_STYLE \\*[$PAGENUM_STYLE] \}
+. if !d $PAPER .PAPER LETTER
+. if !\\n[#DOC_TYPE] .DOCTYPE DEFAULT
+. ie \\n[#PAGENUM_STYLE_SET] .PAGENUM_STYLE \\*[$PAGENUM_STYLE]
. el \{\
-. if !\\n[#COPY_STYLE]=1 \{ .PAGENUM_STYLE DIGIT \}
+. if !\\n[#COPY_STYLE]=1 .PAGENUM_STYLE DIGIT
. \}
-. if !\\n[#COPY_STYLE] \{ .COPYSTYLE FINAL \}
-. if \\n[#DRAFT_WITH_PAGENUM] \{ .COPYSTYLE \\*[$COPY_STYLE] \}
+. if !\\n[#COPY_STYLE] .COPYSTYLE FINAL
+. if \\n[#DRAFT_WITH_PAGENUM] .COPYSTYLE \\*[$COPY_STYLE]
. if \\n[#DOC_TYPE]=4 \{\
. if !\\n[#USER_SET_L_LENGTH] \{\
. R_MARGIN \\n[#R_MARGIN]u
. rr #USER_SET_L_LENGTH
. \}
-. if \\n[#PRINT_STYLE]=1 \{ .PRINTSTYLE TYPEWRITE SINGLESPACE \}
+. if \\n[#PRINT_STYLE]=1 .PRINTSTYLE TYPEWRITE SINGLESPACE
. \}
. if \\n[#COPY_STYLE]=1 \{\
. COPYSTYLE DRAFT
. PAGENUMBER 1
. \}
-. if !r#DOC_HEADER \{ .DOCHEADER \}
-. if !r#HEADERS_ON \{ .HEADERS \}
-. if !r#PAGINATE \{ .PAGINATE \}
+. if !r #DOC_HEADER .DOCHEADER
+. if !r #HEADERS_ON .HEADERS
+. if !r #PAGINATE .PAGINATE
. if \\n[#FOOTERS_ON] \{\
. HEADERS OFF
-. if \\n[#PAGE_NUM_POS_SET]=0 \{ .PAGENUM_POS TOP CENTER \}
+. if \\n[#PAGE_NUM_POS_SET]=0 .PAGENUM_POS TOP CENTER
. \}
-. if !r#HEADER_MARGIN \{ .HEADER_MARGIN 4P+6p \}
-. if !r#HEADER_GAP \{ .HEADER_GAP 3P \}
+. if !r #HEADER_MARGIN .HEADER_MARGIN 4P+6p
+. if !r #HEADER_GAP .HEADER_GAP 3P
. if \\n[#FOOTERS_ON] \{\
-. if \\n[#PAGINATE]=0 \{\
-. if !r#T_MARGIN \{ .T_MARGIN 6P \}
+. if \\n![#PAGINATE] \{\
+. if !\\n[#T_MARGIN] .T_MARGIN 6P
. \}
. \}
-. if \\n[#HEADERS_ON]=0 \{\
-. if \\n[#FOOTERS_ON]=0 \{\
-. if !r#T_MARGIN \{ .T_MARGIN 6P \}
+. if !\\n[#HEADERS_ON] \{\
+. if !\\n[#FOOTERS_ON] \{\
+. if !r #T_MARGIN .T_MARGIN 6P
. \}
. \}
-. if !r#T_MARGIN \{ .T_MARGIN \\n[#HEADER_MARGIN]+\\n[#HEADER_GAP] \}
-. if !r#DOCHEADER_ADVANCE \{ .nr #DOCHEADER_ADVANCE \\n[#T_MARGIN] \}
-. if !r#FOOTER_MARGIN \{ .FOOTER_MARGIN 3P \}
-. if !r#FOOTER_GAP \{ .FOOTER_GAP 3P \}
-. if !r#B_MARGIN \{ .B_MARGIN \\n[#FOOTER_MARGIN]u+\\n[#FOOTER_GAP]u \}
-. if (\\n[#FOOTER_MARGIN]+\\n[.v]>=\\n[#B_MARGIN] \{\
+. if !r #T_MARGIN .T_MARGIN \\n[#HEADER_MARGIN]+\\n[#HEADER_GAP]
+. if !r #DOCHEADER_ADVANCE .nr #DOCHEADER_ADVANCE \\n[#T_MARGIN]
+. if !r #FOOTER_MARGIN .FOOTER_MARGIN 3P
+. if !r #FOOTER_GAP .FOOTER_GAP 3P
+. if !r #B_MARGIN .B_MARGIN \\n[#FOOTER_MARGIN]u+\\n[#FOOTER_GAP]u
+. if (\\n[#FOOTER_MARGIN]+\\n[.v]>=\\n[#B_MARGIN]) \{\
. tm1 "[mom]: Your chosen bottom margin for running text is too close to the footer margin.
. tm1 " No footers or bottom-of-page page numbers will be printed.
. tm1 " Please reset B_MARGIN or FOOTER_MARGIN to allow enough space.
. tm1 " If no footers or bottom-of-page page numbers are required,
-. tm1 " type in .FOOTER_MARGIN 0 before .START
+. tm1 " invoke .FOOTER_MARGIN 0 before .START
. \}
-. if !r#HEADER_RULE_GAP \{ .HEADER_RULE_GAP 4p \}
-. if !r#FOOTER_RULE_GAP \{ .FOOTER_RULE_GAP 4p \}
-. if !r#HDRFTR_RULE \{ .HDRFTR_RULE \}
-. if !r#PAGE_NUM_SET \{ .PAGENUMBER 1 \}
+. if !r #HEADER_RULE_GAP .HEADER_RULE_GAP 4p
+. if !r #FOOTER_RULE_GAP .FOOTER_RULE_GAP 4p
+. if !r #HDRFTR_RULE .HDRFTR_RULE
+. if !r #PAGE_NUM_SET .PAGENUMBER 1
.\" Read in number registers and strings for type parameters
. nr #DOC_L_MARGIN \\n[#L_MARGIN]
. nr #DOC_L_LENGTH \\n[#L_LENGTH]
. nr #DOC_R_MARGIN \\n[#PAGE_WIDTH]-(\\n[#DOC_L_MARGIN]+\\n[#L_LENGTH])
. ds $DOC_FAM \\*[$FAMILY]
. nr #DOC_PT_SIZE \\n[#PT_SIZE]
+.\"
+. if \\n[#TOC] .nr #DOC_PT_SIZE \\n[#TOC_PS]
+. if \\n[#ENDNOTES] .nr #DOC_PT_SIZE \\n[#EN_PS]
+. if \\n[#BIBLIOGRAPHY] .nr #DOC_PT_SIZE \\n[#BIB_PS]
+.\"
. nr #DOC_LEAD \\n[#LEAD]
+. nr #DOC@LEAD \\n[#DOC_LEAD]
.\" #SAVED_DOC_LEAD is set in COLLATE
-. if r#SAVED_DOC_LEAD \{\
-. if !\\n[#DOC_LEAD]=\\n[#SAVED_DOC_LEAD] \{ .nr #RERUN_TRAPS 1 \}
-. \}
-. ie \\n[#ADJ_DOC_LEAD]=1 \{ . \}
-. el \{\
-. if !\\n[#DOC_LEAD_ADJUST_OFF] \{\
-. DOC_LEAD_ADJUST
+. if \\n[#SAVED_DOC_LEAD] \{\
+. if !\\n[#TOC] \{\
+. if !\\n[#DOC_LEAD]=\\n[#SAVED_DOC_LEAD] .nr #RERUN_TRAPS 1
. \}
. \}
-. ds $DOC_QUAD \\*[$QUAD_VALUE]
-. if '\\*[$FONT]'' \{ .FT R \}
-. if '\\*[$PP_FT]'' \{\
-. ds $PP_FT \\*[$FONT]
-. \}
-. if !'\\*[$PP_FT]'' \{\
-. ds $PP_FT \\*[$FONT]
+. ie \\n[#ADJ_DOC_LEAD]=1 .
+. el \{\
+. if !\\n[#DOC_LEAD_ADJUST_OFF] .DOC_LEAD_ADJUST
. \}
+. ds $DOC_QUAD \\*[$QUAD_VALUE]
+. if '\\*[$FONT]'' .FT R
+. if '\\*[$PP_FT]'' .ds $PP_FT \\*[$FONT]
+. if !'\\*[$PP_FT]'' .ds $PP_FT \\*[$FONT]
.\" Counters
-. nr #PP 0
-. nr #FN_NUMBER 0 1
-. nr #EN_NUMBER 0 1
+. nr #PP 0
+. nr #FN_NUMBER 0 1
+. nr #EN_NUMBER 0 1
. nr #FN_COUNT_FOR_COLS 0 1
-. nr #DONE_ONCE 0 1
-. RESET_HEAD_NUMBER
-. RESET_SUBHEAD_NUMBER
-. RESET_PARAHEAD_NUMBER
+. nr #DONE_ONCE 0 1
+.\" Enable shimming if user hasn't turned it off
+. if \\n[#NO_SHIM]=2 .rr #NO_SHIM
.\" General style defaults for both PRINTSTYLEs
. nr #PP_STYLE 1
. PARA_INDENT \\n[#PP_INDENT]u
-. if !d$HDRFTR_FAM \{ .HDRFTR_FAMILY \\*[$DOC_FAM] \}
-. if !d$HDRFTR_SIZE_CHANGE \{ .HDRFTR_SIZE +0 \}
-. if !d$PAGE_NUM_FAM \{ .PAGENUM_FAMILY \\*[$DOC_FAM] \}
-. if !d$PAGE_NUM_FT \{ .PAGENUM_FONT R \}
-. if !d$PAGE_NUM_SIZE_CHANGE \{ .PAGENUM_SIZE +0 \}
-. if !r#PAGE_NUM_POS_SET \{ .PAGENUM_POS BOTTOM CENTER \}
+. if !d $HDRFTR_FAM .HDRFTR_FAMILY \\*[$DOC_FAM]
+. if !d $HDRFTR_SIZE_CHANGE .HDRFTR_SIZE +0
+. if !d $PAGE_NUM_FAM .PAGENUM_FAMILY \\*[$DOC_FAM]
+. if !d $PAGE_NUM_FT .PAGENUM_FONT R
+. if !d $PAGE_NUM_SIZE_CHANGE .PAGENUM_SIZE +0
+. if !r #PAGE_NUM_POS_SET .PAGENUM_POS BOTTOM CENTER
. ie \\n[#PAGE_NUM_HYPHENS_SET] \{\
-. if \\n[#PAGE_NUM_HYPHENS]=0 \{ .PAGENUM_HYPHENS OFF \}
-. if \\n[#PAGE_NUM_HYPHENS]=1 \{ .PAGENUM_HYPHENS \}
-. \}
-. el \{ .PAGENUM_HYPHENS \}
-. if !d$HEAD_QUAD \{ .HEAD_QUAD CENTER \}
-. if !r#HEAD_CAPS \{ .HEAD_CAPS \}
-. if !r#HEAD_UNDERLINE \{ .HEAD_UNDERLINE \}
-. if !d$SH_QUAD \{ .SUBHEAD_QUAD LEFT \}
-. if !r#HDRFTR_RIGHT_CAPS \{ .HDRFTR_RIGHT_CAPS \}
+. if \\n[#PAGE_NUM_HYPHENS]=0 .PAGENUM_HYPHENS OFF
+. if \\n[#PAGE_NUM_HYPHENS]=1 .PAGENUM_HYPHENS
+. \}
+. el .PAGENUM_HYPHENS
+. if !r #HDRFTR_RIGHT_CAPS .HDRFTR_RIGHT_CAPS
. if \\n[#HDRFTR_RIGHT_CAPS]=0 \{\
-. if !d$HDRFTR_RIGHT_SIZE_CHANGE \{ .HDRFTR_RIGHT_SIZE +0 \}
+. if !d $HDRFTR_RIGHT_SIZE_CHANGE .HDRFTR_RIGHT_SIZE +0
. \}
-. if !d$FN_FAM \{ .FOOTNOTE_FAMILY \\*[$DOC_FAM] \}
-. if !d$FN_FT \{ .FOOTNOTE_FONT R \}
-. if !d$FN_QUAD \{ .FOOTNOTE_QUAD \\*[$DOC_QUAD] \}
-. if !r#FN_RULE \{ .FOOTNOTE_RULE \}
-. if !r#FN_MARKERS \{ .FOOTNOTE_MARKERS \}
+. if !d $FN_FAM .FOOTNOTE_FAMILY \\*[$DOC_FAM]
+. if !d $FN_FT .FOOTNOTE_FONT R
+. if !d $FN_QUAD .FOOTNOTE_QUAD \\*[$DOC_QUAD]
+. if !r #FN_RULE .FOOTNOTE_RULE
+. if !r #FN_MARKERS .FOOTNOTE_MARKERS
. if \\n[#FN_MARKERS]=1 \{\
. if \\n[#FN_REF]=1 \{\
-. if !\\n[#FN_MARKER_STYLE] \{ .FOOTNOTE_MARKER_STYLE NUMBER \}
-. \}
-. if !\\n[#FN_MARKER_STYLE] \{ .FOOTNOTE_MARKER_STYLE STAR \}
-. \}
-. if !r#EN_MARKER_STYLE \{ .ENDNOTE_MARKER_STYLE SUPERSCRIPT \}
-. if !d$EN_PN_STYLE \{ .ENDNOTES_PAGENUM_STYLE digit \}
-. if !d$EN_FAM \{ .ENDNOTE_FAMILY \\*[$DOC_FAM] \}
-. if !d$EN_FT \{ .ENDNOTE_FONT R \}
-. if !d$EN_QUAD \{ .ENDNOTE_QUAD \\*[$DOC_QUAD] \}
-. if !d$EN_STRING \{ .ENDNOTE_STRING "Endnotes" \}
-. if !d$EN_STRING_FAM \{ .ENDNOTE_STRING_FAMILY \\*[$EN_FAM] \}
-. if !d$EN_STRING_QUAD \{ .ENDNOTE_STRING_QUAD CENTER \}
-. if !r#EN_STRING_UNDERLINE \{ .nr #EN_STRING_UNDERLINE 2 \}
-. if !r#EN_STRING_CAPS \{ .ENDNOTE_STRING_CAPS \}
-. if !d$EN_TITLE \{\
+. if !\\n[#FN_MARKER_STYLE] .FOOTNOTE_MARKER_STYLE NUMBER
+. \}
+. if !\\n[#FN_MARKER_STYLE] .FOOTNOTE_MARKER_STYLE STAR
+. \}
+. if !r #EN_MARKER_STYLE .ENDNOTE_MARKER_STYLE SUPERSCRIPT
+. if !d $EN_PN_STYLE .ENDNOTES_PAGENUM_STYLE digit
+. if !d $EN_FAM .ENDNOTE_FAMILY \\*[$DOC_FAM]
+. if !d $EN_FT .ENDNOTE_FONT R
+. if !d $EN_QUAD .ENDNOTE_QUAD \\*[$DOC_QUAD]
+. if !d $EN_STRING .ENDNOTE_STRING "Endnotes"
+. if !d $EN_STRING_FAM .ENDNOTE_STRING_FAMILY \\*[$EN_FAM]
+. if !d $EN_STRING_QUAD .ENDNOTE_STRING_QUAD CENTER
+. if !r #EN_STRING_UNDERLINE .nr #EN_STRING_UNDERLINE 2
+. if !r #EN_STRING_CAPS .ENDNOTE_STRING_CAPS
+. if !d $EN_TITLE \{\
. ie \\n[#DOC_TYPE]=2 \{\
. ie !'\\*[$CHAPTER_TITLE_1]'' \{\
-. ie '\\*[$CHAPTER]'' \{ .ENDNOTE_TITLE "\\*[$CHAPTER_TITLE]" \}
-. el \{ .ENDNOTE_TITLE "\\*[$CHAPTER_STRING] \\*[$CHAPTER]: \\*[$CHAPTER_TITLE]" \}
+. ie '\\*[$CHAPTER]'' .ENDNOTE_TITLE "\\*[$CHAPTER_TITLE]"
+. el .ENDNOTE_TITLE \
+"\\*[$CHAPTER_STRING] \\*[$CHAPTER]: \\*[$CHAPTER_TITLE]"
. \}
. el \{\
-. ie '\\*[$CHAPTER]'' \{ .ENDNOTE_TITLE "\\*[$CHAPTER_STRING]" \}
-. el \{ .ENDNOTE_TITLE "\\*[$CHAPTER_STRING] \\*[$CHAPTER]" \}
+. ie '\\*[$CHAPTER]'' .ENDNOTE_TITLE "\\*[$CHAPTER_STRING]"
+. el .ENDNOTE_TITLE "\\*[$CHAPTER_STRING] \\*[$CHAPTER]"
. \}
. \}
-. el \{ .ENDNOTE_TITLE "\\*[$TITLE]" \}
-. \}
-. if !d$EN_TITLE_FAM \{ .ENDNOTE_TITLE_FAMILY \\*[$EN_FAM] \}
-. if !d$EN_TITLE_QUAD \{ .ENDNOTE_TITLE_QUAD LEFT \}
-. if !r#EN_TITLE_UNDERLINE \{ .nr #EN_TITLE_UNDERLINE 1 \}
-. if !d$EN_NUMBER_FAM \{ .ENDNOTE_NUMBER_FAMILY \\*[$EN_FAM] \}
-. if !d$EN_LN_FAM \{ .ENDNOTE_LINENUMBER_FAMILY \\*[$EN_FAM] \}
-. if !r#EN_NUMBERS_ALIGN_LEFT \{\
-. if !r#EN_NUMBERS_ALIGN_RIGHT \{\
-. ie !\\n[#EN_MARKER_STYLE]=2 \{ .ENDNOTE_NUMBERS_ALIGN RIGHT 2 \}
-. el \{ .ENDNOTE_NUMBERS_ALIGN RIGHT 4 \}
-. \}
-. \}
-. if !r#EN_LN_GAP \{ .ENDNOTE_LINENUMBER_GAP 1n \}
-. if !r#EN_ALLOWS_HEADERS \{ .ENDNOTES_ALLOWS_HEADERS \}
-. if !d$BIB_PN_STYLE \{ .BIBLIOGRAPHY_PAGENUM_STYLE digit \}
-. if !d$BIB_FAM \{ .BIBLIOGRAPHY_FAMILY \\*[$DOC_FAM] \}
-. if !d$BIB_FT \{ .BIBLIOGRAPHY_FONT R \}
-. if !d$BIB_QUAD \{ .BIBLIOGRAPHY_QUAD \\*[$DOC_QUAD] \}
-. if !d$BIB_STRING \{ .BIBLIOGRAPHY_STRING "Bibliography" \}
-. if !d$BIB_STRING_FAM \{ .BIBLIOGRAPHY_STRING_FAMILY \\*[$BIB_FAM] \}
-. if !d$BIB_STRING_QUAD \{ .BIBLIOGRAPHY_STRING_QUAD CENTER \}
-. if !r#BIB_STRING_UNDERLINE \{ .nr #BIB_STRING_UNDERLINE 2 \}
-. if !r#BIB_STRING_CAPS \{ .BIBLIOGRAPHY_STRING_CAPS \}
-. if !d$TOC_HEADER_STRING \{ .TOC_HEADER_STRING "Contents" \}
-. if !d$TOC_HEADER_QUAD \{ .TOC_HEADER_QUAD LEFT \}
-. if !d$TOC_PN_STYLE \{ .TOC_PAGENUM_STYLE roman \}
-. if !r#TOC_PN_PADDING \{ .TOC_PADDING 3 \}
-. if !r#TOC_TITLE_INDENT \{ .TOC_TITLE_INDENT 0 \}
+. el .ENDNOTE_TITLE "\\*[$TITLE]"
+. \}
+. if !d $EN_TITLE_FAM .ENDNOTE_TITLE_FAMILY \\*[$EN_FAM]
+. if !d $EN_TITLE_QUAD .ENDNOTE_TITLE_QUAD LEFT
+. if !r #EN_TITLE_UNDERLINE .nr #EN_TITLE_UNDERLINE 1
+. if !d $EN_NUMBER_FAM .ENDNOTE_NUMBER_FAMILY \\*[$EN_FAM]
+. if !d $EN_LN_FAM .ENDNOTE_LINENUMBER_FAMILY \\*[$EN_FAM]
+. if !r #EN_NUMBERS_ALIGN_LEFT \{\
+. if !r #EN_NUMBERS_ALIGN_RIGHT \{\
+. ie !\\n[#EN_MARKER_STYLE]=2 .ENDNOTE_NUMBERS_ALIGN RIGHT 2
+. el .ENDNOTE_NUMBERS_ALIGN RIGHT 4
+. \}
+. \}
+. if !r #EN_LN_GAP .ENDNOTE_LINENUMBER_GAP 1m
+. if !r #EN_ALLOWS_HEADERS .ENDNOTES_ALLOWS_HEADERS
+. if !d $BIB_PN_STYLE .BIBLIOGRAPHY_PAGENUM_STYLE digit
+. if !d $BIB_FAM .BIBLIOGRAPHY_FAMILY \\*[$DOC_FAM]
+. if !d $BIB_FT .BIBLIOGRAPHY_FONT R
+. if !d $BIB_QUAD .BIBLIOGRAPHY_QUAD \\*[$DOC_QUAD]
+. if !d $BIB_STRING .BIBLIOGRAPHY_STRING "Bibliography"
+. if !d $BIB_STRING_FAM .BIBLIOGRAPHY_STRING_FAMILY \\*[$BIB_FAM]
+. if !d $BIB_STRING_QUAD .BIBLIOGRAPHY_STRING_QUAD CENTER
+. if !r #BIB_STRING_UNDERLINE .nr #BIB_STRING_UNDERLINE 2
+. if !r #BIB_STRING_CAPS .BIBLIOGRAPHY_STRING_CAPS
+. if !d $TOC_HEADER_STRING .TOC_HEADER_STRING "Contents"
+. if !d $TOC_HEADER_QUAD .TOC_HEADER_QUAD LEFT
+. if !d $TOC_PN_STYLE .TOC_PAGENUM_STYLE roman
+. if !r #TOC_PN_PADDING .TOC_PADDING 3
+.\" PDF link colour
+. if !\\n[PDFHREF_COLOR_SET] .PDF_LINK_COLOR 0.0 0.3 0.9
.\" String defaults for both PRINTSTYLEs
. ie \\n[#DOC_TYPE]=1 \{\
. ie '\\*[$DOC_TITLE]'' \{\
@@ -5629,7 +5547,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. if \\n[#USER_DEF_HDRFTR_RIGHT]=0 .ds $HDRFTR_RIGHT \\*[$TITLE]
. \}
. el \{\
-. if \\n[#COPY_STYLE]=1 \{ .DRAFT_WITH_PAGENUMBER \}
+. if \\n[#COPY_STYLE]=1 .DRAFT_WITH_PAGENUMBER
. if \\n[#USER_DEF_HDRFTR_LEFT]=0 .ds $HDRFTR_LEFT \\*[$AUTHOR_1]
. if \\n[#USER_DEF_HDRFTR_CENTER]=0 .ds $HDRFTR_CENTER \\*[$TITLE]
. if \\n[#USER_DEF_HDRFTR_RIGHT]=0 .ds $HDRFTR_RIGHT \\*[$DOC_TITLE]
@@ -5639,336 +5557,300 @@ y\\R'#DESCENDER \\n[.cdp]'
. if \\n[#USER_DEF_HDRFTR_LEFT]=0 .ds $HDRFTR_LEFT \\*[$AUTHOR_1]
. if \\n[#USER_DEF_HDRFTR_RIGHT]=0 .ds $HDRFTR_RIGHT \\*[$TITLE]
. \}
-. if !d$ATTRIBUTE_STRING .ds $ATTRIBUTE_STRING by
-. if !d$FINIS_STRING \{ .FINIS_STRING "End" \}
-. if !r#FINIS_STRING_CAPS \{ .nr #FINIS_STRING_CAPS 1 \}
+. if !d $ATTRIBUTE_STRING .ds $ATTRIBUTE_STRING by
+. if !d $FINIS_STRING .FINIS_STRING "End"
+. if !r #FINIS_STRING_CAPS .nr #FINIS_STRING_CAPS 1
.\" Covers
-. if !r#DOC_COVERS_OFF \{ .nr #DOC_COVERS 1 \}
-. if !r#COVERS_OFF \{ .nr #COVERS 1 \}
-. if !d$COVER_COPYRIGHT_QUAD \{ .COVER_COPYRIGHT_QUAD R \}
-. if !d$COVER_MISC_QUAD \{ .COVER_MISC_QUAD L \}
-. if !d$DOC_COVER_COPYRIGHT_QUAD \{ .DOC_COVER_COPYRIGHT_QUAD R \}
-. if !d$DOC_COVER_MISC_QUAD \{ .DOC_COVER_MISC_QUAD L \}
-. if !r#DOCCOVER_UNDERLINE \{ .DOC_COVER_UNDERLINE \}
-. if !r#COVER_UNDERLINE \{ .COVER_UNDERLINE \}
+. if !r #DOC_COVERS_OFF .nr #DOC_COVERS 1
+. if !r #COVERS_OFF .nr #COVERS 1
+. if !d $COVER_COPYRIGHT_QUAD .COVER_COPYRIGHT_QUAD R
+. if !d $COVER_MISC_QUAD .COVER_MISC_QUAD L
+. if !d $DOC_COVER_COPYRIGHT_QUAD .DOC_COVER_COPYRIGHT_QUAD R
+. if !d $DOC_COVER_MISC_QUAD .DOC_COVER_MISC_QUAD L
+. if !r #DOC_COVER_UNDERLINE .DOC_COVER_UNDERLINE
+. if !r #COVER_UNDERLINE .COVER_UNDERLINE
.\" Defaults for printstyle TYPEWRITE
. if \\n[#PRINT_STYLE]=1 \{\
. SS DEFAULT
-. if \\n[#UNDERLINE_QUOTES]=1 \{ .UNDERLINE_QUOTES \}
-. if \\n[#UNDERLINE_QUOTES]=0 \{ .UNDERLINE_QUOTES OFF \}
+. if \\n[#UNDERLINE_QUOTES]=1 .UNDERLINE_QUOTES
+. if \\n[#UNDERLINE_QUOTES]=0 .UNDERLINE_QUOTES OFF
+.\" +Doctype underlining (if NAMED)
+. if !r #DOCTYPE_UNDERLINE .nr #DOCTYPE_UNDERLINE 1
.\" +Quotes and blockquotes
-. if !r#Q_OFFSET_VALUE \{\
-. if '\\*[$Q_OFFSET_VALUE]'' \{ .QUOTE_INDENT 1 \}
+. if !r #Q_OFFSET_VALUE \{\
+. if '\\*[$Q_OFFSET_VALUE]'' .QUOTE_INDENT 1
. \}
.\" +Epigraphs
-. if !r#EPI_OFFSET_VALUE \{\
-. if '\\*[$EPI_OFFSET_VALUE]'' \{ .EPIGRAPH_INDENT 2 \}
+. if !r #EPI_OFFSET_VALUE \{\
+. if '\\*[$EPI_OFFSET_VALUE]'' .EPIGRAPH_INDENT 2
. \}
.\" +Linebreaks
-. if !d$LINEBREAK_CHAR \{ .LINEBREAK_CHAR * 3 2p \}
+. if !d $LINEBREAK_CHAR .LINEBREAK_CHAR * 3 2p
.\" +Footnotes
-. if !d$FN_SIZE_CHANGE \{ .FOOTNOTE_SIZE +0 \}
-. if !r#FN_RULE_LENGTH \{ .FOOTNOTE_RULE_LENGTH 2i \}
-.\" +Paragraph heads
-. if !r#PH_INDENT \{ .PARAHEAD_INDENT \\n[#PP_INDENT]u/2u \}
+. if !d $FN_SIZE_CHANGE .FOOTNOTE_SIZE +0
+. if !r #FN_RULE_LENGTH .FOOTNOTE_RULE_LENGTH 2i
.\" +Endnotes
-. if !r#EN_PP_INDENT \{ .ENDNOTE_PARA_INDENT \\n[#PP_INDENT] \}
+. if !r #EN_PP_INDENT .ENDNOTE_PARA_INDENT \\n[#PP_INDENT]
.\" +Footnotes
-. if !r#FN_RULE_ADJ \{ .FOOTNOTE_RULE_ADJ 6p \}
+. if !r #FN_RULE_ADJ .FOOTNOTE_RULE_ADJ 6p
.\" +Slant stuff
-. if !r#SLANT_MEANS_SLANT \{\
-. ie \\n[#UNDERLINE_SLANT]=1 \{ .UNDERLINE_SLANT \}
-. el \{ .UNDERLINE_SLANT OFF \}
+. if !r #SLANT_MEANS_SLANT \{\
+. ie \\n[#UNDERLINE_SLANT]=1 .UNDERLINE_SLANT
+. el .UNDERLINE_SLANT OFF
. \}
. \}
.\" Defaults for printstyle TYPESET
. if \\n[#PRINT_STYLE]=2 \{\
-. if !d$DOCHEADER_LEAD_ADJ \{ .DOCHEADER_LEAD +0 \}
+. if !d $DOCHEADER_LEAD_ADJ .DOCHEADER_LEAD +0
.\" +Cover
-. if !d$COVER_LEAD_ADJ \{ .COVER_LEAD +0 \}
-. if !d$COVER_FAM \{ .COVER_FAMILY \\*[$DOC_FAM] \}
+. if !d $COVER_LEAD_ADJ .COVER_LEAD +0
+. if !d $COVER_FAM .COVER_FAMILY \\*[$DOC_FAM]
.\" (title)
-. if !d$COVER_TITLE_FAM \{\
-. ie !d$COVER_FAM \{ .COVER_TITLE_FAMILY \\*[$DOC_FAM] \}
-. el \{ .COVER_TITLE_FAMILY \\*[$COVER_FAM] \}
+. if !d $COVER_TITLE_FAM \{\
+. ie !d $COVER_FAM .COVER_TITLE_FAMILY \\*[$DOC_FAM]
+. el .COVER_TITLE_FAMILY \\*[$COVER_FAM]
. \}
-. if !d$COVER_TITLE_FT \{ .COVER_TITLE_FONT B \}
-. if !d$COVER_TITLE_SIZE_CHANGE \{ .COVER_TITLE_SIZE +3.5 \}
+. if !d $COVER_TITLE_FT .COVER_TITLE_FONT B
+. if !d $COVER_TITLE_SIZE_CHANGE .COVER_TITLE_SIZE +3.5
.\" (chapter title)
-. if !d$COVER_CHAPTER_TITLE_FAM \{\
-. ie !d$COVER_FAM \{ .COVER_CHAPTER_TITLE_FAMILY \\*[$DOC_FAM] \}
-. el \{ .COVER_CHAPTER_TITLE_FAMILY \\*[$COVER_FAM] \}
+. if !d $COVER_CHAPTER_TITLE_FAM \{\
+. ie !d $COVER_FAM .COVER_CHAPTER_TITLE_FAMILY \\*[$DOC_FAM]
+. el .COVER_CHAPTER_TITLE_FAMILY \\*[$COVER_FAM]
. \}
-. if !d$COVER_CHAPTER_TITLE_FT \{ .COVER_CHAPTER_TITLE_FONT BI \}
-. if !d$COVER_CHAPTER_TITLE_SIZE_CHANGE \{ .COVER_CHAPTER_TITLE_SIZE +4 \}
+. if !d $COVER_CHAPTER_TITLE_FT .COVER_CHAPTER_TITLE_FONT BI
+. if !d $COVER_CHAPTER_TITLE_SIZE_CHANGE .COVER_CHAPTER_TITLE_SIZE +4
.\" (subtitle)
-. if !d$COVER_SUBTITLE_FAM \{\
-. ie !d$COVER_FAM \{ .COVER_SUBTITLE_FAMILY \\*[$DOC_FAM] \}
-. el \{ .COVER_SUBTITLE_FAMILY \\*[$COVER_FAM] \}
+. if !d $COVER_SUBTITLE_FAM \{\
+. ie !d $COVER_FAM .COVER_SUBTITLE_FAMILY \\*[$DOC_FAM]
+. el .COVER_SUBTITLE_FAMILY \\*[$COVER_FAM]
. \}
-. if !d$COVER_SUBTITLE_FT \{ .COVER_SUBTITLE_FONT R \}
-. if !d$COVER_SUBTITLE_SIZE_CHANGE \{ .COVER_SUBTITLE_SIZE +0 \}
+. if !d $COVER_SUBTITLE_FT .COVER_SUBTITLE_FONT R
+. if !d $COVER_SUBTITLE_SIZE_CHANGE .COVER_SUBTITLE_SIZE +0
.\" (attribution and author[s])
-. if !d$COVER_AUTHOR_FAM \{\
-. ie !d$COVER_FAM \{ .COVER_AUTHOR_FAMILY \\*[$DOC_FAM] \}
-. el \{ .COVER_AUTHOR_FAMILY \\*[$COVER_FAM] \}
+. if !d $COVER_AUTHOR_FAM \{\
+. ie !d $COVER_FAM .COVER_AUTHOR_FAMILY \\*[$DOC_FAM]
+. el .COVER_AUTHOR_FAMILY \\*[$COVER_FAM]
. \}
-. if !d$COVER_AUTHOR_FT \{ .COVER_AUTHOR_FONT I \}
-. if !d$COVER_AUTHOR_SIZE_CHANGE \{ .COVER_AUTHOR_SIZE +0 \}
+. if !d $COVER_AUTHOR_FT .COVER_AUTHOR_FONT I
+. if !d $COVER_AUTHOR_SIZE_CHANGE .COVER_AUTHOR_SIZE +0
.\" (doctype if "named")
-. if !d$COVER_DOCTYPE_FAM \{\
-. ie !d$COVER_FAM \{ .COVER_DOCTYPE_FAMILY \\*[$DOC_FAM] \}
-. el \{ .COVER_DOCTYPE_FAMILY \\*[$COVER_FAM] \}
+. if !d $COVER_DOCTYPE_FAM \{\
+. ie !d $COVER_FAM .COVER_DOCTYPE_FAMILY \\*[$DOC_FAM]
+. el .COVER_DOCTYPE_FAMILY \\*[$COVER_FAM]
. \}
-. if !d$COVER_DOCTYPE_FT \{ .COVER_DOCTYPE_FONT BI \}
-. if !d$COVER_DOCTYPE_SIZE_CHANGE \{ .COVER_DOCTYPE_SIZE +3 \}
+. if !d $COVER_DOCTYPE_FT .COVER_DOCTYPE_FONT BI
+. if !d $COVER_DOCTYPE_SIZE_CHANGE .COVER_DOCTYPE_SIZE +3
.\" (copyright)
-. if !d$COVER_COPYRIGHT_FAM \{\
-. ie !d$COVER_FAM \{ .COVER_COPYRIGHT_FAMILY \\*[$DOC_FAM] \}
-. el \{ .COVER_COPYRIGHT_FAMILY \\*[$COVER_FAM] \}
+. if !d $COVER_COPYRIGHT_FAM \{\
+. ie !d $COVER_FAM .COVER_COPYRIGHT_FAMILY \\*[$DOC_FAM]
+. el .COVER_COPYRIGHT_FAMILY \\*[$COVER_FAM]
. \}
-. if !d$COVER_COPYRIGHT_FT \{ .COVER_COPYRIGHT_FONT R \}
-. if !d$COVER_COPYRIGHT_SIZE_CHANGE \{ .COVER_COPYRIGHT_SIZE -2 \}
+. if !d $COVER_COPYRIGHT_FT .COVER_COPYRIGHT_FONT R
+. if !d $COVER_COPYRIGHT_SIZE_CHANGE .COVER_COPYRIGHT_SIZE -2
.\" (misc)
-. if !d$COVER_MISC_FAM \{ .COVER_MISC_FAMILY \\*[$DOC_FAM] \}
-. if !d$COVER_MISC_FT \{ .COVER_MISC_FONT R \}
-. if !d$COVER_MISC_SIZE_CHANGE \{ .COVER_MISC_SIZE -2 \}
-. if !r#COVER_MISC_AUTOLEAD \{ .COVER_MISC_AUTOLEAD 2 \}
+. if !d $COVER_MISC_FAM .COVER_MISC_FAMILY \\*[$DOC_FAM]
+. if !d $COVER_MISC_FT .COVER_MISC_FONT R
+. if !d $COVER_MISC_SIZE_CHANGE .COVER_MISC_SIZE -2
+. if !r #COVER_MISC_AUTOLEAD .COVER_MISC_AUTOLEAD 2
.\" +Doc cover
-. if !d$DOC_COVER_LEAD_ADJ \{ .DOC_COVER_LEAD +0 \}
-. if !d$DOC_COVER_FAM \{ .DOC_COVER_FAMILY \\*[$DOC_FAM] \}
+. if !d $DOC_COVER_LEAD_ADJ .DOC_COVER_LEAD +0
+. if !d $DOC_COVER_FAM .DOC_COVER_FAMILY \\*[$DOC_FAM]
.\" (title)
-. if !d$DOC_COVER_TITLE_FAM \{\
-. ie !d$DOC_COVER_FAM \{ .DOC_COVER_TITLE_FAMILY \\*[$DOC_FAM] \}
-. el \{ .DOC_COVER_TITLE_FAMILY \\*[$DOC_COVER_FAM] \}
+. if !d $DOC_COVER_TITLE_FAM \{\
+. ie !d $DOC_COVER_FAM .DOC_COVER_TITLE_FAMILY \\*[$DOC_FAM]
+. el .DOC_COVER_TITLE_FAMILY \\*[$DOC_COVER_FAM]
. \}
-. if !d$DOC_COVER_TITLE_FT \{ .DOC_COVER_TITLE_FONT B \}
-. if !d$DOC_COVER_TITLE_SIZE_CHANGE \{ .DOC_COVER_TITLE_SIZE +3.5 \}
+. if !d $DOC_COVER_TITLE_FT .DOC_COVER_TITLE_FONT B
+. if !d $DOC_COVER_TITLE_SIZE_CHANGE .DOC_COVER_TITLE_SIZE +3.5
.\" (chapter title)
-. if !d$DOC_COVER_CHAPTER_TITLE_FAM \{\
-. ie !d$DOC_COVER_FAM \{ .DOC_COVER_CHAPTER_TITLE_FAMILY \\*[$DOC_FAM] \}
-. el \{ .DOC_COVER_CHAPTER_TITLE_FAMILY \\*[$DOC_COVER_FAM] \}
+. if !d $DOC_COVER_CHAPTER_TITLE_FAM \{\
+. ie !d $DOC_COVER_FAM .DOC_COVER_CHAPTER_TITLE_FAMILY \\*[$DOC_FAM]
+. el .DOC_COVER_CHAPTER_TITLE_FAMILY \\*[$DOC_COVER_FAM]
. \}
-. if !d$DOC_COVER_CHAPTER_TITLE_FT \{ .DOC_COVER_CHAPTER_TITLE_FONT BI \}
-. if !d$DOC_COVER_CHAPTER_TITLE_SIZE_CHANGE \{ .DOC_COVER_CHAPTER_TITLE_SIZE +4 \}
+. if !d $DOC_COVER_CHAPTER_TITLE_FT .DOC_COVER_CHAPTER_TITLE_FONT BI
+. if !d $DOC_COVER_CHAPTER_TITLE_SIZE_CHANGE .DOC_COVER_CHAPTER_TITLE_SIZE +4
.\" (subtitle)
-. if !d$DOC_COVER_SUBTITLE_FAM \{\
-. ie !d$DOC_COVER_FAM \{ .DOC_COVER_SUBTITLE_FAMILY \\*[$DOC_FAM] \}
-. el \{ .DOC_COVER_SUBTITLE_FAMILY \\*[$DOC_COVER_FAM] \}
+. if !d $DOC_COVER_SUBTITLE_FAM \{\
+. ie !d $DOC_COVER_FAM .DOC_COVER_SUBTITLE_FAMILY \\*[$DOC_FAM]
+. el .DOC_COVER_SUBTITLE_FAMILY \\*[$DOC_COVER_FAM]
. \}
-. if !d$DOC_COVER_SUBTITLE_FT \{ .DOC_COVER_SUBTITLE_FONT R \}
-. if !d$DOC_COVER_SUBTITLE_SIZE_CHANGE \{ .DOC_COVER_SUBTITLE_SIZE +0 \}
+. if !d $DOC_COVER_SUBTITLE_FT .DOC_COVER_SUBTITLE_FONT R
+. if !d $DOC_COVER_SUBTITLE_SIZE_CHANGE .DOC_COVER_SUBTITLE_SIZE +0
.\" (attribution and author[s])
-. if !d$DOC_COVER_AUTHOR_FAM \{\
-. ie !d$DOC_COVER_FAM \{ .DOC_COVER_AUTHOR_FAMILY \\*[$DOC_FAM] \}
-. el \{ .DOC_COVER_AUTHOR_FAMILY \\*[$DOC_COVER_FAM] \}
+. if !d $DOC_COVER_AUTHOR_FAM \{\
+. ie !d $DOC_COVER_FAM .DOC_COVER_AUTHOR_FAMILY \\*[$DOC_FAM]
+. el .DOC_COVER_AUTHOR_FAMILY \\*[$DOC_COVER_FAM]
. \}
-. if !d$DOC_COVER_AUTHOR_FT \{ .DOC_COVER_AUTHOR_FONT I \}
-. if !d$DOC_COVER_AUTHOR_SIZE_CHANGE \{ .DOC_COVER_AUTHOR_SIZE +0 \}
+. if !d $DOC_COVER_AUTHOR_FT .DOC_COVER_AUTHOR_FONT I
+. if !d $DOC_COVER_AUTHOR_SIZE_CHANGE .DOC_COVER_AUTHOR_SIZE +0
.\" (doctype if "named")
-. if !d$DOC_COVER_DOCTYPE_FAM \{\
-. ie !d$DOC_COVER_FAM \{ .DOC_COVER_DOCTYPE_FAMILY \\*[$DOC_FAM] \}
-. el \{ .DOC_COVER_DOCTYPE_FAMILY \\*[$DOC_COVER_FAM] \}
+. if !d $DOC_COVER_DOCTYPE_FAM \{\
+. ie !d $DOC_COVER_FAM .DOC_COVER_DOCTYPE_FAMILY \\*[$DOC_FAM]
+. el .DOC_COVER_DOCTYPE_FAMILY \\*[$DOC_COVER_FAM]
. \}
-. if !d$DOC_COVER_DOCTYPE_FT \{ .DOC_COVER_DOCTYPE_FONT BI \}
-. if !d$DOC_COVER_DOCTYPE_SIZE_CHANGE \{ .DOC_COVER_DOCTYPE_SIZE +3 \}
+. if !d $DOC_COVER_DOCTYPE_FT .DOC_COVER_DOCTYPE_FONT BI
+. if !d $DOC_COVER_DOCTYPE_SIZE_CHANGE .DOC_COVER_DOCTYPE_SIZE +3
.\" (copyright)
-. if !d$DOC_COVER_COPYRIGHT_FAM \{\
-. ie !d$DOC_COVER_FAM \{ .DOC_COVER_COPYRIGHT_FAMILY \\*[$DOC_FAM] \}
-. el \{ .DOC_COVER_COPYRIGHT_FAMILY \\*[$DOC_COVER_FAM] \}
+. if !d $DOC_COVER_COPYRIGHT_FAM \{\
+. ie !d $DOC_COVER_FAM .DOC_COVER_COPYRIGHT_FAMILY \\*[$DOC_FAM]
+. el .DOC_COVER_COPYRIGHT_FAMILY \\*[$DOC_COVER_FAM]
. \}
-. if !d$DOC_COVER_COPYRIGHT_FT \{ .DOC_COVER_COPYRIGHT_FONT R \}
-. if !d$DOC_COVER_COPYRIGHT_SIZE_CHANGE \{ .DOC_COVER_COPYRIGHT_SIZE -2 \}
+. if !d $DOC_COVER_COPYRIGHT_FT .DOC_COVER_COPYRIGHT_FONT R
+. if !d $DOC_COVER_COPYRIGHT_SIZE_CHANGE .DOC_COVER_COPYRIGHT_SIZE -2
.\" (misc)
-. if !d$DOC_COVER_MISC_FAM \{ .DOC_COVER_MISC_FAMILY \\*[$DOC_FAM] \}
-. if !d$DOC_COVER_MISC_FT \{ .DOC_COVER_MISC_FONT R \}
-. if !d$DOC_COVER_MISC_SIZE_CHANGE \{ .DOC_COVER_MISC_SIZE -2 \}
-. if !r#DOC_COVER_MISC_AUTOLEAD \{ .DOC_COVER_MISC_AUTOLEAD 2 \}
+. if !d $DOC_COVER_MISC_FAM .DOC_COVER_MISC_FAMILY \\*[$DOC_FAM]
+. if !d $DOC_COVER_MISC_FT .DOC_COVER_MISC_FONT R
+. if !d $DOC_COVER_MISC_SIZE_CHANGE .DOC_COVER_MISC_SIZE -2
+. if !r #DOC_COVER_MISC_AUTOLEAD .DOC_COVER_MISC_AUTOLEAD 2
.\" +Docheader
-. if !d$DOCHEADER_FAM \{ .DOCHEADER_FAMILY \\*[$DOC_FAM] \}
-. if !d$TITLE_FAM \{\
-. ie !d$DOCHEADER_FAM \{ .TITLE_FAMILY \\*[$DOC_FAM] \}
-. el \{ .TITLE_FAMILY \\*[$DOCHEADER_FAM] \}
-. \}
-. if !d$TITLE_FT \{ .TITLE_FONT B \}
-. if !d$TITLE_SIZE_CHANGE \{\
-. ie \\n[#DOC_TYPE]=2 \{ .TITLE_SIZE +4 \}
-. el \{ .TITLE_SIZE +3.5 \}
-. \}
-. if !d$CHAPTER_TITLE_FAM \{\
-. ie !d$DOCHEADER_FAM \{ .CHAPTER_TITLE_FAMILY \\*[$DOC_FAM] \}
-. el \{ .CHAPTER_TITLE_FAMILY \\*[$DOCHEADER_FAM] \}
-. \}
-. if !d$CHAPTER_TITLE_FT \{ .CHAPTER_TITLE_FONT BI \}
-. if !d$CHAPTER_TITLE_SIZE_CHANGE \{ .CHAPTER_TITLE_SIZE +4 \}
-. if !d$SUBTITLE_FAM \{\
-. ie !d$DOCHEADER_FAM \{ .SUBTITLE_FAMILY \\*[$DOC_FAM] \}
-. el \{ .SUBTITLE_FAMILY \\*[$DOCHEADER_FAM] \}
-. \}
-. if !d$SUBTITLE_FT \{ .SUBTITLE_FONT R \}
-. if !d$SUBTITLE_SIZE_CHANGE \{ .SUBTITLE_SIZE +0 \}
-. if !d$AUTHOR_FAM \{\
-. ie !d$DOCHEADER_FAM \{ .AUTHOR_FAMILY \\*[$DOC_FAM] \}
-. el \{ .AUTHOR_FAMILY \\*[$DOCHEADER_FAM] \}
-. \}
-. if !d$AUTHOR_FT \{ .AUTHOR_FONT I \}
-. if !d$AUTHOR_SIZE_CHANGE \{ .AUTHOR_SIZE +0 \}
-. if !d$DOCTYPE_FAM \{\
-. ie !d$DOCHEADER_FAM \{ .DOCTYPE_FAMILY \\*[$DOC_FAM] \}
-. el \{ .DOCTYPE_FAMILY \\*[$DOCHEADER_FAM] \}
-. \}
-. if !d$DOCTYPE_FT \{ .DOCTYPE_FONT BI \}
-. if !d$DOCTYPE_SIZE_CHANGE \{ .DOCTYPE_SIZE +3 \}
-. if !r#DOCTYPE_UNDERLINE \{ .DOCTYPE_UNDERLINE \}
+. if !d $DOCHEADER_FAM .DOCHEADER_FAMILY \\*[$DOC_FAM]
+. if !d $TITLE_FAM \{\
+. ie !d $DOCHEADER_FAM .TITLE_FAMILY \\*[$DOC_FAM]
+. el .TITLE_FAMILY \\*[$DOCHEADER_FAM]
+. \}
+. if !d $TITLE_FT .TITLE_FONT B
+. if !d $TITLE_SIZE_CHANGE \{\
+. ie \\n[#DOC_TYPE]=2 .TITLE_SIZE +4
+. el .TITLE_SIZE +3.5
+. \}
+. if !d $CHAPTER_TITLE_FAM \{\
+. ie !d $DOCHEADER_FAM .CHAPTER_TITLE_FAMILY \\*[$DOC_FAM]
+. el .CHAPTER_TITLE_FAMILY \\*[$DOCHEADER_FAM]
+. \}
+. if !d $CHAPTER_TITLE_FT .CHAPTER_TITLE_FONT BI
+. if !d $CHAPTER_TITLE_SIZE_CHANGE .CHAPTER_TITLE_SIZE +4
+. if !d $SUBTITLE_FAM \{\
+. ie !d $DOCHEADER_FAM .SUBTITLE_FAMILY \\*[$DOC_FAM]
+. el .SUBTITLE_FAMILY \\*[$DOCHEADER_FAM]
+. \}
+. if !d $SUBTITLE_FT .SUBTITLE_FONT R
+. if !d $SUBTITLE_SIZE_CHANGE .SUBTITLE_SIZE +0
+. if !d $AUTHOR_FAM \{\
+. ie !d $DOCHEADER_FAM .AUTHOR_FAMILY \\*[$DOC_FAM]
+. el .AUTHOR_FAMILY \\*[$DOCHEADER_FAM]
+. \}
+. if !d $AUTHOR_FT .AUTHOR_FONT I
+. if !d $AUTHOR_SIZE_CHANGE .AUTHOR_SIZE +0
+. if !d $DOCTYPE_FAM \{\
+. ie !d $DOCHEADER_FAM .DOCTYPE_FAMILY \\*[$DOC_FAM]
+. el .DOCTYPE_FAMILY \\*[$DOCHEADER_FAM]
+. \}
+. if !d $DOCTYPE_FT .DOCTYPE_FONT BI
+. if !d $DOCTYPE_SIZE_CHANGE .DOCTYPE_SIZE +3
+. if !r #DOCTYPE_UNDERLINE .DOCTYPE_UNDERLINE
.\" +Headers and footers
-. if !d$HDRFTR_LEFT_FAM \{ .HDRFTR_LEFT_FAMILY \\*[$DOC_FAM] \}
-. if !d$HDRFTR_LEFT_FT \{ .HDRFTR_LEFT_FONT R \}
-. if \\n[#HDRFTR_LEFT_CAPS] \{\
-. if !d$HDRFTR_LEFT_SIZE_CHANGE \{ .HDRFTR_LEFT_SIZE -2 \}
-. \}
-. if !d$HDRFTR_LEFT_SIZE_CHANGE \{ .HDRFTR_LEFT_SIZE -.5 \}
-. if !d$HDRFTR_CENTER_FAM \{ .HDRFTR_CENTER_FAMILY \\*[$DOC_FAM] \}
-. if !d$HDRFTR_CENTER_FT \{ .HDRFTR_CENTER_FONT I \}
+. if !d $HDRFTR_LEFT_FAM .HDRFTR_LEFT_FAMILY \\*[$DOC_FAM]
+. if !d $HDRFTR_LEFT_FT .HDRFTR_LEFT_FONT R
+. if \\n[#HDRFTR_LEFT_CAPS] \{\
+. if !d $HDRFTR_LEFT_SIZE_CHANGE .HDRFTR_LEFT_SIZE -2
+. \}
+. if !d $HDRFTR_LEFT_SIZE_CHANGE .HDRFTR_LEFT_SIZE -.5
+. if !d $HDRFTR_CENTER_FAM .HDRFTR_CENTER_FAMILY \\*[$DOC_FAM]
+. if !d $HDRFTR_CENTER_FT .HDRFTR_CENTER_FONT I
. if \\n[#HDRFTR_CENTER_CAPS] \{\
-. if !d$HDRFTR_CENTER_SIZE_CHANGE \{ .HDRFTR_CENTER_SIZE -2 \}
+. if !d $HDRFTR_CENTER_SIZE_CHANGE .HDRFTR_CENTER_SIZE -2
. \}
-. if !d$HDRFTR_CENTER_SIZE_CHANGE \{ .HDRFTR_CENTER_SIZE -.5 \}
-. if !d$HDRFTR_RIGHT_FAM \{ .HDRFTR_RIGHT_FAMILY \\*[$DOC_FAM] \}
-. if !d$HDRFTR_RIGHT_FT \{ .HDRFTR_RIGHT_FONT R \}
+. if !d $HDRFTR_CENTER_SIZE_CHANGE .HDRFTR_CENTER_SIZE -.5
+. if !d $HDRFTR_RIGHT_FAM .HDRFTR_RIGHT_FAMILY \\*[$DOC_FAM]
+. if !d $HDRFTR_RIGHT_FT .HDRFTR_RIGHT_FONT R
. if \\n[#HDRFTR_RIGHT_CAPS] \{\
-. if !d$HDRFTR_RIGHT_SIZE_CHANGE \{ .HDRFTR_RIGHT_SIZE -2 \}
-. \}
-. if !d$HDRFTR_RIGHT_SIZE_CHANGE \{ .HDRFTR_RIGHT_SIZE -.5 \}
-.\" +Heads
-. if !d$HEAD_FAM \{ .HEAD_FAMILY \\*[$DOC_FAM] \}
-. if !d$HEAD_FT \{ .HEAD_FONT B \}
-. if !d$HEAD_SIZE_CHANGE \{ .HEAD_SIZE +1 \}
-. if !r#HEAD_SPACE \{ .HEAD_SPACE \}
-.\" +Subheads
-. if !d$SH_FAM \{ .SUBHEAD_FAMILY \\*[$DOC_FAM] \}
-. if !d$SH_FT \{ .SUBHEAD_FONT B \}
-. if !d$SH_SIZE_CHANGE \{ .SUBHEAD_SIZE +.5 \}
-.\" +Paragraph heads
-. if !d$PH_FAM \{ .PARAHEAD_FAMILY \\*[$DOC_FAM] \}
-. if !d$PH_FT \{ .PARAHEAD_FONT BI \}
-. if !d$PH_SIZE_CHANGE \{ .PARAHEAD_SIZE -.25 \}
-. if !r#PH_INDENT \{ .PARAHEAD_INDENT \\n[#PP_INDENT]u/2u \}
-. if !d$PH_SPACE \{ .PARAHEAD_SPACE .6m \}
+. if !d $HDRFTR_RIGHT_SIZE_CHANGE .HDRFTR_RIGHT_SIZE -2
+. \}
+. if !d $HDRFTR_RIGHT_SIZE_CHANGE .HDRFTR_RIGHT_SIZE -.5
.\" +Quotes
-. if !d$QUOTE_FAM \{ .QUOTE_FAMILY \\*[$DOC_FAM] \}
-. if !d$QUOTE_FT \{ .QUOTE_FONT I \}
-. if !d$QUOTE_SIZE_CHANGE \{ .QUOTE_SIZE +0 \}
-. if !r#Q_OFFSET_VALUE \{\
-. if '\\*[$Q_OFFSET_VALUE]'' \{ .QUOTE_INDENT 3 \}
+. if !d $QUOTE_FAM .QUOTE_FAMILY \\*[$DOC_FAM]
+. if !d $QUOTE_FT .QUOTE_FONT I
+. if !d $QUOTE_SIZE_CHANGE .QUOTE_SIZE+0
+. if !r #Q_OFFSET_VALUE \{\
+. if '\\*[$Q_OFFSET_VALUE]'' .QUOTE_INDENT 3
. \}
.\" +Blockquotes
.\" Note: the leading for quotes and blockquotes is set after .DEFAULTS in START
-. if !d$BQUOTE_FAM \{ .BLOCKQUOTE_FAMILY \\*[$DOC_FAM] \}
-. if !d$BQUOTE_FT \{ .BLOCKQUOTE_FONT R \}
-. if !d$BQUOTE_SIZE_CHANGE \{ .BLOCKQUOTE_SIZE -1 \}
-. if !d$BQUOTE_QUAD \{ .BLOCKQUOTE_QUAD LEFT \}
+. if !d $BQUOTE_FAM .BLOCKQUOTE_FAMILY \\*[$DOC_FAM]
+. if !d $BQUOTE_FT .BLOCKQUOTE_FONT R
+. if !d $BQUOTE_SIZE_CHANGE .BLOCKQUOTE_SIZE -1
+. if !d $BQUOTE_QUAD .BLOCKQUOTE_QUAD LEFT
.\" +Epigraphs
-. if !d$EPI_FAM \{ .EPIGRAPH_FAMILY \\*[$DOC_FAM] \}
-. if !d$EPI_FT \{ .EPIGRAPH_FONT R \}
-. if !d$EPI_SIZE_CHANGE \{ .EPIGRAPH_SIZE -1.5 \}
-. if !r#EPI_AUTOLEAD \{ .EPIGRAPH_AUTOLEAD 2 \}
-. if !d$EPI_QUAD \{ .EPIGRAPH_QUAD \\*[$DOC_QUAD] \}
-. if !r#EPI_OFFSET_VALUE \{\
-. if '\\*[$EPI_OFFSET_VALUE]'' \{ .EPIGRAPH_INDENT 3 \}
+. if !d $EPI_FAM .EPIGRAPH_FAMILY \\*[$DOC_FAM]
+. if !d $EPI_FT .EPIGRAPH_FONT R
+. if !d $EPI_SIZE_CHANGE .EPIGRAPH_SIZE -1.5
+. if !r #EPI_AUTOLEAD .EPIGRAPH_AUTOLEAD 2
+. if !d $EPI_QUAD .EPIGRAPH_QUAD \\*[$DOC_QUAD]
+. if !\\n[#EPI_OFFSET_VALUE] \{\
+. if '\\*[$EPI_OFFSET_VALUE]'' .EPIGRAPH_INDENT 3
. \}
.\" +Linebreaks
-. if !d$LINEBREAK_CHAR \{ .LINEBREAK_CHAR * 3 3p \}
-. if !d$LINEBREAK_COLOR \{ .LINEBREAK_COLOR black \}
+. if !d $LINEBREAK_CHAR .LINEBREAK_CHAR * 3 3p
+. if !d $LINEBREAK_COLOR .LINEBREAK_COLOR black
.\" +Footnotes
-. if !r#FN_RULE_LENGTH \{ .FOOTNOTE_RULE_LENGTH 4P \}
-. if !r#FN_RULE_ADJ \{ .FOOTNOTE_RULE_ADJ 3p \}
-. if !d$FN_SIZE_CHANGE \{ .FOOTNOTE_SIZE -2 \}
-. if !r#FN_AUTOLEAD \{ .FOOTNOTE_AUTOLEAD 2 \}
+. if !r #FN_RULE_LENGTH .FOOTNOTE_RULE_LENGTH 4P
+. if !r #FN_RULE_ADJ .FOOTNOTE_RULE_ADJ 3p
+. if !d $FN_SIZE_CHANGE .FOOTNOTE_SIZE -2
+. if !r #FN_AUTOLEAD .FOOTNOTE_AUTOLEAD 2
.\" +Endnotes
-. if !r#EN_PS \{ .ENDNOTE_PT_SIZE (\\n[#DOC_PT_SIZE]u) \}
-. if !d$EN_STRING_FT \{ .ENDNOTE_STRING_FONT B \}
-. if !d$EN_STRING_SIZE_CHANGE \{ .ENDNOTE_STRING_SIZE +1 \}
-. if !d$EN_TITLE_FT \{ .ENDNOTE_TITLE_FONT B \}
-. if !d$EN_TITLE_SIZE_CHANGE \{ .ENDNOTE_TITLE_SIZE +0 \}
-. if !d$EN_NUMBER_FT \{ .ENDNOTE_NUMBER_FONT B \}
-. if !d$EN_LN_FT \{ .ENDNOTE_LINENUMBER_FONT R \}
-. if !d$EN_NUMBER_SIZE_CHANGE \{ .ENDNOTE_NUMBER_SIZE +0 \}
-. if !d$EN_LN_SIZE_CHANGE \{ .ENDNOTE_LINENUMBER_SIZE +0 \}
-. if !r#EN_PP_INDENT \{ .ENDNOTE_PARA_INDENT 1.5m \}
-. if !d$EN_SPACE \{ .ENDNOTE_SPACING 0 \}
+. if !r #EN_PS .ENDNOTE_PT_SIZE (\\n[#DOC_PT_SIZE]u)
+. if !d $EN_STRING_FT .ENDNOTE_STRING_FONT B
+. if !d $EN_STRING_SIZE_CHANGE .ENDNOTE_STRING_SIZE +1
+. if !d $EN_TITLE_FT .ENDNOTE_TITLE_FONT B
+. if !d $EN_TITLE_SIZE_CHANGE .ENDNOTE_TITLE_SIZE +0
+. if !d $EN_NUMBER_FT .ENDNOTE_NUMBER_FONT B
+. if !d $EN_LN_FT .ENDNOTE_LINENUMBER_FONT R
+. if !d $EN_NUMBER_SIZE_CHANGE .ENDNOTE_NUMBER_SIZE +0
+. if !d $EN_LN_SIZE_CHANGE .ENDNOTE_LINENUMBER_SIZE +0
+. if !r #EN_PP_INDENT .ENDNOTE_PARA_INDENT 1.5m
+. if !d $EN_SPACE .ENDNOTE_SPACING 0
.\" +Bibliography
-. if !r#BIB_LIST \{ .BIBLIOGRAPHY_TYPE LIST . \}
-. if !r#BIB_PS \{ .BIBLIOGRAPHY_PT_SIZE (\\n[#DOC_PT_SIZE]u) \}
-. if !d$BIB_STRING_FT \{ .BIBLIOGRAPHY_STRING_FONT B \}
-. if !d$BIB_STRING_SIZE_CHANGE \{ .BIBLIOGRAPHY_STRING_SIZE +1 \}
+. if !r #BIB_LIST .BIBLIOGRAPHY_TYPE PLAIN
+. if !r #BIB_PS .BIBLIOGRAPHY_PT_SIZE (\\n[#DOC_PT_SIZE]u)
+. if !d $BIB_STRING_FT .BIBLIOGRAPHY_STRING_FONT B
+. if !d $BIB_STRING_SIZE_CHANGE .BIBLIOGRAPHY_STRING_SIZE +1
.\" +Table of contents
-. if !d$TOC_FAM \{ .TOC_FAMILY \\*[$DOC_FAM] \}
-. if !r#TOC_PS \{ .TOC_PT_SIZE (\\n[#DOC_PT_SIZE]u) \}
-. if !d$TOC_LEAD \{ .TOC_LEAD \\n[#DOC_LEAD]u ADJUST \}
-. if !d$TOC_HEADER_FAM \{ .TOC_HEADER_FAMILY \\*[$TOC_FAM] \}
-. if !d$TOC_HEADER_SIZE_CHANGE \{ .TOC_HEADER_SIZE +4 \}
-. if !d$TOC_HEADER_FT \{ .TOC_HEADER_FONT B \}
-. if !d$TOC_TITLE_FAM \{ .TOC_TITLE_FAMILY \\*[$TOC_FAM] \}
-. if !d$TOC_PN_FAM \{ .TOC_PN_FAMILY \\*[$TOC_FAM] \}
-. if !d$TOC_HEAD_FAM \{ .TOC_HEAD_FAMILY \\*[$TOC_FAM] \}
-. if !d$TOC_SH_FAM \{ .TOC_SUBHEAD_FAMILY \\*[$TOC_FAM] \}
-. if !d$TOC_PH_FAM \{ .TOC_PARAHEAD_FAMILY \\*[$TOC_FAM] \}
-. if !d$TOC_TITLE_FT \{ .TOC_TITLE_FONT BI \}
-. if !d$TOC_PN_FT \{ .TOC_PN_FONT R \}
-. if !d$TOC_HEAD_FT \{ .TOC_HEAD_FONT B \}
-. if !d$TOC_SH_FT \{ .TOC_SUBHEAD_FONT R \}
-. if !d$TOC_PH_FT \{ .TOC_PARAHEAD_FONT I \}
-. if !d$TOC_TITLE_SIZE_CHANGE \{ .TOC_TITLE_SIZE +.5 \}
-. if !d$TOC_PN_SIZE_CHANGE \{ .TOC_PN_SIZE +0 \}
-. if !d$TOC_HEAD_SIZE_CHANGE \{ .TOC_HEAD_SIZE +.5 \}
-. if !d$TOC_SH_SIZE_CHANGE \{ .TOC_SUBHEAD_SIZE +0 \}
-. if !d$TOC_PH_SIZE_CHANGE \{ .TOC_PARAHEAD_SIZE +0 \}
-. ps \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE_CHANGE]
-. if !r#TOC_HEAD_INDENT \{ .TOC_HEAD_INDENT \w'\0\0.' \}
-. ps
-. ps \\n[#TOC_PS]u\\*[$TOC_HEAD_SIZE_CHANGE]
-. if !r#TOC_SH_INDENT \{ .TOC_SUBHEAD_INDENT \\n[#TOC_HEAD_INDENT]+\w'\0\0.' \}
-. ps
-. ps \\n[#TOC_PS]u\\*[$TOC_SH_SIZE_CHANGE]
-. if !r#TOC_PH_INDENT \{ .TOC_PARAHEAD_INDENT \\n[#TOC_SH_INDENT]+\w'\0\0.' \}
-. ps
+. if !d $TOC_FAM .TOC_FAMILY \\*[$DOC_FAM]
+. if !r #TOC_PS .TOC_PT_SIZE (\\n[#DOC_PT_SIZE]u)
+. if '\\*[$TOC_LEAD]'' .TOC_LEAD \\n[#DOC@LEAD]u ADJUST
+. if !d $TOC_HEADER_FAM .TOC_HEADER_FAMILY \\*[$TOC_FAM]
+. if !d $TOC_HEADER_SIZE_CHANGE .TOC_HEADER_SIZE +4
+. if !d $TOC_HEADER_FT .TOC_HEADER_FONT B
+. if !d $TOC_PN_FAM .TOC_PN_FAMILY \\*[$TOC_FAM]
+. if !d $TOC_PN_FT .TOC_PN_FONT R
+. if !d $TOC_PN_SIZE_CHANGE .TOC_PN_SIZE +0
. \}
.\" +Refer support
-. if !r#EN_REF \{ .nr #FN_REF 1 \}
-. if !d$REF_FN_INDENT \{\
-. if \\n[#PRINT_STYLE]=1 \{ .INDENT_REFS FOOTNOTE .5i \}
-. if \\n[#PRINT_STYLE]=2 \{ .INDENT_REFS FOOTNOTE 2m \}
+. if !r #EN_REF .nr #FN_REF 1
+. if !d $REF_FN_INDENT \{\
+. if \\n[#PRINT_STYLE]=1 .INDENT_REFS FOOTNOTE .5i
+. if \\n[#PRINT_STYLE]=2 .INDENT_REFS FOOTNOTE 2m
. \}
-. if !d$REF_EN_INDENT \{\
-. if \\n[#PRINT_STYLE]=1 \{ .INDENT_REFS ENDNOTE .5i \}
-. if \\n[#PRINT_STYLE]=2 \{ .INDENT_REFS ENDNOTE 2m \}
+. if !d $REF_EN_INDENT \{\
+. if \\n[#PRINT_STYLE]=1 .INDENT_REFS ENDNOTE .5i
+. if \\n[#PRINT_STYLE]=2 .INDENT_REFS ENDNOTE 2m
. \}
-. if !d$REF_BIB_INDENT \{\
-. if \\n[#PRINT_STYLE]=1 \{ .INDENT_REFS BIBLIO .5i \}
-. if \\n[#PRINT_STYLE]=2 \{ .INDENT_REFS BIBLIO 2m \}
+. if !d $REF_BIB_INDENT \{\
+. if \\n[#PRINT_STYLE]=1 .INDENT_REFS BIBLIO .5i
+. if \\n[#PRINT_STYLE]=2 .INDENT_REFS BIBLIO 2m
. \}
.\" Define strings for idem entries
. if \\n[#PRINT_STYLE]=1 .char \[idem] \[hy]\[hy]\[hy]
. if \\n[#PRINT_STYLE]=2 .char \[idem] \v'-.3m'\l'3m'\v'.3m'
.\" Adjust doc leading for PRINTSTYLE TYPESET
. if \\n[#PRINT_STYLE]=2 \{\
-. ie \\n[#ADJ_DOC_LEAD]=1 \{ .DOC_LEAD_ADJUST \}
-. el \{ . \}
+. ie \\n[#ADJ_DOC_LEAD]=1 .DOC_LEAD_ADJUST
+. el .
. \}
.\" This diversion is to get a value for #FN_AUTOLEAD
. di NULL
. ev NULL
. if \\n[#PRINT_STYLE]=1 \{\
. ps \\*[$TYPEWRITER_PS]
-. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#ORIGINAL_DOC_LEAD]u \}
-. el \{ .vs \\n[#ORIGINAL_DOC_LEAD]u/2u \}
+. ie \\n[#SINGLE_SPACE]=1 .vs \\n[#ORIGINAL_DOC_LEAD]u
+. el .vs \\n[#ORIGINAL_DOC_LEAD]u/2u
. \}
. if \\n[#PRINT_STYLE]=2 \{\
. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$FN_SIZE_CHANGE]
. AUTOLEAD \\n[#FN_AUTOLEAD]
. \}
. nr #FN_LEAD \\n[#LEAD]
-. if \\n[#PRINT_STYLE]=2 \{ .LS \\n[#DOC_LEAD]u \}
+. if \\n[#PRINT_STYLE]=2 .LS \\n[#DOC_LEAD]u
. ev
. di
. ie !\\n[#COLLATE] \{\
@@ -5976,11 +5858,11 @@ y\\R'#DESCENDER \\n[.cdp]'
. TRAPS
.\" Endnote, bibliography and toc leading
. nr #OK_PROCESS_LEAD 1
-. nr #RESTORE_DOC_LEAD \\n(.v
+. nr #RESTORE_DOC_LEAD \\n[.v]
. nr #RESTORE_B_MARGIN \\n[#B_MARGIN]
. if \\n[#PRINT_STYLE]=1 \{\
. ie \\n[#SINGLE_SPACE] \{\
-. ENDNOTE_LEAD 12 ADJUST
+. ENDNOTE_LEAD 12 ADJUST
. BIBLIOGRAPHY_LEAD 12 ADJUST
. \}
. el \{\
@@ -5991,14 +5873,14 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. \}
. if \\n[#PRINT_STYLE]=2 \{\
-. ie !d$EN_LEAD .ENDNOTE_LEAD \\n[#UNADJUSTED_DOC_LEAD]u ADJUST
+. ie !d $EN_LEAD .ENDNOTE_LEAD \\n[#UNADJUSTED_DOC_LEAD]u ADJUST
. el .ENDNOTE_LEAD \\*[$EN_LEAD] \\*[$ADJUST_EN_LEAD]
-. ie !d$BIB_LEAD .BIBLIOGRAPHY_LEAD \\n[#UNADJUSTED_DOC_LEAD]u ADJUST
+. ie !d $BIB_LEAD .BIBLIOGRAPHY_LEAD \\n[#UNADJUSTED_DOC_LEAD]u ADJUST
. el .BIBLIOGRAPHY_LEAD \\*[$BIB_LEAD] \\*[$ADJUST_BIB_LEAD]
-. ie !d$TOC_LEAD .TOC_LEAD \\n[#UNADJUSTED_DOC_LEAD]u \\*[$ADJUST_TOC_LEAD]
+. ie !d $TOC_LEAD .TOC_LEAD \\n[#UNADJUSTED_DOC_LEAD]u \\*[$ADJUST_TOC_LEAD]
. el .TOC_LEAD \\*[$TOC_LEAD] \\*[$ADJUST_TOC_LEAD]
. \}
-. ie !d$BIB_SPACE \{ .BIBLIOGRAPHY_SPACING 0 \}
+. ie !d $BIB_SPACE .BIBLIOGRAPHY_SPACING 0
. el \{\
. if \\n[#DEFER_BIB_SPACING]=1 \{\
. BIBLIOGRAPHY_SPACING \\*[$BIB_SPACE]
@@ -6018,7 +5900,28 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. \}
. \}
-. if \\n[#PRINT_STYLE]=1 \{ .nr #IGNORE 1 \}
+.\" Set default heading and toc-entry family if not done already
+. nr #HD_LEVEL 0 1 \" loop step
+. nr #LOOP 9 \" loop count
+. while \\n+[#HD_LEVEL]<=\\n[#LOOP] \{\
+. if '\\*[$HEAD_\\n[#HD_LEVEL]_FAM]'' \
+. ds $HEAD_\\n[#HD_LEVEL]_FAM \\*[$DOC_FAM]
+. if '\\*[$HEAD_\\n[#HD_LEVEL]_BASELINE_ADJ]'' \
+. ds $HEAD_\\n[#HD_LEVEL]_BASELINE_ADJ \\n[.v]/10
+. if '\\*[$TOC_HEAD_\\n[#HD_LEVEL]_FAM]'' \
+. ds $TOC_HEAD_\\n[#HD_LEVEL]_FAM \\*[$DOC_FAM]
+. \}
+. if '\\*[$TOC_TITLE_FAM]'' .ds $TOC_TITLE_FAM \\*[$DOC_FAM]
+.\" Re-run MNinit to capture strings and registers set in DEFAULTS.
+. if !'\\*[$MN-arg1]'' \{\
+. MNinit \
+\\*[$MN-arg1] \\*[$MN-arg2] \
+\\*[$MN-arg3] \\*[$MN-arg4] \
+\\*[$MN-arg5] \\*[$MN-arg6] \
+\\*[$MN-arg7] \\*[$MN-arg8] \
+\\*[$MN-arg9]
+. \}
+. if \\n[#PRINT_STYLE]=1 .nr #IGNORE 1
.END
\#
\# ====================================================================
@@ -6030,7 +5933,7 @@ y\\R'#DESCENDER \\n[.cdp]'
\# *Arguments:
\# <none>
\# *Function:
-\# Reads in default document style parameters and any parameter
+\# Reads in default document style parameters and any parameters
\# the user has changed before issuing START.
\# Using the information gathered in the opening macros,
\# prints appropriate title (or chapter #), subtitle, author
@@ -6046,28 +5949,49 @@ y\\R'#DESCENDER \\n[.cdp]'
\# First, define some strings for point sizes
\#
\# Doc cover
-.ds $DOC_COVER_AUTHOR_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_AUTHOR_SIZE_CHANGE]
-.ds $DOC_COVER_CHAPTER_TITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_CHAPTER_TITLE_SIZE_CHANGE]
-.ds $DOC_COVER_COPYRIGHT_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_COPYRIGHT_SIZE_CHANGE]
-.ds $DOC_COVER_DOCTYPE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_DOCTYPE_SIZE_CHANGE]
-.ds $DOC_COVER_MISC_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_MISC_SIZE_CHANGE]
-.ds $DOC_COVER_SUBTITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_SUBTITLE_SIZE_CHANGE]
-.ds $DOC_COVER_TITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_TITLE_SIZE_CHANGE]
+\#
+.ds $DOC_COVER_AUTHOR_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_AUTHOR_SIZE_CHANGE]
+.ds $DOC_COVER_CHAPTER_TITLE_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_CHAPTER_TITLE_SIZE_CHANGE]
+.ds $DOC_COVER_COPYRIGHT_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_COPYRIGHT_SIZE_CHANGE]
+.ds $DOC_COVER_DOCTYPE_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_DOCTYPE_SIZE_CHANGE]
+.ds $DOC_COVER_MISC_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_MISC_SIZE_CHANGE]
+.ds $DOC_COVER_SUBTITLE_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_SUBTITLE_SIZE_CHANGE]
+.ds $DOC_COVER_TITLE_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$DOC_COVER_TITLE_SIZE_CHANGE]
\# Cover
-.ds $COVER_AUTHOR_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_AUTHOR_SIZE_CHANGE]
-.ds $COVER_CHAPTER_TITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_CHAPTER_TITLE_SIZE_CHANGE]
-.ds $COVER_COPYRIGHT_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_COPYRIGHT_SIZE_CHANGE]
-.ds $COVER_DOCTYPE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_DOCTYPE_SIZE_CHANGE]
-.ds $COVER_MISC_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_MISC_SIZE_CHANGE]
-.ds $COVER_SUBTITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_SUBTITLE_SIZE_CHANGE]
-.ds $COVER_TITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COVER_TITLE_SIZE_CHANGE]
+.ds $COVER_AUTHOR_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$COVER_AUTHOR_SIZE_CHANGE]
+.ds $COVER_CHAPTER_TITLE_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$COVER_CHAPTER_TITLE_SIZE_CHANGE]
+.ds $COVER_COPYRIGHT_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$COVER_COPYRIGHT_SIZE_CHANGE]
+.ds $COVER_DOCTYPE_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$COVER_DOCTYPE_SIZE_CHANGE]
+.ds $COVER_MISC_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$COVER_MISC_SIZE_CHANGE]
+.ds $COVER_SUBTITLE_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$COVER_SUBTITLE_SIZE_CHANGE]
+.ds $COVER_TITLE_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$COVER_TITLE_SIZE_CHANGE]
\# Docheader
-.ds $AUTHOR_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$AUTHOR_SIZE_CHANGE]
-.ds $CHAPTER_TITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$CHAPTER_TITLE_SIZE_CHANGE]
-.ds $COPYRIGHT_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$COPYRIGHT_SIZE_CHANGE]
-.ds $DOCTYPE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$DOCTYPE_SIZE_CHANGE]
-.ds $SUBTITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$SUBTITLE_SIZE_CHANGE]
-.ds $TITLE_PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$TITLE_SIZE_CHANGE]
+.ds $AUTHOR_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$AUTHOR_SIZE_CHANGE]
+.ds $CHAPTER_TITLE_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$CHAPTER_TITLE_SIZE_CHANGE]
+.ds $COPYRIGHT_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$COPYRIGHT_SIZE_CHANGE]
+.ds $DOCTYPE_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$DOCTYPE_SIZE_CHANGE]
+.ds $SUBTITLE_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$SUBTITLE_SIZE_CHANGE]
+.ds $TITLE_PT_SIZE \
+ \\n[#DOC_PT_SIZE]u\\*[$TITLE_SIZE_CHANGE]
\#
\# Next, some utility macros for various routines to prevent repetition
\#
@@ -6076,15 +6000,15 @@ y\\R'#DESCENDER \\n[.cdp]'
. if '\\$0'COVER_H_POS' .ds $CALLING_MACRO COVER
. if '\\$0'DOC_COVER_H_POS' .ds $CALLING_MACRO DOC_COVER
. ie !'\\*[$\\*[$CALLING_MACRO]_QUAD]'' \{\
-. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'L' \{ .LEFT \}
-. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'LEFT' \{ .LEFT \}
-. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'R' \{ .RIGHT \}
-. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'RIGHT' \{ .RIGHT \}
-. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'C' \{ .RIGHT \}
-. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'CENTER' \{ .CENTER \}
-. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'CENTRE' \{ .CENTER \}
+. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'L' .LEFT
+. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'LEFT' .LEFT
+. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'R' .RIGHT
+. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'RIGHT' .RIGHT
+. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'C' .RIGHT
+. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'CENTER' .CENTER
+. if '\\*[$\\*[$CALLING_MACRO]_QUAD]'CENTRE' .CENTER
. \}
-. el \{ .CENTER \}
+. el .CENTER
.END
\#
\# Aliases for DOC_HEADER_QUAD
@@ -6099,21 +6023,21 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #AUTHORS \\n[#AUTHOR_DOCCOVER_NUM]
. nr #NEXT_AUTHOR 0 1
. while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
-. ie \\n[#DOC_COVER_AUTHOR_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_AUTHOR_COLOR]]\\*[$AUTHOR_DOCCOVER_\\n+[#NEXT_AUTHOR]]\m[]
-. \}
-. el \{ .PRINT \\*[$AUTHOR_DOCCOVER_\\n+[#NEXT_AUTHOR]] \}
-.\}
+. ie \\n[#DOC_COVER_AUTHOR_COLOR]=1 \
+. PRINT \
+\m[\\*[$DOC_COVER_AUTHOR_COLOR]]\\*[$AUTHOR_DOCCOVER_\\n+[#NEXT_AUTHOR]]\m[]
+. el .PRINT \\*[$AUTHOR_DOCCOVER_\\n+[#NEXT_AUTHOR]]
+. \}
. \}
. el \{\
. nr #AUTHORS \\n[#AUTHOR_NUM]
. nr #NEXT_AUTHOR 0 1
. while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
-. ie \\n[#DOC_COVER_AUTHOR_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[]
-. \}
-. el \{ .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]] \}
-.\}
+. ie \\n[#DOC_COVER_AUTHOR_COLOR]=1 \
+. PRINT \
+\m[\\*[$DOC_COVER_AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[]
+. el .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]
+. \}
. \}
. return
. \}
@@ -6122,21 +6046,21 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #AUTHORS \\n[#AUTHOR_COVER_NUM]
. nr #NEXT_AUTHOR 0 1
. while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
-. ie \\n[#COVER_AUTHOR_COLOR]=1 \{\
-. PRINT \m[\\*[$COVER_AUTHOR_COLOR]]\\*[$AUTHOR_COVER_\\n+[#NEXT_AUTHOR]]\m[]
-. \}
-. el \{ .PRINT \\*[$AUTHOR_COVER_\\n+[#NEXT_AUTHOR]] \}
-.\}
+. ie \\n[#COVER_AUTHOR_COLOR]=1 \
+. PRINT \
+\m[\\*[$COVER_AUTHOR_COLOR]]\\*[$AUTHOR_COVER_\\n+[#NEXT_AUTHOR]]\m[]
+. el .PRINT \\*[$AUTHOR_COVER_\\n+[#NEXT_AUTHOR]]
+. \}
. \}
. el \{\
. nr #AUTHORS \\n[#AUTHOR_NUM]
. nr #NEXT_AUTHOR 0 1
. while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
-. ie \\n[#COVER_AUTHOR_COLOR]=1 \{\
-. PRINT \m[\\*[$COVER_AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[]
-. \}
-. el \{ .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]] \}
-.\}
+. ie \\n[#COVER_AUTHOR_COLOR]=1 \
+. PRINT \
+\m[\\*[$COVER_AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[]
+. el .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]
+. \}
. \}
. return
. \}
@@ -6145,11 +6069,10 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #AUTHORS \\n[#AUTHOR_NUM]
. nr #NEXT_AUTHOR 0 1
. while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
-. ie \\n[#AUTHOR_COLOR]=1 \{\
+. ie \\n[#AUTHOR_COLOR]=1 \
. PRINT \m[\\*[$AUTHOR_COLOR]]\\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]\m[]
-. \}
-. el \{ .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]] \}
-.\}
+. el .PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]
+. \}
. \}
.END
\#
@@ -6162,13 +6085,10 @@ y\\R'#DESCENDER \\n[.cdp]'
. LS \\n[#DOCHEADER_LEAD]u
. nr #ARG_NUM 0 1
. while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#TITLE_COLOR]=1 \{\
+. ie \\n[#TITLE_COLOR]=1 \
. PRINT "\m[\\*[$TITLE_COLOR]]\\*[$TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{\
-. PRINT "\\*[$TITLE_\\n[#ARG_NUM]]
-. \}
-.\}
+. el .PRINT "\\*[$TITLE_\\n[#ARG_NUM]]
+. \}
. \}
. if !'\\*[$SUBTITLE_1]'' \{\
. FAMILY \\*[$SUBTITLE_FAM]
@@ -6176,29 +6096,24 @@ y\\R'#DESCENDER \\n[.cdp]'
. PT_SIZE \\*[$SUBTITLE_PT_SIZE]
. nr #ARG_NUM 0 1
. while \\n[#SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#SUBTITLE_COLOR]=1 \{\
+. ie \\n[#SUBTITLE_COLOR]=1 \
. PRINT "\m[\\*[$SUBTITLE_COLOR]]\\*[$SUBTITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{\
-. PRINT "\\*[$SUBTITLE_\\n[#ARG_NUM]]
-. \}
-.\}
+. el .PRINT "\\*[$SUBTITLE_\\n[#ARG_NUM]]
+. \}
. \}
. if !'\\*[$AUTHOR_1]'' \{\
. FAMILY \\*[$AUTHOR_FAM]
. FT \\*[$AUTHOR_FT]
. PT_SIZE \\*[$AUTHOR_PT_SIZE]
-. ie \\n[#ATTRIBUTE_COLOR]=1 \{\
+. ie \\n[#ATTRIBUTE_COLOR]=1 \
. PRINT \&\m[\\*[$ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[]
-. \}
-. el \{ .PRINT \&\\*[$ATTRIBUTE_STRING] \}
+. el .PRINT \&\\*[$ATTRIBUTE_STRING]
. PRINT_AUTHORS
. \}
. FAMILY \\*[$DOC_FAM]
. FT R
.END
\#
-\#
.MAC CHAPTER_DOCHEADER END
. DOC_HEADER_QUAD
. FAMILY \\*[$TITLE_FAM]
@@ -6216,48 +6131,45 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. nr #ARG_NUM 0 1
. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{ .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]] \}
-.\}
+. ie \\n[#TITLE_COLOR]=1 \
+. PRINT \
+\m[\\*[$TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
+. el .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
+. \}
. \}
. el \{\
-. ie \\n[#TITLE_COLOR]=1 \{\
+. ie \\n[#TITLE_COLOR]=1 \
. PRINT \m[\\*[$TITLE_COLOR]]\\*[$CHAPTER_STRING]\m[]
-. \}
-. el \{ .PRINT \\*[$CHAPTER_STRING] \}
+. el .PRINT \\*[$CHAPTER_STRING]
. \}
. \}
.\" Chapter string, possibly with a chapter title
. el \{\
-. ie \\n[#TITLE_COLOR]=1 \{\
+. ie \\n[#TITLE_COLOR]=1 \
. PRINT \m[\\*[$TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[]
-. \}
-. el \{ .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] \}
+. el .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
. if !'\\*[$CHAPTER_TITLE_1]'' \{\
. if \\n[#PRINT_STYLE]=2 \{\
. FAMILY \\*[$CHAPTER_TITLE_FAM]
. FT \\*[$CHAPTER_TITLE_FT]
. PT_SIZE \\*[$CHAPTER_TITLE_PT_SIZE]
. LS \\n[#DOCHEADER_LEAD]u
-. ALD \\n[.v]u/4u \"Put a little space before the chapter title
+. ALD \\n[.v]u/4u \" Put a little space before the chapter title
. \}
. nr #ARG_NUM 0 1
. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#CHAPTER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$CHAPTER_TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{ .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]] \}
-.\}
-. RLD \\n[#DOC_LEAD]u \" Just looks better this way
+. ie \\n[#CHAPTER_TITLE_COLOR]=1 \
+. PRINT \
+\m[\\*[$CHAPTER_TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
+. el .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
+. \}
+. RLD \\n[#DOC_LEAD]u \" Just looks better this way
. \}
. \}
. FAMILY \\*[$DOC_FAM]
. FT R
.END
\#
-\#
.MAC NAMED_DOCHEADER END
. DOC_HEADER_QUAD
. FAMILY \\*[$TITLE_FAM]
@@ -6267,13 +6179,10 @@ y\\R'#DESCENDER \\n[.cdp]'
. if !'\\*[$TITLE_1]'' \{\
. nr #ARG_NUM 0 1
. while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#TITLE_COLOR]=1 \{\
+. ie \\n[#TITLE_COLOR]=1 \
. PRINT "\m[\\*[$TITLE_COLOR]]\\*[$TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{\
-. PRINT "\\*[$TITLE_\\n[#ARG_NUM]]
-. \}
-.\}
+. el .PRINT "\\*[$TITLE_\\n[#ARG_NUM]]
+. \}
. \}
. if !'\\*[$SUBTITLE]'' \{\
. FAMILY \\*[$SUBTITLE_FAM]
@@ -6281,22 +6190,18 @@ y\\R'#DESCENDER \\n[.cdp]'
. PT_SIZE \\*[$SUBTITLE_PT_SIZE]
. nr #ARG_NUM 0 1
. while \\n[#SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#SUBTITLE_COLOR]=1 \{\
+. ie \\n[#SUBTITLE_COLOR]=1 \
. PRINT "\m[\\*[$SUBTITLE_COLOR]]\\*[$SUBTITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{\
-. PRINT "\\*[$SUBTITLE_\\n[#ARG_NUM]]
-. \}
-.\}
+. el .PRINT "\\*[$SUBTITLE_\\n[#ARG_NUM]]
+. \}
. \}
. if !'\\*[$AUTHOR_1]'' \{\
. FAMILY \\*[$AUTHOR_FAM]
. FT \\*[$AUTHOR_FT]
. PT_SIZE \\*[$AUTHOR_PT_SIZE]
-. ie \\n[#ATTRIBUTE_COLOR]=1 \{\
+. ie \\n[#ATTRIBUTE_COLOR]=1 \
. PRINT \&\m[\\*[$ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[]
-. \}
-. el \{ .PRINT \&\\*[$ATTRIBUTE_STRING] \}
+. el .PRINT \&\\*[$ATTRIBUTE_STRING]
. PRINT_AUTHORS
. \}
. FAMILY \\*[$DOCTYPE_FAM]
@@ -6305,102 +6210,107 @@ y\\R'#DESCENDER \\n[.cdp]'
. LS \\n[#DOCHEADER_LEAD]u
. ALD \\n[#DOCHEADER_LEAD]u
. nr #FROM_DOCTYPE 1
-. if \\n[#DOCTYPE_COLOR]=1 \{\
-. COLOR \\*[$DOCTYPE_COLOR]
-. \}
-. ie \\n[#DOCTYPE_UNDERLINE]=1 \{\
+. if \\n[#DOCTYPE_COLOR]=1 .COLOR \\*[$DOCTYPE_COLOR]
+. ie \\n[#DOCTYPE_UNDERLINE]=1 \
. UNDERSCORE \\*[$DOCTYPE_UNDERLINE_GAP] "\\*[$DOC_TYPE]"
-. \}
-. el \{\
-. PRINT "\\*[$DOC_TYPE]"
-. \}
+. el .PRINT "\\*[$DOC_TYPE]"
. COLOR black
. FAMILY \\*[$DOC_FAM]
. FT R
. rr #FROM_DOCTYPE
.END
\#
-\#
\# COVER PAGE
\# ----------
\# *Arguments:
-\# TITLE | DOCTITLE | CHAPTER | CHAPTER_TITLE | CHAPTER+TITLE | COVERTITLE ...
-\# ... [ SUBTITLE AUTHOR DOCTYPE COPYRIGHT MISC BLANKPAGE ]
+\# TITLE | DOCTITLE | CHAPTER | CHAPTER_TITLE | CHAPTER+TITLE | COVERTITLE \
+\# [ SUBTITLE AUTHOR DOCTYPE COPYRIGHT MISC BLANKPAGE ]
\# *Function:
\# Toggles the number register for each cover page element
\# passed as an argument.
\# *Notes:
\# TITLE, DOCTITLE, CHAPTER, CHAPTER_TITLE or CHAPTER+TITLE must
\# be supplied. After that, users may enter as many or as few of
-\# the arguments as they like; however, the arguments must appear
-\# in the order given above. BLANKPAGE, as the final argument,
-\# inserts a blank page after the cover.
+\# the arguments as they like. BLANKPAGE inserts a blank page
+\# after the cover.
\#
\# If called as DOC_COVER, performs the same operations, but
\# applies everything to a doc cover.
\#
.MAC COVER END
. ie '\\$0'DOC_COVER' \{\
-. if '\\$\\n[#NUM_ARGS]'BLANKPAGE' \{ .nr #DOCCOVER_BLANKPAGE 1 \}
. nr #DOC_COVER 1
-. if '\\$1'TITLE' \{ .nr #DOC_COVER_TITLE 1 \}
-. if '\\$1'DOCTITLE' \{ .nr #DOC_COVER_TITLE 2 \}
-. if '\\$1'CHAPTER' \{ .nr #DOC_COVER_TITLE 3 \}
-. if '\\$1'CHAPTER_TITLE' \{ .nr #DOC_COVER_TITLE 4 \}
-. if '\\$1'CHAPTER+TITLE' \{ .nr #DOC_COVER_TITLE 5 \}
-. if '\\$1'COVERTITLE' \{ .nr #DOC_COVER_TITLE 6 \}
-. if '\\$2'SUBTITLE' \{ .nr #DOC_COVER_SUBTITLE 1 \}
-. if '\\$2'AUTHOR' \{ .nr #DOC_COVER_AUTHOR 1 \}
-. if '\\$2'DOCTYPE' \{ .nr #DOC_COVER_DOCTYPE 1 \}
-. if '\\$2'COPYRIGHT' \{ .nr #DOC_COVER_COPYRIGHT 1 \}
-. if '\\$2'MISC' \{ .nr #DOC_COVER_MISC 1 \}
-. if '\\$3'AUTHOR' \{ .nr #DOC_COVER_AUTHOR 1 \}
-. if '\\$3'DOCTYPE' \{ .nr #DOC_COVER_DOCTYPE 1 \}
-. if '\\$3'COPYRIGHT' \{ .nr #DOC_COVER_COPYRIGHT 1 \}
-. if '\\$3'MISC' \{ .nr #DOC_COVER_MISC 1 \}
-. if '\\$4'DOCTYPE' \{ .nr #DOC_COVER_DOCTYPE 1 \}
-. if '\\$4'COPYRIGHT' \{ .nr #DOC_COVER_COPYRIGHT 1 \}
-. if '\\$4'MISC' \{ .nr #DOC_COVER_MISC 1 \}
-. if '\\$5'COPYRIGHT' \{ .nr #DOC_COVER_COPYRIGHT 1 \}
-. if '\\$5'MISC' \{ .nr #DOC_COVER_MISC 1 \}
-. if '\\$6'MISC' \{ .nr #DOC_COVER_MISC 1 \}
+. ds DOC_ DOC_
. \}
-. el \{\
-. if '\\$\\n[#NUM_ARGS]'BLANKPAGE' \{ .nr #COVER_BLANKPAGE 1 \}
-. nr #COVER 1
-. if '\\$1'TITLE' \{ .nr #COVER_TITLE 1 \}
-. if '\\$1'DOCTITLE' \{ .nr #COVER_TITLE 2 \}
-. if '\\$1'CHAPTER' \{ .nr #COVER_TITLE 3 \}
-. if '\\$1'CHAPTER_TITLE' \{ .nr #COVER_TITLE 4 \}
-. if '\\$1'CHAPTER+TITLE' \{ .nr #COVER_TITLE 5 \}
-. if '\\$1'COVERTITLE' \{ .nr #COVER_TITLE 6 \}
-. if '\\$2'SUBTITLE' \{ .nr #COVER_SUBTITLE 1 \}
-. if '\\$2'AUTHOR' \{ .nr #COVER_AUTHOR 1 \}
-. if '\\$2'DOCTYPE' \{ .nr #COVER_DOCTYPE 1 \}
-. if '\\$2'COPYRIGHT' \{ .nr #COVER_COPYRIGHT 1 \}
-. if '\\$2'MISC' \{ .nr #COVER_MISC 1 \}
-. if '\\$3'AUTHOR' \{ .nr #COVER_AUTHOR 1 \}
-. if '\\$3'DOCTYPE' \{ .nr #COVER_DOCTYPE 1 \}
-. if '\\$3'COPYRIGHT' \{ .nr #COVER_COPYRIGHT 1 \}
-. if '\\$3'MISC' \{ .nr #COVER_MISC 1 \}
-. if '\\$4'DOCTYPE' \{ .nr #COVER_DOCTYPE 1 \}
-. if '\\$4'COPYRIGHT' \{ .nr #COVER_COPYRIGHT 1 \}
-. if '\\$4'MISC' \{ .nr #COVER_MISC 1 \}
-. if '\\$5'COPYRIGHT' \{ .nr #COVER_COPYRIGHT 1 \}
-. if '\\$5'MISC' \{ .nr #COVER_MISC 1 \}
-. if '\\$6'MISC' \{ .nr #COVER_MISC 1 \}
+. el .nr #COVER 1
+. nr #ARG_NUM 0 1
+. nr #COVER_ITEM \\n[#NUM_ARGS] \"loop count
+. while \\n+[#ARG_NUM]<=\\n[#COVER_ITEM] \{\
+. if '\\$1'TITLE' \{\
+. nr #\\*[DOC_]COVER_TITLE 1
+. shift
+. \}
+. if '\\$1'DOCTITLE' \{\
+. nr #\\*[DOC_]COVER_TITLE 2
+. shift
+. \}
+. if '\\$1'CHAPTER' \{\
+. nr #\\*[DOC_]COVER_TITLE 3
+. shift
+. \}
+. if '\\$1'CHAPTER_TITLE' \{\
+. nr #\\*[DOC_]COVER_TITLE 4
+. shift
+. \}
+. if '\\$1'CHAPTER+TITLE' \{\
+. nr #\\*[DOC_]COVER_TITLE 5
+. shift
+. \}
+. if '\\$1'\\*[DOC_]COVERTITLE' \{\
+. nr #\\*[DOC_]COVER_TITLE 6
+. shift
+. \}
+. if '\\$1'SUBTITLE' \{\
+. nr #\\*[DOC_]COVER_SUBTITLE 1
+. shift
+. \}
+. if '\\$1'AUTHOR' \{\
+. nr #\\*[DOC_]COVER_AUTHOR 1
+. shift
+. \}
+. if '\\$1'DOCTYPE' \{\
+. nr #\\*[DOC_]COVER_DOCTYPE 1
+. shift
+. \}
+. if '\\$1'COPYRIGHT' \{\
+. nr #\\*[DOC_]COVER_COPYRIGHT 1
+. shift
+. \}
+. if '\\$1'MISC' \{\
+. nr #\\*[DOC_]COVER_MISC 1
+. shift
+. \}
+. if '\\$1'PDF_OUTLINE_LABEL' \{\
+. shift
+. ds $PDF_\\*[DOC_]COVER_LABEL \\$1
+. shift
+. \}
+. if '\\$1'BLANKPAGE' \{\
+. nr #\\*[DOC_]COVER_BLANKPAGE 1
+. shift
+. \}
. \}
+. if '\\$0'DOC_COVER' .rm DOC_
.END
\#
-\#
.MAC COVERTITLE END
-. ie '\\$0'DOC_COVERTITLE' \{\
+. ie '\\$0'DOC_COVERTITLE' \{\
. ie \\n[#NUM_ARGS]=0 \{\
. if \\n[#DOC_COVER_TITLE_NUM] \{\
. nr #ITEM 0 1
. while \\n[#DOC_COVER_TITLE_NUM]>\\n[#ITEM] \{\
. rm $DOC_COVER_TITLE_\\n+[#ITEM]
-.\}
+. \}
. rr #DOC_COVER_TITLE_NUM
. rm $DOC_COVER_TITLE
. \}
@@ -6408,8 +6318,9 @@ y\\R'#DESCENDER \\n[.cdp]'
. el \{\
. nr #DOC_COVER_TITLE_NUM 0 1
. while \\n[#NUM_ARGS]>\\n[#DOC_COVER_TITLE_NUM] \{\
-. ds $DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
-.\}
+. ds \
+$DOC_COVER_TITLE_\\n+[#DOC_COVER_TITLE_NUM] \\$\\n[#DOC_COVER_TITLE_NUM]
+. \}
. ds $DOC_COVER_TITLE \\$*
. \}
. \}
@@ -6419,7 +6330,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #ITEM 0 1
. while \\n[#COVER_TITLE_NUM]>\\n[#ITEM] \{\
. rm $COVER_TITLE_\\n+[#ITEM]
-.\}
+. \}
. rr #COVER_TITLE_NUM
. rm $COVER_TITLE
. \}
@@ -6428,13 +6339,13 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #COVER_TITLE_NUM 0 1
. while \\n[#NUM_ARGS]>\\n[#COVER_TITLE_NUM] \{\
. ds $COVER_TITLE_\\n+[#COVER_TITLE_NUM] \\$\\n[#COVER_TITLE_NUM]
-.\}
+. \}
. ds $COVER_TITLE \\$*
+.\" . if \\n[#DOCTITLE_NUM]=0 .PDF_TITLE \\*[$COVER_TITLE]
. \}
. \}
.END
\#
-\#
\# COVER PAGE LEADING
\# ------------------
\# *Arguments:
@@ -6448,26 +6359,21 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Default is +0, i.e. same as DOC_LEAD.
\#
.MAC COVER_LEAD END
-. ie '\\$0'DOC_COVER_LEAD' \{\
-. ds $DOC_COVER_LEAD_ADJ \\$1
-. \}
-. el \{\
-. ds $COVER_LEAD_ADJ \\$1
-. \}
+. ie '\\$0'DOC_COVER_LEAD' .ds $DOC_COVER_LEAD_ADJ \\$1
+. el .ds $COVER_LEAD_ADJ \\$1
.END
\#
\# MISCs get treated similarly to QUOTEs and BLOCKQUOTEs with respect to
\# leading
\#
.MAC MISC_AUTOLEAD END
-. if '\\$0'DOC_COVER_MISC_AUTOLEAD' \{ .nr #DOC_COVER_MISC_AUTOLEAD \\$1 \}
-. if '\\$0'COVER_MISC_AUTOLEAD' \{ .nr #COVER_MISC_AUTOLEAD \\$1 \}
+. if '\\$0'DOC_COVER_MISC_AUTOLEAD' .nr #DOC_COVER_MISC_AUTOLEAD \\$1
+. if '\\$0'COVER_MISC_AUTOLEAD' .nr #COVER_MISC_AUTOLEAD \\$1
.END
\#
.ALIAS DOC_COVER_MISC_AUTOLEAD MISC_AUTOLEAD
.ALIAS COVER_MISC_AUTOLEAD MISC_AUTOLEAD
\#
-\#
\# COVER PAGE START POSITION
\# -------------------------
\# *Arguments:
@@ -6483,15 +6389,10 @@ y\\R'#DESCENDER \\n[.cdp]'
\# down the page (setup in DO_COVER).
\#
.MAC COVER_ADVANCE END
-. ie '\\$0'DOC_COVER_ADVANCE' \{\
-. nr #DOC_COVER_START_POS (\\$1)
-. \}
-. el \{\
-. nr #COVER_START_POS (\\$1)
-. \}
+. ie '\\$0'DOC_COVER_ADVANCE' .nr #DOC_COVER_START_POS (\\$1)
+. el .nr #COVER_START_POS (\\$1)
.END
\#
-\#
\# UNDERLINE CONTROL
\# -----------------
\# *Arguments:
@@ -6506,17 +6407,24 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
.MAC _UNDERLINE END
. ie '\\$1'' \{\
-. if '\\$0'BIBLIOGRAPHY_STRING_UNDERLINE' \{ .nr #BIB_STRING_UNDERLINE 1 \}
-. if '\\$0'BIBLIOGRAPHY_STRING_UNDERSCORE' \{ .nr #BIB_STRING_UNDERLINE 1 \}
-. if '\\$0'COVER_UNDERLINE' \{ .nr #COVER_UNDERLINE 1 \}
-. if '\\$0'DOC_COVER_UNDERLINE' \{ .nr #DOCCOVER_UNDERLINE 1 \}
-. if '\\$0'DOCTYPE_UNDERLINE' \{ .nr #DOCTYPE_UNDERLINE 1 \}
-. if '\\$0'HEAD_UNDERLINE' \{ .nr #HEAD_UNDERLINE 1 \}
-. if '\\$0'HEAD_UNDERSCORE' \{ .nr #HEAD_UNDERLINE 1 \}
-. if '\\$0'ENDNOTE_STRING_UNDERLINE' \{ .nr #EN_STRING_UNDERLINE 1 \}
-. if '\\$0'ENDNOTE_STRING_UNDERSCORE' \{ .nr #EN_STRING_UNDERLINE 1 \}
-. if '\\$0'ENDNOTE_TITLE_UNDERLINE' \{ .nr #EN_TITLE_UNDERLINE 1 \}
-. if '\\$0'ENDNOTE_TITLE_UNDERSCORE' \{ .nr #EN_TITLE_UNDERLINE 1 \}
+. if '\\$0'BIBLIOGRAPHY_STRING_UNDERLINE' \
+. nr #BIB_STRING_UNDERLINE 1
+. if '\\$0'BIBLIOGRAPHY_STRING_UNDERSCORE' \
+. nr #BIB_STRING_UNDERLINE 1
+. if '\\$0'COVER_UNDERLINE' \
+. nr #COVER_UNDERLINE 1
+. if '\\$0'DOC_COVER_UNDERLINE' \
+. nr #DOC_COVER_UNDERLINE 1
+. if '\\$0'DOCTYPE_UNDERLINE' \
+. nr #DOCTYPE_UNDERLINE 1
+. if '\\$0'ENDNOTE_STRING_UNDERLINE' \
+. nr #EN_STRING_UNDERLINE 1
+. if '\\$0'ENDNOTE_STRING_UNDERSCORE' \
+. nr #EN_STRING_UNDERLINE 1
+. if '\\$0'ENDNOTE_TITLE_UNDERLINE' \
+. nr #EN_TITLE_UNDERLINE 1
+. if '\\$0'ENDNOTE_TITLE_UNDERSCORE' \
+. nr #EN_TITLE_UNDERLINE 1
. \}
. el \{\
. ie \\n[#NUM_ARGS]=1 \{\
@@ -6524,40 +6432,45 @@ y\\R'#DESCENDER \\n[.cdp]'
. substring $ARG -1
. ie \B'\\*[$ARG]' \{\
. if !\\n[#PRINT_STYLE]=1 \{\
-. if '\\$0'BIBLIOGRAPHY_STRING_UNDERLINE' \{ .BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT \\$1 \}
-. if '\\$0'BIBLIOGRAPHY_STRING_UNDERSCORE' \{ .BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT \\$1 \}
-. if '\\$0'COVER_UNDERLINE' \{ .COVER_UNDERLINE_WEIGHT \\$1 \}
-. if '\\$0'DOC_COVER_UNDERLINE' \{ .DOCCOVER_UNDERLINE_WEIGHT \\$1 \}
-. if '\\$0'DOCTYPE_UNDERLINE' \{ .DOCTYPE_UNDERLINE_WEIGHT \\$1 \}
-. if '\\$0'HEAD_UNDERLINE' \{ .HEAD_UNDERLINE_WEIGHT \\$1 \}
-. if '\\$0'HEAD_UNDERSCORE' \{ .HEAD_UNDERLINE_WEIGHT \\$1 \}
-. if '\\$0'ENDNOTE_STRING_UNDERLINE' \{ .ENDNOTE_STRING_UNDERLINE_WEIGHT \\$1 \}
-. if '\\$0'ENDNOTE_STRING_UNDERSCORE' \{ .ENDNOTE_STRING_UNDERLINE_WEIGHT \\$1 \}
-. if '\\$0'ENDNOTE_TITLE_UNDERLINE' \{ .ENDNOTE_TITLE_UNDERLINE_WEIGHT \\$1 \}
-. if '\\$0'ENDNOTE_TITLE_UNDERSCORE' \{ .ENDNOTE_TITLE_UNDERLINE_WEIGHT \\$1 \}
+. if '\\$0'BIBLIOGRAPHY_STRING_UNDERLINE' \
+. BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT \\$1
+. if '\\$0'BIBLIOGRAPHY_STRING_UNDERSCORE' \
+. BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT \\$1
+. if '\\$0'COVER_UNDERLINE' \
+. COVER_UNDERLINE_WEIGHT \\$1
+. if '\\$0'DOC_COVER_UNDERLINE' \
+. DOC_COVER_UNDERLINE_WEIGHT \\$1
+. if '\\$0'DOCTYPE_UNDERLINE' \
+. DOCTYPE_UNDERLINE_WEIGHT \\$1
+. if '\\$0'ENDNOTE_STRING_UNDERLINE' \
+. ENDNOTE_STRING_UNDERLINE_WEIGHT \\$1
+. if '\\$0'ENDNOTE_STRING_UNDERSCORE' \
+. ENDNOTE_STRING_UNDERLINE_WEIGHT \\$1
+. if '\\$0'ENDNOTE_TITLE_UNDERLINE' \
+. ENDNOTE_TITLE_UNDERLINE_WEIGHT \\$1
+. if '\\$0'ENDNOTE_TITLE_UNDERSCORE' \
+. ENDNOTE_TITLE_UNDERLINE_WEIGHT \\$1
. \}
. \}
. el \{\
. if '\\$0'BIBLIOGRAPHY_STRING_UNDERLINE' \{\
-. ie '\\$1'DOUBLE' \{ .nr #BIB_STRING_UNDERLINE 2 \}
-. el \{ .nr #BIB_STRING_UNDERLINE 0 \}
+. ie '\\$1'DOUBLE' .nr #BIB_STRING_UNDERLINE 2
+. el .nr #BIB_STRING_UNDERLINE 0
. \}
. if '\\$0'BIBLIOGRAPHY_STRING_UNDERSCORE' \{\
-. ie '\\$1'DOUBLE' \{ .nr #BIB_STRING_UNDERLINE 2 \}
-. el \{ .nr #BIB_STRING_UNDERLINE 0 \}
+. ie '\\$1'DOUBLE' .nr #BIB_STRING_UNDERLINE 2
+. el .nr #BIB_STRING_UNDERLINE 0
. \}
-. if '\\$0'COVER_UNDERLINE' \{ .nr #COVER_UNDERLINE 0 \}
-. if '\\$0'DOC_COVER_UNDERLINE' \{ .nr #DOCCOVER_UNDERLINE 0 \}
-. if '\\$0'DOCTYPE_UNDERLINE' \{ .nr #DOCTYPE_UNDERLINE 0 \}
-. if '\\$0'HEAD_UNDERLINE' \{ .nr #HEAD_UNDERLINE 0 \}
-. if '\\$0'HEAD_UNDERSCORE' \{ .nr #HEAD_UNDERLINE 0 \}
+. if '\\$0'COVER_UNDERLINE' .nr #COVER_UNDERLINE 0
+. if '\\$0'DOC_COVER_UNDERLINE' .nr #DOC_COVER_UNDERLINE 0
+. if '\\$0'DOCTYPE_UNDERLINE' .nr #DOCTYPE_UNDERLINE 0
. if '\\$0'ENDNOTE_STRING_UNDERLINE' \{\
-. ie '\\$1'DOUBLE' \{ .nr #EN_STRING_UNDERLINE 2 \}
-. el \{ .nr #EN_STRING_UNDERLINE 0 \}
+. ie '\\$1'DOUBLE' .nr #EN_STRING_UNDERLINE 2
+. el .nr #EN_STRING_UNDERLINE 0
. \}
. if '\\$0'ENDNOTE_STRING_UNDERSCORE' \{\
-. ie '\\$1'DOUBLE' \{ .nr #EN_STRING_UNDERLINE 2 \}
-. el \{ .nr #EN_STRING_UNDERLINE 0 \}
+. ie '\\$1'DOUBLE' .nr #EN_STRING_UNDERLINE 2
+. el .nr #EN_STRING_UNDERLINE 0
. \}
. \}
. \}
@@ -6577,47 +6490,33 @@ y\\R'#DESCENDER \\n[.cdp]'
. ds $BIB_STRING_RULE_GAP \\$3
. \}
. \}
-. if '\\$0'BIBLIOGRAPHY_STRING_UNDERSCORE' \{\
+. if '\\$0'BIBLIOGRAPHY_STRING_UNDERSCORE' \{\
. nr #BIB_STRING_UNDERLINE 1
. if '\\$1'DOUBLE' \{\
. nr #BIB_STRING_UNDERLINE 2
. shift
. \}
. BIBLIOGRAPHY_STRING_UNDERLINE_WEIGHT \\$1
-. if !'\\$2'' \{\
-. ds $BIB_STRING_UNDERLINE_GAP \\$2
-. \}
-. if !'\\$3'' \{\
-. ds $BIB_STRING_RULE_GAP \\$3
-. \}
+. if !'\\$2'' .ds $BIB_STRING_UNDERLINE_GAP \\$2
+. if !'\\$3'' .ds $BIB_STRING_RULE_GAP \\$3
. \}
. if '\\$0'COVER_UNDERLINE' \{\
. nr #COVER_UNDERLINE 1
-. COVER_UNDERLINE_WEIGHT \\$1
+. COVER_UNDERLINE_WEIGHT \\$1
. ds $COVER_UNDERLINE_GAP \\$2
. \}
. if '\\$0'DOC_COVER_UNDERLINE' \{\
-. nr #DOCCOVER_UNDERLINE 1
-. DOCCOVER_UNDERLINE_WEIGHT \\$1
-. ds $DOCCOVER_UNDERLINE_GAP \\$2
+. nr #DOC_COVER_UNDERLINE 1
+. DOC_COVER_UNDERLINE_WEIGHT \\$1
+. ds $DOC_COVER_UNDERLINE_GAP \\$2
. \}
. if '\\$0'DOCTYPE_UNDERLINE' \{\
. nr #DOCTYPE_UNDERLINE 1
-. DOCTYPE_UNDERLINE_WEIGHT \\$1
+. DOCTYPE_UNDERLINE_WEIGHT \\$1
. ds $DOCTYPE_UNDERLINE_GAP \\$2
. \}
-. if '\\$0'HEAD_UNDERLINE' \{\
-. nr #HEAD_UNDERLINE 1
-. HEAD_UNDERLINE_WEIGHT \\$1
-. ds $HEAD_UNDERLINE_GAP \\$2
-. \}
-. if '\\$0'HEAD_UNDERSCORE' \{\
-. nr #HEAD_UNDERLINE 1
-. HEAD_UNDERLINE_WEIGHT \\$1
-. ds $HEAD_UNDERLINE_GAP \\$2
-. \}
-\# ENDNOTE_STRING_UNDERLINE and ENDNOTE_STRING_UNDERSCORE are identical;
-\# the _UNDERSCORE version is left in for backward compatibility.
+.\" ENDNOTE_STRING_UNDERLINE and ENDNOTE_STRING_UNDERSCORE are identical;
+.\" _UNDERSCORE left in for backward compatibility.
. if '\\$0'ENDNOTE_STRING_UNDERLINE' \{\
. nr #EN_STRING_UNDERLINE 1
. if '\\$1'DOUBLE' \{\
@@ -6625,37 +6524,29 @@ y\\R'#DESCENDER \\n[.cdp]'
. shift
. \}
. ENDNOTE_STRING_UNDERLINE_WEIGHT \\$1
-. if !'\\$2'' \{\
-. ds $EN_STRING_UNDERLINE_GAP \\$2
-. \}
-. if !'\\$3'' \{\
-. ds $EN_STRING_RULE_GAP \\$3
-. \}
+. if !'\\$2'' .ds $EN_STRING_UNDERLINE_GAP \\$2
+. if !'\\$3'' .ds $EN_STRING_RULE_GAP \\$3
. \}
-. if '\\$0'ENDNOTE_STRING_UNDERSCORE' \{\
+. if '\\$0'ENDNOTE_STRING_UNDERSCORE' \{\
. nr #EN_STRING_UNDERLINE 1
. if '\\$1'DOUBLE' \{\
. nr #EN_STRING_UNDERLINE 2
. shift
. \}
. ENDNOTE_STRING_UNDERLINE_WEIGHT \\$1
-. if !'\\$2'' \{\
-. ds $EN_STRING_UNDERLINE_GAP \\$2
-. \}
-. if !'\\$3'' \{\
-. ds $EN_STRING_RULE_GAP \\$3
-. \}
+. if !'\\$2'' .ds $EN_STRING_UNDERLINE_GAP \\$2
+. if !'\\$3'' .ds $EN_STRING_RULE_GAP \\$3
. \}
-\# ENDNOTE_TITLE_UNDERLINE and ENDNOTE_TITLE_UNDERSCORE are identical;
-\# the _UNDERSCORE version is left in for backward compatibility.
+.\" ENDNOTE_TITLE_UNDERLINE and ENDNOTE_TITLE_UNDERSCORE are identical;
+.\" _UNDERSCORE version left in for backward compatibility.
. if '\\$0'ENDNOTE_TITLE_UNDERLINE' \{\
. nr #ENDNOTE_TITLE_UNDERLINE 1
-. ENDNOTE_TITLE_UNDERLINE_WEIGHT \\$1
+. ENDNOTE_TITLE_UNDERLINE_WEIGHT \\$1
. ds $EN_TITLE_UNDERLINE_GAP \\$2
. \}
. if '\\$0'ENDNOTE_TITLE_UNDERSCORE' \{\
. nr #ENDNOTE_TITLE_UNDERLINE 1
-. ENDNOTE_TITLE_UNDERLINE_WEIGHT \\$1
+. ENDNOTE_TITLE_UNDERLINE_WEIGHT \\$1
. ds $EN_TITLE_UNDERLINE_GAP \\$2
. \}
. \}
@@ -6668,14 +6559,11 @@ y\\R'#DESCENDER \\n[.cdp]'
.ALIAS COVER_UNDERLINE _UNDERLINE
.ALIAS DOC_COVER_UNDERLINE _UNDERLINE
.ALIAS DOCTYPE_UNDERLINE _UNDERLINE
-.ALIAS HEAD_UNDERLINE _UNDERLINE
-.ALIAS HEAD_UNDERSCORE _UNDERLINE
.ALIAS ENDNOTE_STRING_UNDERLINE _UNDERLINE
.ALIAS ENDNOTE_STRING_UNDERSCORE _UNDERLINE
.ALIAS ENDNOTE_TITLE_UNDERLINE _UNDERLINE
.ALIAS ENDNOTE_TITLE_UNDERSCORE _UNDERLINE
\#
-\#
\# COVERS - WHETHER TO PRINT
\# -------------------------
\# *Arguments:
@@ -6707,7 +6595,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
.END
\#
-\#
\# COVER_COUNTS_PAGES
\# ------------------
\# *Arguments:
@@ -6719,18 +6606,17 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
.MAC COVER_COUNTS_PAGES END
. if '\\$0'DOC_COVER_COUNTS_PAGES' \{\
-. ie '\\$1'' \{ .nr #DOCCOVERS_COUNT 1 \}
-. el \{ .rr #DOCCOVERS_COUNT \}
+. ie '\\$1'' .nr #DOCCOVERS_COUNT 1
+. el .rr #DOCCOVERS_COUNT
. return
. \}
. if '\\$0'COVER_COUNTS_PAGES' \{\
-. ie '\\$1'' \{ .nr #COVERS_COUNT 1 \}
-. el \{ .rr #COVERS_COUNT \}
+. ie '\\$1'' .nr #COVERS_COUNT 1
+. el .rr #COVERS_COUNT
. return
. \}
.END
\#
-\#
.MAC DO_COVER END
. nr #DOING_COVER 1
. ev COVER
@@ -6752,665 +6638,432 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #COLUMNS_WERE_ON 1
. rr #COLUMNS
. \}
-.\" Doc cover
+. ds PDF_BM
. ie '\\$0'DO_DOC_COVER' \{\
-. if !r#DOC_COVER_START_POS \{\
-. nr #DOC_COVER_START_POS \\n[#PAGE_LENGTH]/3
-. \}
-. if \\n[#PRINT_STYLE]=1 \{\
-. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#DOC_LEAD]u*2u \}
-. el \{ .vs \\n[#DOC_LEAD]u \}
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. LS \\n[#DOC_LEAD]u\\*[$DOC_COVER_LEAD_ADJ]
-. nr #DOC_COVER_LEAD \\n[#LEAD]
+. ds DOC_ DOC_
+. nr #DOC_COVER_DONE 1
+. if '\\*[$PDF_DOC_COVER_LABEL]'' \
+. ds $PDF_DOC_COVER_LABEL Cover:
+. \}
+. el \{\
+. if '\\*[$PDF_COVER_LABEL]'' .ds $PDF_COVER_LABEL Title Page:
+. \}
+. if !r#\\*[DOC_]COVER_START_POS \
+. nr #\\*[DOC_]COVER_START_POS \\n[#PAGE_LENGTH]/3
+. if \\n[#PRINT_STYLE]=1 \{\
+. ie \\n[#SINGLE_SPACE]=1 .vs \\n[#DOC_LEAD]u*2u
+. el .vs \\n[#DOC_LEAD]u
+. \}
+. if \\n[#PRINT_STYLE]=2 \{\
+. LS \\n[#DOC_LEAD]u\\*[$\\*[DOC_]COVER_LEAD_ADJ]
+. nr #\\*[DOC_]COVER_LEAD \\n[#LEAD]
+. \}
+. if \\n[.ns] .rs
+. if '\\$0'DO_COVER' \{\
+. if \\n[TOC.RELOCATE]==5 \{\
+. if !rTOC_BH .TOC_BEFORE_HERE
. \}
-. PRINT \&
-. sp |\\n[#DOC_COVER_START_POS]u-1v
-. if \\n[#DOC_COVER_COLOR]=1 \{\
-. nf
-\m[\\*[$DOC_COVER_COLOR]]
-. EOL
+. \}
+. if '\\$0'DO_DOC_COVER' \{\
+. if \\n[TOC.RELOCATE]==3 \{\
+. if !rTOC_BH .TOC_BEFORE_HERE
. \}
-. DOC_COVER_H_POS
-. FAMILY \\*[$DOC_COVER_TITLE_FAM]
-. FT \\*[$DOC_COVER_TITLE_FT]
-. PT_SIZE \\*[$DOC_COVER_TITLE_PT_SIZE]
-. LS \\n[#DOC_COVER_LEAD]u
-. if \\n[#PRINT_STYLE]=1 \{ .TYPEWRITER \}
-. if \\n[#DOC_COVER_TITLE]=1 \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. CAPS
-. nr #ARG_NUM 0 1
-. while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. UNDERSCORE "\\*[$TITLE_\\n[#ARG_NUM]]"
-.\}
-. CAPS OFF
+. \}
+. RV_HARD_SET_MARGINS
+. sp |\\n[#\\*[DOC_]COVER_START_POS]u-1v
+. if \\n[#\\*[DOC_]COVER_COLOR]=1 \{\
+. nf
+\m[\\*[$\\*[DOC_]COVER_COLOR]]
+. EOL
+. \}
+. \\*[DOC_]COVER_H_POS
+. fam \\*[$\\*[DOC_]COVER_TITLE_FAM]
+. ft \\*[$\\*[DOC_]COVER_TITLE_FT]
+. ps \\*[$\\*[DOC_]COVER_TITLE_PT_SIZE]
+. ie \\n[#PRINT_STYLE]=1 \{\
+. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#DOC_LEAD]u*2u \}
+. el \{ .vs \\n[#DOC_LEAD]u \}
+. \}
+. el .vs \\n[#\\*[DOC_]COVER_LEAD]u
+. if \\n[#PRINT_STYLE]=1 .TYPEWRITER
+. if \\n[#\\*[DOC_]COVER_TITLE] \{\
+. nr PDFHREF.VIEW.LEADING.H \\n[PDFHREF.VIEW.LEADING]
+. nr PDFHREF.VIEW.LEADING \\n[nl]u-1v-1000u
+. \}
+. if \\n[#\\*[DOC_]COVER_TITLE]=1 \{\
+. ie \\n[#PRINT_STYLE]=1 \{\
+. CAPS
+. nr #ARG_NUM 0 1
+. while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
+. UNDERSCORE "\\*[$TITLE_\\n[#ARG_NUM]]"
+. if \\n[#ARG_NUM]>1 .as PDF_BM " \"
+. as PDF_BM \\*[$TITLE_\\n[#ARG_NUM]]
. \}
-. el \{\
+. CAPS OFF
+. \}
+. el \{\
. nr #ARG_NUM 0 1
. while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\
-. PRINT "\m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{\
+. ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \
+. PRINT \
+\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\\*[$TITLE_\\n[#ARG_NUM]]\m[]
+. el \
. PRINT "\\*[$TITLE_\\n[#ARG_NUM]]
-. \}
-.\}
+. if \\n[#ARG_NUM]>1 .as PDF_BM " \"
+. as PDF_BM \\*[$TITLE_\\n[#ARG_NUM]]
. \}
. \}
-. if \\n[#DOC_COVER_TITLE]=2 \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. CAPS
-. nr #ARG_NUM 0 1
-. while \\n[#DOCTITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. UNDERSCORE "\\*[$DOC_TITLE_\\n[#ARG_NUM]]"
-.\}
-. CAPS OFF
-. \}
-. el \{\
+. PDF_BOOKMARK 1 \\*[$PDF_\\*[DOC_]COVER_LABEL] \\*[PDF_BM]
+.\" . PDF_TITLE \\*[PDF_BM]
+. \}
+. if \\n[#\\*[DOC_]COVER_TITLE]=2 \{\
+. ie \\n[#PRINT_STYLE]=1 \{\
+. CAPS
. nr #ARG_NUM 0 1
. while \\n[#DOCTITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$DOC_TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{ .PRINT \\*[$DOC_TITLE_\\n[#ARG_NUM]] \}
-.\}
+. UNDERSCORE "\\*[$\\*[DOC_]TITLE_\\n[#ARG_NUM]]"
+. if \\n[#ARG_NUM]>1 .as PDF_BM " \"
+. as PDF_BM \\*[$\\*[DOC_]TITLE_\\n[#ARG_NUM]]
. \}
+. CAPS OFF
. \}
-. if \\n[#DOC_COVER_TITLE]=3 \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. CAPS
-. PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
-. CAPS OFF
-. \}
-. el \{\
-. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[]
-. \}
-. el \{ .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] \}
+. el \{\
+. nr #ARG_NUM 0 1
+. while \\n[#DOCTITLE_NUM]>=\\n+[#ARG_NUM] \{\
+. ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \
+. PRINT \
+\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\\*[$\\*[DOC_]TITLE_\\n[#ARG_NUM]]\m[]
+. el .PRINT \\*[$\\*[DOC_]TITLE_\\n[#ARG_NUM]]
+. if \\n[#ARG_NUM]>1 .as PDF_BM " \"
+. as PDF_BM \\*[$\\*[DOC_]TITLE_\\n[#ARG_NUM]]
. \}
. \}
-. if \\n[#DOC_COVER_TITLE]=4 \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. CAPS
-. nr #ARG_NUM 0 1
-. ie \\n[#SINGLE_SPACE]=0 \{\
-. vs \\n[#DOC_LEAD]u/2u
-. \}
-. el \{\
-. vs \\n[#DOC_LEAD]u
-. \}
-. sp
-. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. UNDERSCORE "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
-.\}
-. CAPS OFF
-. if \\n[#SINGLE_SPACE]=0 \{ .vs \\n[#DOC_LEAD]u \}
-. \}
-. el \{\
+. PDF_BOOKMARK 1 \\*[$PDF_\\*[DOC_]COVER_LABEL] \\*[PDF_BM]
+.\" . PDF_TITLE \\*[PDF_BM]
+. \}
+. if \\n[#\\*[DOC_]COVER_TITLE]=3 \{\
+. ie \\n[#PRINT_STYLE]=1 \{\
+. CAPS
+. PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
+. CAPS OFF
+. \}
+. el \{\
+. ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \
+. PRINT \
+\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[]
+. el .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
+. \}
+. PDF_BOOKMARK 1 \
+\\*[$PDF_\\*[DOC_]COVER_LABEL] \\*[$CHAPTER_STRING] \\*[$CHAPTER]
+.\" . PDF_TITLE \\*[$CHAPTER_STRING] \\*[$CHAPTER]
+. \}
+. if \\n[#\\*[DOC_]COVER_TITLE]=4 \{\
+. ie \\n[#PRINT_STYLE]=1 \{\
+. CAPS
. nr #ARG_NUM 0 1
+. ie \\n[#SINGLE_SPACE]=0 .vs \\n[#DOC_LEAD]u/2u
+. el .vs \\n[#DOC_LEAD]u
+. sp
. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{ .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]] \}
-.\}
+. UNDERSCORE "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
+. if \\n[#ARG_NUM]>1 .as PDF_BM " \"
+. as PDF_BM \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
. \}
+. CAPS OFF
+. if \\n[#SINGLE_SPACE]=0 .vs \\n[#DOC_LEAD]u
. \}
-. if \\n[#DOC_COVER_TITLE]=5 \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. CAPS
-. PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
-. CAPS OFF
-. \}
-. el \{\
-. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[]
-. \}
-. el \{ .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] \}
-. \}
-. if !'\\*[$CHAPTER_TITLE_1]'' \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. ie \\n[#SINGLE_SPACE]=0 \{\
-. vs \\n[#DOC_LEAD]u/2u
-. \}
-. el \{\
-. vs \\n[#DOC_LEAD]u
-. \}
-. sp
-. nr #ARG_NUM 0 1
-. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. UNDERSCORE "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
-.\}
-. if \\n[#SINGLE_SPACE]=0 \{ .vs \\n[#DOC_LEAD]u \}
-. \}
-. el \{\
-. fam \\*[$DOC_COVER_CHAPTER_TITLE_FAM]
-. ft \\*[$DOC_COVER_CHAPTER_TITLE_FT]
-. ps \\*[$DOC_COVER_CHAPTER_TITLE_PT_SIZE]
-. nr #ARG_NUM 0 1
-. ALD \\n[.v]u/4u \"Put a little space before the chapter title
-. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{ .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]] \}
-.\}
-. \}
+. el \{\
+. nr #ARG_NUM 0 1
+. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
+. ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \
+. PRINT \
+\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
+. el .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
+. if \\n[#ARG_NUM]>1 .as PDF_BM " \"
+. as PDF_BM \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
. \}
. \}
-. if \\n[#DOC_COVER_TITLE]=6 \{\
+. PDF_BOOKMARK 1 \\*[$PDF_\\*[DOC_]COVER_LABEL] \\*[PDF_BM]
+.\" . PDF_TITLE \\*[PDF_BM]
+. \}
+. if \\n[#\\*[DOC_]COVER_TITLE]=5 \{\
+. ie \\n[#PRINT_STYLE]=1 \{\
+. CAPS
+. PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
+. CAPS OFF
+. \}
+. el \{\
+. ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \
+. PRINT \
+\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[]
+. el .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
+. \}
+. if !'\\*[$CHAPTER_TITLE_1]'' \{\
. ie \\n[#PRINT_STYLE]=1 \{\
-. CAPS
+. ie \\n[#SINGLE_SPACE]=0 .vs \\n[#DOC_LEAD]u/2u
+. el .vs \\n[#DOC_LEAD]u
+. sp
. nr #ARG_NUM 0 1
-. while \\n[#DOC_COVER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. UNDERSCORE "\\*[$DOC_COVER_TITLE_\\n[#ARG_NUM]]"
-.\}
-. CAPS OFF
+. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
+. UNDERSCORE "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
+. if \\n[#ARG_NUM]>1 .as PDF_BM " \"
+. as PDF_BM \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
+. \}
+. if \\n[#SINGLE_SPACE]=0 .vs \\n[#DOC_LEAD]u
. \}
. el \{\
+. fam \\*[$\\*[DOC_]COVER_CHAPTER_TITLE_FAM]
+. ft \\*[$\\*[DOC_]COVER_CHAPTER_TITLE_FT]
+. ps \\*[$\\*[DOC_]COVER_CHAPTER_TITLE_PT_SIZE]
+. ALD \\n[.v]u/4u \"Put a little space before the chapter title
. nr #ARG_NUM 0 1
-. while \\n[#DOC_COVER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$DOC_COVER_TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{ .PRINT \\*[$DOC_COVER_TITLE_\\n[#ARG_NUM]] \}
-.\}
-. \}
-. \}
-. if !\\n[#DOC_TYPE]=2 \{\
-. if \\n[#DOC_COVER_SUBTITLE]=1 \{\
-. fam \\*[$DOC_COVER_SUBTITLE_FAM]
-. ft \\*[$DOC_COVER_SUBTITLE_FT]
-. ps \\*[$DOC_COVER_SUBTITLE_PT_SIZE]
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. ie \\n[#SINGLE_SPACE]=0 \{ .vs \\n[#DOC_LEAD]u/2u \}
-. el \{ .vs \\n[#DOC_LEAD]u \}
-. sp
+. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
+. ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \
+. PRINT \
+\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
+. el .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
+. if \\n[#ARG_NUM]>1 .as PDF_BM " \"
+. as PDF_BM \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]
. \}
-. if \\n[#DOC_COVER]=1 \{\
-. ie !'\\*[$SUBTITLE_DOCCOVER_1]'' \{\
-. nr #SUBTITLES \\n[#SUBTITLE_DOCCOVER_NUM]
-. nr #NEXT_SUBTITLE 0 1
-. while \\n[#SUBTITLES]>\\n[#NEXT_SUBTITLE] \{\
-. ie \\n[#DOC_COVER_SUBTITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_SUBTITLE_COLOR]]\\*[$SUBTITLE_DOCCOVER_\\n+[#NEXT_SUBTITLE]]\m[]
-. \}
-. el \{ .PRINT \\*[$SUBTITLE_DOCCOVER_\\n+[#NEXT_SUBTITLE]] \}
-.\}
-. \}
-. el \{\
-. nr #SUBTITLES \\n[#SUBTITLE_NUM]
-. nr #NEXT_SUBTITLE 0 1
-. while \\n[#SUBTITLES]>\\n[#NEXT_SUBTITLE] \{\
-. ie \\n[#DOC_COVER_SUBTITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_SUBTITLE_COLOR]]\\*[$SUBTITLE_\\n+[#NEXT_SUBTITLE]]\m[]
-. \}
-. el \{ .PRINT \\*[$SUBTITLE_\\n+[#NEXT_SUBTITLE]] \}
-.\}
. \}
. \}
-. if \\n[#PRINT_STYLE]=1 \{\
-. if \\n[#SINGLE_SPACE]=0 \{ .vs \}
-. \}
-. \}
-. if \\n[#PRINT_STYLE]=1 \{\
-. if !r#DOC_COVER_SUBTITLE \{ .sp \}
+. PDF_BOOKMARK 1 \\*[$PDF_\\*[DOC_]COVER_LABEL] \\*[PDF_BM]
+.\" . PDF_TITLE \\*[PDF_BM]
+. \}
+. if \\n[#\\*[DOC_]COVER_TITLE]=6 \{\
+. ie \\n[#PRINT_STYLE]=1 \{\
+. CAPS
+. nr #ARG_NUM 0 1
+. while \\n[#\\*[DOC_]COVER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
+. UNDERSCORE "\\*[$\\*[DOC_]COVER_TITLE_\\n[#ARG_NUM]]"
+. if \\n[#ARG_NUM]>1 .as PDF_BM " \"
+. as PDF_BM \\*[$\\*[DOC_]COVER_TITLE_\\n[#ARG_NUM]]
. \}
+. CAPS OFF
. \}
-. if \\n[#DOC_COVER_AUTHOR]=1 \{\
-. fam \\*[$DOC_COVER_AUTHOR_FAM]
-. ft \\*[$DOC_COVER_AUTHOR_FT]
-. ps \\*[$DOC_COVER_AUTHOR_PT_SIZE]
+. el \{\
+. nr #ARG_NUM 0 1
+. while \\n[#\\*[DOC_]COVER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
+. ie \\n[#\\*[DOC_]COVER_TITLE_COLOR]=1 \
+. PRINT \
+\m[\\*[$\\*[DOC_]COVER_TITLE_COLOR]]\
+\\*[$\\*[DOC_]COVER_TITLE_\\n[#ARG_NUM]]\m[]
+. el .PRINT \\*[$\\*[DOC_]COVER_TITLE_\\n[#ARG_NUM]]
+. if \\n[#ARG_NUM]>1 .as PDF_BM " \"
+. as PDF_BM \\*[$\\*[DOC_]COVER_TITLE_\\n[#ARG_NUM]]
+. \}
+. \}
+. PDF_BOOKMARK 1 \\*[$PDF_\\*[DOC_]COVER_LABEL] \\*[PDF_BM]
+.\" . PDF_TITLE \\*[PDF_BM]
+. \}
+. if \\n[#\\*[DOC_]COVER_TITLE] \{\
+. nr PDFHREF.VIEW.LEADING \\n[PDFHREF.VIEW.LEADING.H]
+. rr PDFHREF.VIEW.LEADING.H
+. \}
+. if !\\n[#DOC_TYPE]=2 \{\
+. if \\n[#\\*[DOC_]COVER_SUBTITLE]=1 \{\
+. fam \\*[$\\*[DOC_]COVER_SUBTITLE_FAM]
+. ft \\*[$\\*[DOC_]COVER_SUBTITLE_FT]
+. ps \\*[$\\*[DOC_]COVER_SUBTITLE_PT_SIZE]
. if \\n[#PRINT_STYLE]=1 \{\
. TYPEWRITER
-. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#DOC_LEAD]u \}
-. el \{ .vs \\n[#DOC_LEAD]u/2u \}
+. ie \\n[#SINGLE_SPACE]=0 .vs \\n[#DOC_LEAD]u/2u
+. el .vs \\n[#DOC_LEAD]u
. sp
. \}
-. ie d$ATTRIBUTE_STRING_DOCCOVER \{\
-. ie \\n[#DOC_COVER_ATTRIBUTE_COLOR]=1 \{\
-. PRINT \&\m[\\*[$DOC_COVER_ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING_DOCCOVER]\m[]
-. \}
-. el \{ .PRINT \&\\*[$ATTRIBUTE_STRING_DOCCOVER] \}
-. \}
-. el \{\
-. if d$ATTRIBUTE_STRING \{\
-. ie \\n[#DOC_COVER_ATTRIBUTE_COLOR]=1 \{\
-. PRINT \&\m[\\*[$DOC_COVER_ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[]
+. if \\n[#\\*[DOC_]COVER]=1 \{\
+. ie !'\\*[$SUBTITLE_\\*[DOC_]COVER_1]'' \{\
+. nr #SUBTITLES \\n[#SUBTITLE_\\*[DOC_]COVER_NUM]
+. nr #NEXT_SUBTITLE 0 1
+. while \\n[#SUBTITLES]>\\n[#NEXT_SUBTITLE] \{\
+. ie \\n[#\\*[DOC_]COVER_SUBTITLE_COLOR]=1 \
+. PRINT \
+\m[\\*[$\\*[DOC_]COVER_SUBTITLE_COLOR]]\
+\\*[$SUBTITLE_\\*[DOC_]COVER_\\n+[#NEXT_SUBTITLE]]\m[]
+. el .PRINT \
+\\*[$SUBTITLE_\\*[DOC_]COVER_\\n+[#NEXT_SUBTITLE]]
. \}
-. el \{ .PRINT \&\\*[$ATTRIBUTE_STRING] \}
-. \}
-. \}
-. PRINT_AUTHORS
-. \}
-. fam \\*[$DOC_COVER_DOCTYPE_FAM]
-. ft \\*[$DOC_COVER_DOCTYPE_FT]
-. ps \\*[$DOC_COVER_DOCTYPE_PT_SIZE]
-. SP
-. if \\n[#DOC_TYPE]=3 \{\
-. if \\n[#DOC_COVER_DOCTYPE]=1 \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. vs \\n[#DOC_LEAD]u
-. UNDERSCORE2 "\\*[$DOC_TYPE]"
. \}
. el \{\
-. nr #FROM_DOC_COVER 1
-. ie \\n[#DOC_COVER_DOCTYPE_COLOR]=1 \{\
-. COLOR \\*[$DOC_COVER_DOCTYPE_COLOR]
-. ie \\n[#DOCCOVER_UNDERLINE]= 1 \{ .UNDERSCORE \\*[$DOCCOVER_UNDERLINE_GAP] "\\*[$DOC_TYPE]" \}
-. el \{ .PRINT "\\*[$DOC_TYPE]" \}
+. nr #SUBTITLES \\n[#SUBTITLE_NUM]
+. nr #NEXT_SUBTITLE 0 1
+. while \\n[#SUBTITLES]>\\n[#NEXT_SUBTITLE] \{\
+. ie \\n[#\\*[DOC_]COVER_SUBTITLE_COLOR]=1 \
+. PRINT \
+\m[\\*[$\\*[DOC_]COVER_SUBTITLE_COLOR]]\\*[$SUBTITLE_\\n+[#NEXT_SUBTITLE]]\m[]
+. el .PRINT \\*[$SUBTITLE_\\n+[#NEXT_SUBTITLE]]
. \}
-. el \{\
-. ie \\n[#DOCCOVER_UNDERLINE]=1 \{ .UNDERSCORE \\*[$DOCCOVER_UNDERLINE_GAP] "\\*[$DOC_TYPE]" \}
-. el \{ .PRINT "\\*[$DOC_TYPE]" \}
-. \}
-. rr #FROM_DOC_COVER
. \}
. \}
-. \}
-. sp |\\n[#VISUAL_B_MARGIN]u+\\n[#DOC_LEAD]u
-. ie \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#DOC_LEAD]u \}
-. el \{ .vs \\n[#DOC_LEAD]u/2u \}
-. \}
-. el \{\
-. fam \\*[$DOC_COVER_COPYRIGHT_FAM]
-. ft \\*[$DOC_COVER_COPYRIGHT_FT]
-. PT_SIZE \\*[$DOC_COVER_COPYRIGHT_PT_SIZE]
-. AUTOLEAD \\n[#DOC_COVER_MISC_AUTOLEAD]
-. \}
-. if \\n[#DOC_COVER_COPYRIGHT]=1 \{\
-. if !'\\*[$COPYRIGHT_DOCCOVER]'' \{\
-. ds $SAVED_COPYRIGHT \\*[$COPYRIGHT]
-. ds $COPYRIGHT \\*[$COPYRIGHT_DOCCOVER]
-. \}
-. QUAD \\*[$DOC_COVER_COPYRIGHT_QUAD]
-. ie \\n[#DOC_COVER_COPYRIGHT_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_COPYRIGHT_COLOR]]\\*[$COPYRIGHT]\m[]
+. if \\n[#PRINT_STYLE]=1 \{\
+. if \\n[#SINGLE_SPACE]=0 .vs
. \}
-. el \{ .PRINT \\*[$COPYRIGHT] \}
-. ds $COPYRIGHT \\*[$SAVED_COPYRIGHT]
. \}
-. br
-. if \\n[#DOC_COVER_MISC]=1 \{\
-. if \\n[#PRINT_STYLE]=2 \{\
-. fam \\*[$DOC_COVER_MISC_FAM]
-. ft \\*[$DOC_COVER_MISC_FT]
-. PT_SIZE \\*[$DOC_COVER_MISC_PT_SIZE]
-. \}
-. QUAD \\*[$DOC_COVER_MISC_QUAD]
-. ie !'\\*[$MISC_DOCCOVER_1]'' \{\
-. nr #MISCS \\n[#MISC_DOCCOVER_NUM]
-. sp -\\n[#MISCS]
-. nr #NEXT_MISC 0 1
-. while \\n[#MISCS]>\\n[#NEXT_MISC] \{\
-. ie \\n[#DOC_COVER_MISC_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_MISC_COLOR]]\\*[$MISC_DOCCOVER_\\n+[#NEXT_MISC]]\m[]
-. rm $MISC_DOCCOVER_\\n[#NEXT_MISC]
-. rm $MISC_\\n[#NEXT_MISC]
-. br
-. \}
-. el \{\
-. PRINT \\*[$MISC_DOCCOVER_\\n+[#NEXT_MISC]]
-. rm $MISC_DOCCOVER_\\n[#NEXT_MISC]
-. rm $MISC_\\n[#NEXT_MISC]
-. br
-. \}
-.\}
-. rm $MISC_\\n+[#NEXT_MISC]
-. \}
-. el \{\
-. nr #MISCS \\n[#MISC_NUM]
-. sp -\\n[#MISCS]
-. nr #NEXT_MISC 0 1
-. while \\n[#MISCS]>\\n[#NEXT_MISC] \{\
-. ie \\n[#DOC_COVER_MISC_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_MISC_COLOR]]\\*[$MISC_\\n+[#NEXT_MISC]]\m[]
-. br
-. \}
-. el \{\
-. PRINT \\*[$MISC_\\n+[#NEXT_MISC]]
-. br
-. \}
-.\}
-. \}
+. if \\n[#PRINT_STYLE]=1 \{\
+. if !r#\\*[DOC_]COVER_SUBTITLE .sp
. \}
-. nr #DOCCOVER_END 1
-. END_COVER
. \}
-.\" Cover
-. el \{\
-. if !r#COVER_START_POS \{\
-. nr #COVER_START_POS \\n[#PAGE_LENGTH]/3
-. \}
+. if \\n[#\\*[DOC_]COVER_AUTHOR]=1 \{\
+. fam \\*[$\\*[DOC_]COVER_AUTHOR_FAM]
+. ft \\*[$\\*[DOC_]COVER_AUTHOR_FT]
+. ps \\*[$\\*[DOC_]COVER_AUTHOR_PT_SIZE]
. if \\n[#PRINT_STYLE]=1 \{\
-. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#DOC_LEAD]u*2u \}
-. el \{ .vs \\n[#DOC_LEAD]u \}
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. LS \\n[#DOC_LEAD]u\\*[$COVER_LEAD_ADJ]
-. nr #COVER_LEAD \\n[#LEAD]
-. \}
-. PRINT \&
-. sp |\\n[#COVER_START_POS]u-1v
-. if \\n[#COVER_COLOR]=1 \{\
-. nf
-\m[\\*[$COVER_COLOR]]
-. \}
-. COVER_H_POS
-. fam \\*[$COVER_TITLE_FAM]
-. ft \\*[$COVER_TITLE_FT]
-. ps \\*[$COVER_TITLE_PT_SIZE]
-. vs \\n[#COVER_LEAD]u
-. if \\n[#PRINT_STYLE]=1 \{ .TYPEWRITER \}
-. if \\n[#COVER_TITLE]=1 \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. CAPS
-. nr #ARG_NUM 0 1
-. while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. UNDERSCORE "\\*[$TITLE_\\n[#ARG_NUM]]"
-.\}
-. CAPS OFF
-. \}
-. el \{\
-. nr #ARG_NUM 0 1
-. while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#COVER_TITLE_COLOR]=1 \{\
-. PRINT "\m[\\*[$COVER_TITLE_COLOR]]\\*[$TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{\
-. PRINT "\\*[$TITLE_\\n[#ARG_NUM]]
-. \}
-.\}
-. \}
-. \}
-. if \\n[#COVER_TITLE]=2 \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. CAPS
-. nr #ARG_NUM 0 1
-. while \\n[#DOCTITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. UNDERSCORE "\\*[$DOC_TITLE_\\n[#ARG_NUM]]"
-.\}
-. CAPS OFF
-. \}
-. el \{\
-. nr #ARG_NUM 0 1
-. while \\n[#DOCTITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$DOC_TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{ .PRINT \\*[$DOC_TITLE_\\n[#ARG_NUM]] \}
-.\}
-. \}
+. TYPEWRITER
+. ie \\n[#SINGLE_SPACE]=1 .vs \\n[#DOC_LEAD]u
+. el .vs \\n[#DOC_LEAD]u/2u
+. sp
. \}
-. if \\n[#COVER_TITLE]=3 \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. CAPS
-. PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
-. CAPS OFF
-. \}
-. el \{\
-. ie \\n[#COVER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$COVER_TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[]
-. \}
-. el \{ .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] \}
-. \}
+. ie d$ATTRIBUTE_STRING_DO_CCOVER \{\
+. ie \\n[#\\*[DOC_]COVER_ATTRIBUTE_COLOR]=1 \
+. PRINT \
+\&\m[\\*[$\\*[DOC_]COVER_ATTRIBUTE_COLOR]]\
+\\*[$ATTRIBUTE_STRING_\\*[DOC_]COVER]\m[]
+. el .PRINT \&\\*[$ATTRIBUTE_STRING_\\*[DOC_]COVER]
. \}
-. if \\n[#COVER_TITLE]=4 \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. ie \\n[#SINGLE_SPACE]=0 \{\
-. vs \\n[#DOC_LEAD]u/2u
-. \}
-. el \{\
-. vs \\n[#DOC_LEAD]u
-. \}
-. sp
-. CAPS
-. nr #ARG_NUM 0 1
-. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. UNDERSCORE "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
-.\}
-. CAPS OFF
-. if \\n[#SINGLE_SPACE]=0 \{ .vs \\n[#DOC_LEAD]u \}
-. \}
-. el \{\
-. nr #ARG_NUM 0 1
-. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{ .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]] \}
-.\}
+. el \{\
+. if d$ATTRIBUTE_STRING \{\
+. ie \\n[#\\*[DOC_]COVER_ATTRIBUTE_COLOR]=1 \
+. PRINT \
+\&\m[\\*[$\\*[DOC_]COVER_ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[]
+. el .PRINT \&\\*[$ATTRIBUTE_STRING]
. \}
. \}
-. if \\n[#COVER_TITLE]=5 \{\
+. PRINT_AUTHORS
+. \}
+. fam \\*[$\\*[DOC_]COVER_DOCTYPE_FAM]
+. ft \\*[$\\*[DOC_]COVER_DOCTYPE_FT]
+. ps \\*[$\\*[DOC_]COVER_DOCTYPE_PT_SIZE]
+. SP
+. if \\n[#DOC_TYPE]=3 \{\
+. if \\n[#\\*[DOC_]COVER_DOCTYPE]=1 \{\
. ie \\n[#PRINT_STYLE]=1 \{\
-. CAPS
-. PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER]
-. CAPS OFF
+. TYPEWRITER
+. vs \\n[#DOC_LEAD]u
+. UNDERSCORE2 "\\*[$DOC_TYPE]"
. \}
. el \{\
-. ie \\n[#COVER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$COVER_TITLE_COLOR]]\\*[$CHAPTER_STRING] \\*[$CHAPTER]\m[]
-. \}
-. el \{ .PRINT \\*[$CHAPTER_STRING] \\*[$CHAPTER] \}
-. \}
-. if !'\\*[$CHAPTER_TITLE_1]'' \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. ie \\n[#SINGLE_SPACE]=0 \{\
-. vs \\n[#DOC_LEAD]u/2u
-. \}
-. el \{\
-. vs \\n[#DOC_LEAD]u
-. \}
-. sp
-. nr #ARG_NUM 0 1
-. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. UNDERSCORE "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
-.\}
-. if \\n[#SINGLE_SPACE]=0 \{ .vs \\n[#DOC_LEAD]u \}
+. nr #FROM_\\*[DOC_]COVER 1
+. ie \\n[#\\*[DOC_]COVER_DOCTYPE_COLOR]=1 \{\
+. COLOR \\*[$\\*[DOC_]COVER_DOCTYPE_COLOR]
+. ie \\n[#\\*[DOC_]COVER_UNDERLINE]=1 \
+. UNDERSCORE \\*[$\\*[DOC_]COVER_UNDERLINE_GAP] "\\*[$DOC_TYPE]"
+. el .PRINT "\\*[$DOC_TYPE]"
. \}
. el \{\
-. fam \\*[$COVER_CHAPTER_TITLE_FAM]
-. ft \\*[$COVER_CHAPTER_TITLE_FT]
-. ps \\*[$COVER_CHAPTER_TITLE_PT_SIZE]
-. ALD \\n[.v]u/4u \"Put a little space before the chapter title
-. nr #ARG_NUM 0 1
-. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#DOC_COVER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$DOC_COVER_TITLE_COLOR]]\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{ .PRINT \\*[$CHAPTER_TITLE_\\n[#ARG_NUM]] \}
-.\}
-. \}
-. \}
-. \}
-. if \\n[#COVER_TITLE]=6 \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. CAPS
-. nr #ARG_NUM 0 1
-. while \\n[#COVER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. UNDERSCORE "\\*[$COVER_TITLE_\\n[#ARG_NUM]]"
-.\}
-. CAPS OFF
-. \}
-. el \{\
-. nr #ARG_NUM 0 1
-. while \\n[#COVER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
-. ie \\n[#COVER_TITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$COVER_TITLE_COLOR]]\\*[$COVER_TITLE_\\n[#ARG_NUM]]\m[]
-. \}
-. el \{ .PRINT \\*[$COVER_TITLE_\\n[#ARG_NUM]] \}
-.\}
-. \}
-. \}
-. if !\\n[#DOC_TYPE]=2 \{\
-. if \\n[#COVER_SUBTITLE]=1 \{\
-. fam \\*[$COVER_SUBTITLE_FAM]
-. ft \\*[$COVER_SUBTITLE_FT]
-. ps \\*[$COVER_SUBTITLE_PT_SIZE]
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. ie \\n[#SINGLE_SPACE]=0 \{ .vs \\n[#DOC_LEAD]u/2u \}
-. el \{ .vs \\n[#DOC_LEAD]u \}
-. sp
-. \}
-. \}
-. if \\n[#COVER]=1 \{\
-. ie !'\\*[$SUBTITLE_COVER_1]'' \{\
-. nr #SUBTITLES \\n[#SUBTITLE_COVER_NUM]
-. nr #NEXT_SUBTITLE 0 1
-. while \\n[#SUBTITLES]>\\n[#NEXT_SUBTITLE] \{\
-. ie \\n[#COVER_SUBTITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$COVER_SUBTITLE_COLOR]]\\*[$SUBTITLE_COVER_\\n+[#NEXT_SUBTITLE]]\m[]
-. \}
-. el \{ .PRINT \\*[$SUBTITLE_COVER_\\n+[#NEXT_SUBTITLE]] \}
-.\}
-. \}
-. el \{\
-. nr #SUBTITLES \\n[#SUBTITLE_NUM]
-. nr #NEXT_SUBTITLE 0 1
-. while \\n[#SUBTITLES]>\\n[#NEXT_SUBTITLE] \{\
-. ie \\n[#COVER_SUBTITLE_COLOR]=1 \{\
-. PRINT \m[\\*[$COVER_SUBTITLE_COLOR]]\\*[$SUBTITLE_\\n+[#NEXT_SUBTITLE]]\m[]
-. \}
-. el \{ .PRINT \\*[$SUBTITLE_\\n+[#NEXT_SUBTITLE]] \}
-.\}
-. \}
-. \}
-. if \\n[#PRINT_STYLE]=1 \{\
-. if \\n[#SINGLE_SPACE]=0 \{ .vs \}
+. ie \\n[#\\*[DOC_]COVER_UNDERLINE]=1 \
+. UNDERSCORE \
+\\*[$\\*[DOC_]COVER_UNDERLINE_GAP] "\\*[$DOC_TYPE]"
+. el .PRINT "\\*[$DOC_TYPE]"
. \}
-. \}
-. if \\n[#PRINT_STYLE]=1 \{\
-. if !r#COVER_SUBTITLE \{ .sp \}
+. rr #FROM_\\*[DOC_]COVER
. \}
. \}
-. if \\n[#COVER_AUTHOR]=1 \{\
-. fam \\*[$COVER_AUTHOR_FAM]
-. ft \\*[$COVER_AUTHOR_FT]
-. ps \\*[$COVER_AUTHOR_PT_SIZE]
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#DOC_LEAD]u \}
-. el \{ .vs \\n[#DOC_LEAD]u/2u \}
-. sp
-. \}
-. ie d$ATTRIBUTE_STRING_COVER \{\
-. ie \\n[#COVER_ATTRIBUTE_COLOR]=1 \{\
-. PRINT \&\m[\\*[$COVER_ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING_COVER]\m[]
+. \}
+. sp |\\n[#VISUAL_B_MARGIN]u
+. ie \\n[#PRINT_STYLE]=1 \{\
+. TYPEWRITER
+. ie \\n[#SINGLE_SPACE]=1 .vs \\n[#DOC_LEAD]u
+. el .vs \\n[#DOC_LEAD]u/2u
+. sp
+. \}
+. el \{\
+. fam \\*[$\\*[DOC_]COVER_COPYRIGHT_FAM]
+. ft \\*[$\\*[DOC_]COVER_COPYRIGHT_FT]
+. PT_SIZE \\*[$\\*[DOC_]COVER_COPYRIGHT_PT_SIZE]
+. AUTOLEAD \\n[#\\*[DOC_]COVER_MISC_AUTOLEAD]
+. nr #COPYRIGHT_V_ADJ \\n[#DOC_LEAD]-\\n[.v]
+. sp \\n[#COPYRIGHT_V_ADJ]u
+. rr #COPYRIGHT_V_ADJ
+. \}
+. if \\n[#\\*[DOC_]COVER_COPYRIGHT]=1 \{\
+. if !'\\*[$COPYRIGHT_DOCCOVER]'' \{\
+. ds $SAVED_COPYRIGHT \\*[$COPYRIGHT]
+. ds $COPYRIGHT \\*[$COPYRIGHT_DOCCOVER]
+. \}
+. QUAD \\*[$\\*[DOC_]COVER_COPYRIGHT_QUAD]
+. ie \\n[#\\*[DOC_]COVER_COPYRIGHT_COLOR]=1 \
+. PRINT \m[\\*[$\\*[DOC_]COVER_COPYRIGHT_COLOR]]\\*[$COPYRIGHT]\m[]
+. el .PRINT \\*[$COPYRIGHT]
+. if d$SAVED_COPYRIGHT .ds $COPYRIGHT \\*[$SAVED_COPYRIGHT]
+. \}
+. br
+. if \\n[#\\*[DOC_]COVER_MISC]=1 \{\
+. if \\n[#PRINT_STYLE]=2 \{\
+. fam \\*[$\\*[DOC_]COVER_MISC_FAM]
+. ft \\*[$\\*[DOC_]COVER_MISC_FT]
+. PT_SIZE \\*[$\\*[DOC_]COVER_MISC_PT_SIZE]
+. \}
+. QUAD \\*[$\\*[DOC_]COVER_MISC_QUAD]
+. ie !'\\*[$MISC_\\*[DOC_]COVER_1]'' \{\
+. nr #MISCS \\n[#MISC_\\*[DOC_]COVER_NUM]
+. nr #NEXT_MISC 0 1
+. while \\n[#MISCS]>\\n[#NEXT_MISC] \{\
+. ie \\n[#\\*[DOC_]COVER_MISC_COLOR]=1 \{\
+. da MISC_DIV
+. PRINT \
+\m[\\*[$\\*[DOC_]COVER_MISC_COLOR]]\\*[$MISC_\\*[DOC_]COVER_\\n+[#NEXT_MISC]]\m[]
+. br
+. da
+. rm $MISC_\\*[DOC_]COVER_\\n[#NEXT_MISC]
+. rm $MISC_\\n[#NEXT_MISC]
. \}
-. el \{ .PRINT \&\\*[$ATTRIBUTE_STRING_COVER] \}
-. \}
-. el \{\
-. if d$ATTRIBUTE_STRING \{\
-. ie \\n[#COVER_ATTRIBUTE_COLOR]=1 \{\
-. PRINT \&\m[\\*[$COVER_ATTRIBUTE_COLOR]]\\*[$ATTRIBUTE_STRING]\m[]
-. \}
-. el \{ .PRINT \&\\*[$ATTRIBUTE_STRING] \}
+. el \{\
+. da MISC_DIV
+. PRINT \\*[$MISC_\\*[DOC_]COVER_\\n+[#NEXT_MISC]]
+. br
+. da
+. rm $MISC_\\*[DOC_]COVER_\\n[#NEXT_MISC]
+. rm $MISC_\\n[#NEXT_MISC]
. \}
. \}
-. PRINT_AUTHORS
+. rm $MISC_\\n+[#NEXT_MISC]
. \}
-. fam \\*[$COVER_DOCTYPE_FAM]
-. ft \\*[$COVER_DOCTYPE_FT]
-. ps \\*[$COVER_DOCTYPE_PT_SIZE]
-. SP
-. if \\n[#DOC_TYPE]=3 \{\
-. if \\n[#COVER_DOCTYPE]=1 \{\
-. ie \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. vs \\n[#DOC_LEAD]u
-. UNDERSCORE2 "\\*[$DOC_TYPE]"
+. el \{\
+. nr #MISCS \\n[#MISC_NUM]
+. nr #NEXT_MISC 0 1
+. while \\n[#MISCS]>\\n[#NEXT_MISC] \{\
+. ie \\n[#\\*[DOC_]COVER_MISC_COLOR]=1 \{\
+. da MISC_DIV
+. PRINT \
+\m[\\*[$\\*[DOC_]COVER_MISC_COLOR]]\\*[$MISC_\\n+[#NEXT_MISC]]\m[]
+. br
+. da
. \}
. el \{\
-. nr #FROM_COVER 1
-. ie \\n[#COVER_DOCTYPE_COLOR]=1 \{\
-. COLOR \\*[$COVER_DOCTYPE_COLOR]
-. ie \\n[#COVER_UNDERLINE]= 1 \{ .UNDERSCORE \\*[$COVER_UNDERLINE_GAP] "\\*[$DOC_TYPE]" \}
-. el \{ .PRINT "\\*[$DOC_TYPE] \}
-. \}
-. el \{\
-. ie \\n[#COVER_UNDERLINE]=1 \{ .UNDERSCORE \\*[$COVER_UNDERLINE_GAP] "\\*[$DOC_TYPE]" \}
-. el \{ .PRINT "\\*[$DOC_TYPE]" \}
-. \}
-. rr #FROM_COVER
+. da MISC_DIV
+. PRINT \\*[$MISC_\\n+[#NEXT_MISC]]
+. br
+. da
. \}
+. nr #MISC_DEPTH +\\n[dn]
. \}
. \}
-. sp |\\n[#VISUAL_B_MARGIN]u+\\n[#DOC_LEAD]u
-. ie \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. ie \\n[#SINGLE_SPACE]=1 \{ .vs \\n[#DOC_LEAD]u \}
-. el \{ .vs \\n[#DOC_LEAD]u/2u \}
-. \}
-. el \{\
-. fam \\*[$COVER_COPYRIGHT_FAM]
-. ft \\*[$COVER_COPYRIGHT_FT]
-. PT_SIZE \\*[$COVER_COPYRIGHT_PT_SIZE]
-. AUTOLEAD \\n[#COVER_MISC_AUTOLEAD]
+. nr #MISC_DEPTH -\\n[#DOC_LEAD]
+. sp |\\n[#VISUAL_B_MARGIN]u-\\n[#MISC_DEPTH]u
+. nf
+. MISC_DIV
+. rm MISC_DIV
+. rr #MISC_DEPTH
+. \}
+. if '\\$0'DO_COVER' .nr #COVER_END 1
+. if '\\$0'DO_DOC_COVER' .nr #DOC_COVER_END 1
+. if \\n[TOC.RELOCATE]==1 \{\
+. if !\\n[#COVER_BLANKPAGE] \{\
+. if !rTOC_BH .TOC_AFTER_HERE
. \}
-. if \\n[#COVER_COPYRIGHT]=1 \{\
-. if !'\\*[$COPYRIGHT_COVER]'' \{\
-. ds $SAVED_COPYRIGHT \\*[$COPYRIGHT]
-. ds $COPYRIGHT \\*[$COPYRIGHT_COVER]
-. \}
-. QUAD \\*[$COVER_COPYRIGHT_QUAD]
-. ie \\n[#COVER_COPYRIGHT_COLOR]=1 \{\
-. PRINT \m[\\*[$COVER_COPYRIGHT_COLOR]]\\*[$COPYRIGHT]\m[]
-. \}
-. el \{ .PRINT \\*[$COPYRIGHT] \}
-. ds $COPYRIGHT \\*[$SAVED_COPYRIGHT]
+. \}
+. if '\\$0'DO_COVER' \{\
+. if \\n[TOC.RELOCATE]==6 \{\
+. if !rTOC_BH .TOC_AFTER_HERE
. \}
-. br
-. if \\n[#COVER_MISC]=1 \{\
-. QUAD \\*[$COVER_MISC_QUAD]
-. if \\n[#PRINT_STYLE]=2 \{\
-. fam \\*[$COVER_MISC_FAM]
-. ft \\*[$COVER_MISC_FT]
-. PT_SIZE \\*[$COVER_MISC_PT_SIZE]
-. \}
-. ie !'\\*[$MISC_COVER_1]'' \{\
-. nr #MISCS \\n[#MISC_COVER_NUM]
-. sp -\\n[#MISCS]
-. nr #NEXT_MISC 0 1
-. while \\n[#MISCS]>\\n[#NEXT_MISC] \{\
-. ie \\n[#COVER_MISC_COLOR]=1 \{\
-. PRINT \m[\\*[$COVER_MISC_COLOR]]\\*[$MISC_COVER_\\n+[#NEXT_MISC]]\m[]
-. br
-. \}
-. el \{\
-. PRINT \\*[$MISC_COVER_\\n+[#NEXT_MISC]]
-. br
-. \}
-.\}
-. \}
-. el \{\
-. nr #MISCS \\n[#MISC_NUM]
-. sp -\\n[#MISCS]
-. nr #NEXT_MISC 0 1
-. while \\n[#MISCS]>\\n[#NEXT_MISC] \{\
-. ie \\n[#COVER_MISC_COLOR]=1 \{\
-. PRINT \m[\\*[$COVER_MISC_COLOR]]\\*[$MISC_\\n+[#NEXT_MISC]]\m[]
-. br
-. \}
-. el \{\
-. PRINT \\*[$MISC_\\n+[#NEXT_MISC]]
-. br
-. \}
-.\}
-. \}
+. \}
+. if '\\$0'DO_DOC_COVER' \{\
+. if \\n[TOC.RELOCATE]==4 \{\
+. if !rTOC_BH .TOC_AFTER_HERE
. \}
-. nr #COVER_END 1
-. END_COVER
. \}
+. if '\\$0'DO_DOC_COVER' .rm DOC_
+. END_COVER
.END
\#
\# Macro to terminate (doc)cover processing
@@ -7419,26 +7072,32 @@ y\\R'#DESCENDER \\n[.cdp]'
. EOL
. TRAP
. NEWPAGE
-. if \\n[#PAGINATION_WAS_ON]=1 \{ .nr % +1 \}
-. if \\n[#DOCCOVER_END]=1 \{\
-. ie \\n[#DOCCOVER_BLANKPAGE]=1 \{\
+. if \\n[#PAGINATION_WAS_ON]=1 .nr % +1
+. if \\n[#DOC_COVER_END]=1 \{\
+. ie \\n[#DOC_COVER_BLANKPAGE]=1 \{\
+. if \\n[TOC.RELOCATE] \{\
+. if !\\n[#TOC_BH] .TOC_AFTER_HERE
+. \}
. NEWPAGE
-. rr #DOCCOVER_BLANKPAGE
-. if !\\n[#DOCCOVERS_COUNT]=1 \{ .nr % -2 \}
+. rr #DOC_COVER_BLANKPAGE
+. if !\\n[#DOCCOVERS_COUNT]=1 .nr % -2
. \}
. el \{\
-. if !\\n[#DOCCOVERS_COUNT]=1 \{ .nr #PAGE_NUM_ADJ -1 \}
+. if !\\n[#DOCCOVERS_COUNT]=1 .nr #PAGE_NUM_ADJ -1
. \}
-. rr #DOCCOVER_END
+. rr #DOC_COVER_END
. \}
. if \\n[#COVER_END]=1 \{\
. ie \\n[#COVER_BLANKPAGE]=1 \{\
+. if \\n[TOC.RELOCATE] \{\
+. if !\\n[TOC_BH] .TOC_AFTER_HERE
+. \}
. NEWPAGE
. rr #COVER_BLANKPAGE
-. if !\\n[#COVERS_COUNT]=1 \{ .nr % -2 \}
+. if !\\n[#COVERS_COUNT]=1 .nr % -2
. \}
. el \{\
-. if !\\n[#COVERS_COUNT]=1 \{ .nr #PAGE_NUM_ADJ -1 \}
+. if !\\n[#COVERS_COUNT]=1 .nr #PAGE_NUM_ADJ -1
. \}
. rr #COVER_END
. \}
@@ -7461,23 +7120,28 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #COLUMNS 1
. \}
. rr #DOING_COVER
+. if \\n[.ns] .nop \&
+. if \\n[#RECTO_VERSO] .nr #RV_POST_COVER 1
.END
\#
\# Macro to begin document processing
\#
.MAC START END
-. if !n \{ .nop \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap' \}
+. if \\n[TOC.RELOCATE]==2 \{\
+. if !\\n[TOC_BH] .TOC_BEFORE_HERE
+. \}
+. if !n .nop \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap'
. if !\\n[#PRINT_STYLE] \{\
. PRINTSTYLE TYPEWRITE
. PRINT \&
. po 6P
. ll 39P
-. ta \\n(.lu
+. ta \\n[.l]u
. sp |1i-1v
. CENTER
. PRINT "You neglected to enter a PRINTSTYLE"
. fl
-. ab [mom]: PRINTSTYLE missing. Aborting.
+. ab [mom]: PRINTSTYLE missing. Aborting '\\n[.F]'.
. \}
. nr #DOCS 1
. if \\n[#LINENUMBERS]=1 \{\
@@ -7487,8 +7151,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. if \\n[#COLLATE] \{\
. COPYSTYLE \\*[$COPY_STYLE]
. nr #HEADERS_ON \\n[#HEADER_STATE]
-. if \\n[#PAGE_NUM_V_POS]=1 \{ .nr #PAGINATE \\n[#PAGINATION_STATE] \}
-. sp |\\n[#HEADER_MARGIN]u
+. if \\n[#PAGE_NUM_V_POS]=1 .nr #PAGINATE \\n[#PAGINATION_STATE]
. PRINT \&
. if !'\\*[$RESTORE_PAGENUM_STYLE]'' \{\
. PAGENUM_STYLE \\*[$RESTORE_PAGENUM_STYLE]
@@ -7498,10 +7161,13 @@ y\\R'#DESCENDER \\n[.cdp]'
. DEFAULTS
.\" Quote and blockquote default leads are the same as #DOC_LEAD, so
.\" they have to be set after DEFAULTS (where DOC_LEAD is finalized)
-. if !r#Q_AUTOLEAD \{ .nr #Q_LEAD \\n[#DOC_LEAD] \}
-. if !r#BQ_AUTOLEAD \{ .nr #BQ_LEAD \\n[#DOC_LEAD] \}
-. if !r#EN_Q_AUTOLEAD \{ .nr #EN_Q_LEAD \\n[#EN_LEAD] \}
-. if !r#EN_BQ_AUTOLEAD \{ .nr #EN_BQ_LEAD \\n[#EN_LEAD] \}
+. if !r#Q_AUTOLEAD .nr #Q_LEAD \\n[#DOC_LEAD]
+. if !r#BQ_AUTOLEAD .nr #BQ_LEAD \\n[#DOC_LEAD]
+. if !r#EN_Q_AUTOLEAD .nr #EN_Q_LEAD \\n[#EN_LEAD]
+. if !r#EN_BQ_AUTOLEAD .nr #EN_BQ_LEAD \\n[#EN_LEAD]
+.\" TOC/recto-verso stuff
+. if !r@L_MARGIN .nr @L_MARGIN \\n[#DOC_L_MARGIN]
+. if !r@R_MARGIN .nr @R_MARGIN \\n[#DOC_R_MARGIN]
.\" Covers and doc covers
. if \\n[#DOC_COVERS]=1 \{\
. if \\n[#DOC_COVER]=1 \{\
@@ -7527,91 +7193,56 @@ y\\R'#DESCENDER \\n[.cdp]'
. rr #COVER_MISC
. \}
. \}
-.\" Collate related stuff
-. ie \\n[#COLLATED_DOC]=1 \{\
+. if !\\n[#TOC] .RV_HARD_SET_MARGINS
+. if \\n[#COLUMNS] .COLUMNS \\n[#NUM_COLS] \\n[#GUTTER]u
.\" Collect TITLE for TOC.
+. if !\\n[#TOC]=1 \{\
. nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
. af #TOC_ENTRY_PN \\g[#PAGENUMBER]
. ie \\n[#USER_SET_TITLE_ITEM] \{\
-. ds $TOC_TITLE_ITEM \\*[$USER_SET_TITLE_ITEM]\\|
+. ds $TOC_TITLE_ITEM \\*[$USER_SET_TITLE_ITEM]
. rr #USER_SET_TITLE_ITEM
. rm $USER_SET_TITLE_ITEM
. \}
. el \{\
. ie \\n[#DOC_TYPE]=2 \{\
-. ie '\\*[$CHAPTER_TITLE]'' \{\
-. ds $TOC_TITLE_ITEM \\*[$CHAPTER_STRING] \\*[$CHAPTER]\\|
-. \}
+. ie '\\*[$CHAPTER_TITLE]'' \
+. ds $TOC_TITLE_ITEM \\*[$CHAPTER_STRING] \\*[$CHAPTER]
. el \{\
-. ie '\\*[$CHAPTER]'' \{\
-. ds $TOC_TITLE_ITEM \\*[$CHAPTER_TITLE]\\|
-. \}
-. el \{\
-. ds $TOC_TITLE_ITEM \\*[$CHAPTER_STRING] \\*[$CHAPTER]: \\*[$CHAPTER_TITLE]\\|
-. \}
+. ie '\\*[$CHAPTER]'' \
+. ds $TOC_TITLE_ITEM \\*[$CHAPTER_TITLE]
+. el \
+. ds $TOC_TITLE_ITEM \
+\\*[$CHAPTER_STRING] \\*[$CHAPTER]: \\*[$CHAPTER_TITLE]
. \}
. \}
-. el \{\
-. ds $TOC_TITLE_ITEM \\*[$TITLE]\\|
-. \}
+. el \
+. ds $TOC_TITLE_ITEM \\*[$TITLE]
. \}
. if \\n[#TOC_AUTHORS]=1 \{\
-. ie '\\*[$TOC_AUTHORS]'' \{\
-. as $TOC_TITLE_ITEM /\\|\\*[$AUTHOR_1]\\|
-. \}
+. ie '\\*[$TOC_AUTHORS]'' \
+. as $TOC_TITLE_ITEM / \\*[$AUTHOR_1]
. el \{\
-. as $TOC_TITLE_ITEM /\\|\\*[$TOC_AUTHORS]\\|
+. as $TOC_TITLE_ITEM / \\*[$TOC_AUTHORS]
. rm $TOC_AUTHORS
. \}
. \}
-.\" Note the use of \!, which transparently embeds the macros used
-.\" in the TOC_ENTRIES diversion. The elements they control must be
-.\" processed literally when the diversion is output.
-. ev TOC_EV
-. da TOC_ENTRIES
-. if \\n[#PRINT_STYLE]=1 \{\
-\!. fam \\*[$TYPEWRITER_FAM]
-\!. ft R
-\!. ps \\*[$TYPEWRITER_PS]
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-\!. FAMILY \\*[$TOC_TITLE_FAM]
-\!. FT \\*[$TOC_TITLE_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE_CHANGE]
-. \}
-\!. TRAP OFF
-\!. PAD_MARKER ^
-. ie \\n[#PRINT_STYLE]=1 \{\
-\!. PAD "\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN_TYPEWRITE]"
+. nop
+. sp |\\n[#DOCHEADER_ADVANCE]u-1v
+. PDF_BOOKMARK 1 \\*[$TOC_TITLE_ITEM]
+. as $TOC_TITLE_ITEM \|
+. if \\n[#PREFIX_CH_NUM] \{\
+. rn $TOC_TITLE_ITEM $TOC_TITLE_ITEM_OLD
+. ds $TOC_CH_NUM \\n[#CH_NUM].\[toc-hd-num-spacer]
+. ds $TOC_TITLE_ITEM \\*[$TOC_CH_NUM]\\*[$TOC_TITLE_ITEM_OLD]
+. rm $TOC_TITLE_ITEM_OLD
. \}
-. el \{\
-\!. PAD "\\h'\\n[#TOC_TITLE_INDENT]u'\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN]"
-. \}
-\!. PAD_MARKER #
-\!. EOL
-\!. ST 100 L
-\!. ST 101 R
-. if \\n[#PRINT_STYLE]=2 \{\
-\!. FAMILY \\*[$TOC_PN_FAM]
-\!. FT \\*[$TOC_PN_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
-. \}
-\!. TAB 100
-\!. PRINT \\*[LEADER]
-\!. TN
-\!. TRAP
-\!. PRINT \\n[#TOC_ENTRY_PN]
-\!. TQ
-. di
-. ev
-. \}
-. el \{\
-. nr #FIRST_DOC_TITLE_PN \\n%+\\n[#PAGE_NUM_ADJ]
-. af #FIRST_DOC_TITLE_PN \\g[#PAGENUMBER]
-. nr #FIRST_DOC_TOC_PN_PADDING \\n[#TOC_PN_PADDING]
+. TITLE_TO_TOC
. \}
+. if !\\n[#TOC] .nr #POST_TOP 1
.\" End TITLE collection
. if \\n[#PRINT_PAGENUM_ON_PAGE_1] \{\
+. br
. sp |\\n[#HEADER_MARGIN]u
. PRINT_PAGE_NUMBER
. \}
@@ -7619,9 +7250,9 @@ y\\R'#DESCENDER \\n[.cdp]'
. rr #PAGINATION_STATE
.\" End collate stuff
. ie \\n[#DOC_HEADER]=0 \{\
-. PRINT \&
+. if \\n[.ns] .rs
. if \\n[#DOC_TYPE]=4 \{\
-. if !'\\n(.z'' \{ .di \}
+. if !'\\n[.z]'' .di
. \}
. nr #STORED_PP_INDENT \\n[#PP_INDENT]
. PARA_INDENT 0
@@ -7629,26 +7260,29 @@ y\\R'#DESCENDER \\n[.cdp]'
. PARA_INDENT \\n[#STORED_PP_INDENT]u
. rr #STORED_PP_INDENT
. ie r#ADVANCE_FROM_TOP \{\
+. br
. sp |\\n[#ADVANCE_FROM_TOP]u-1v
-. if \\n[#ADJ_DOC_LEAD]=1 \{ .SHIM \}
+. if \\n[#ADJ_DOC_LEAD]=1 .SHIM
+. \}
+. el \{\
+. br
+. sp |\\n[#T_MARGIN]u-1v
. \}
-. el \{ .sp |\\n[#T_MARGIN]u-1v \}
. if \\n[#COLUMNS] \{\
. mk dc
. nr #COL_NUM 0 1
. po \\n[#COL_\\n+[#COL_NUM]_L_MARGIN]u
-. nr #L_MARGIN \\n(.o
+. nr #L_MARGIN \\n[.o]
. ll \\n[#COL_L_LENGTH]u
. \}
. nr #PP 0
. \}
. el \{\
-. if \\n[#PRINT_STYLE]=2 \{ .LS \\n[#DOC_LEAD]u\\*[$DOCHEADER_LEAD_ADJ] \}
+. if \\n[#PRINT_STYLE]=2 .LS \\n[#DOC_LEAD]u\\*[$DOCHEADER_LEAD_ADJ]
. nr #DOCHEADER_LEAD \\n[#LEAD]
-.\" Default
+.\" Default doctype
. if \\n[#DOC_TYPE]=1 \{\
-. PRINT \&
-. sp |\\n[#DOCHEADER_ADVANCE]u-1v
+. if \\n[.ns] .rs
. ev DOCHEADER
. if \\n[#DOCHEADER_COLOR]=1 \{\
. nf
@@ -7657,17 +7291,17 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. L_MARGIN \\n[#DOC_L_MARGIN]u
. LL \\n[#DOC_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. if \\n[#PRINT_STYLE]=1 \{\
. CENTER
. TYPEWRITER
-. if \\n[#SINGLE_SPACE]=0 \{ .vs \\n[#DOC_LEAD]u/2u \}
+. if !\\n[#SINGLE_SPACE] .vs \\n[#DOC_LEAD]u/2u
. if !'\\*[$TITLE_1]'' \{\
. CAPS
. nr #ARG_NUM 0 1
. while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
. UNDERSCORE 4p "\\*[$TITLE_\\n[#ARG_NUM]]"
-.\}
+. \}
. CAPS OFF
. \}
. if !'\\*[$SUBTITLE]'' \{\
@@ -7675,16 +7309,17 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #ARG_NUM 0 1
. while \\n[#SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
. UNDERSCORE 4p "\\*[$SUBTITLE_\\n[#ARG_NUM]]"
-.\}
+. \}
. \}
. if !'\\*[$AUTHOR_1]'' \{\
. sp
. PRINT \&\\*[$ATTRIBUTE_STRING]
. nr #AUTHORS \\n[#AUTHOR_NUM]
. nr #NEXT_AUTHOR 0 1
+. if !\\n[#SINGLE_SPACE] .vs \\n[#DOC_LEAD]u/2u
. while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
. PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]
-.\}
+. \}
. \}
. \}
. if \\n[#PRINT_STYLE]=2 \{\
@@ -7692,10 +7327,9 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. ev
. \}
-.\" Chapter
+.\" Chapter doctype
. if \\n[#DOC_TYPE]=2 \{\
-. PRINT \&
-. sp |\\n[#DOCHEADER_ADVANCE]u-1v
+. if \\n[.ns] .rs
. ev DOCHEADER
. if \\n[#DOCHEADER_COLOR]=1 \{\
. nf
@@ -7704,19 +7338,19 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. L_MARGIN \\n[#DOC_L_MARGIN]u
. LL \\n[#DOC_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. if \\n[#PRINT_STYLE]=1 \{\
. CENTER
. TYPEWRITER
. vs \\n[#DOC_LEAD]u
-. if \\n[#SINGLE_SPACE]=0 \{ .vs \\n[#DOC_LEAD]u/2u \}
+. if !\\n[#SINGLE_SPACE]=1 .vs \\n[#DOC_LEAD]u/2u
. ie '\\*[$CHAPTER]'' \{\
. CAPS
. ie !'\\*[$CHAPTER_TITLE]'' \{\
. nr #ARG_NUM 0 1
. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
. UNDERSCORE 4p "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
-.\}
+. \}
. \}
. el \{\
. CAPS
@@ -7734,11 +7368,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #ARG_NUM 0 1
. while \\n[#CHAPTER_TITLE_NUM]>=\\n+[#ARG_NUM] \{\
. UNDERSCORE 4p "\\*[$CHAPTER_TITLE_\\n[#ARG_NUM]]"
-.\}
+. \}
. \}
. RLD 1v
. \}
-. if \\n[#SINGLE_SPACE] \{ .ALD 2v \}
+. vs \\n[#DOC_LEAD]u
+. if \\n[#SINGLE_SPACE] .ALD 2v
. \}
. if \\n[#PRINT_STYLE]=2 \{\
. CHAPTER_DOCHEADER
@@ -7747,16 +7382,15 @@ y\\R'#DESCENDER \\n[.cdp]'
. CHAPTER_DOCHEADER \" docheader
. br
. di
-. nr #DOCHEADER_DEPTH \\n(dn-\\n[#DOCHEADER_LEAD] \" Storing the depth (height) of the diversion
-. \" in #DOCHEADER_DEPTH
-. rm DOCHEADER_DIVERSION \" Removing the diversion macro
+. nr #DOCHEADER_DEPTH \\n[dn]-\\n[#DOCHEADER_LEAD] \" Storing the depth (height) of the diversion
+. \" in #DOCHEADER_DEPTH
+. rm DOCHEADER_DIVERSION \" Removing the diversion macro
. \}
. ev
. \}
.\" Named
. if \\n[#DOC_TYPE]=3 \{\
-. PRINT \&
-. sp |\\n[#DOCHEADER_ADVANCE]u-1v
+. if \\n[.ns] .rs
. ev DOCHEADER
. if \\n[#DOCHEADER_COLOR]=1 \{\
. nf
@@ -7765,17 +7399,17 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. L_MARGIN \\n[#DOC_L_MARGIN]u
. LL \\n[#DOC_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. if \\n[#PRINT_STYLE]=1 \{\
. CENTER
. TYPEWRITER
-. if \\n[#SINGLE_SPACE]=0 \{ .vs \\n[#DOC_LEAD]u/2u \}
+. if !\\n[#SINGLE_SPACE] .vs \\n[#DOC_LEAD]u/2u
. CAPS
. if !'\\*[$TITLE]'' \{\
. nr #ARG_NUM 0 1
. while \\n[#TITLE_NUM]>=\\n+[#ARG_NUM] \{\
. UNDERSCORE 4p "\\*[$TITLE_\\n[#ARG_NUM]]"
-.\}
+. \}
. \}
. CAPS OFF
. if !'\\*[$SUBTITLE]'' \{\
@@ -7783,81 +7417,79 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #ARG_NUM 0 1
. while \\n[#SUBTITLE_NUM]>=\\n+[#ARG_NUM] \{\
. UNDERSCORE 4p "\\*[$SUBTITLE_\\n[#ARG_NUM]]"
-.\}
+. \}
. \}
. if !'\\*[$AUTHOR_1]'' \{\
. sp
. PRINT \&\\*[$ATTRIBUTE_STRING]
. nr #AUTHORS \\n[#AUTHOR_NUM]
. nr #NEXT_AUTHOR 0 1
+. if !\\n[#SINGLE_SPACE] .vs \\n[#DOC_LEAD]u/2u
. while \\n[#AUTHORS]>\\n[#NEXT_AUTHOR] \{\
. PRINT \\*[$AUTHOR_\\n+[#NEXT_AUTHOR]]
-.\}
+. \}
. \}
-. ie \\n[#SINGLE_SPACE]=0 \{ .sp 2 \}
-. el \{ .sp \}
+. ie !\\n[#SINGLE_SPACE] .sp 2
+. el .sp
+. ie \\n[#DOCTYPE_UNDERLINE] \{\
. UNDERSCORE2 4p "\\*[$DOC_TYPE]"
-. if \\n[#SINGLE_SPACE]=1 \{ .sp \}
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. NAMED_DOCHEADER
+. \}
+. el \{\
+. PRINT "\\*[$DOC_TYPE]"
+. \}
+. if \\n[#SINGLE_SPACE]=1 .sp
. \}
+. if \\n[#PRINT_STYLE]=2 .NAMED_DOCHEADER
. ev
. \}
. if !\\n[#DOC_TYPE]=4 \{\
-. if \\n[#PRINT_STYLE]=1 \{\
-. sp
-. \}
-. if \\n[#PRINT_STYLE]=2 \{ .ALD \\n[#DOC_LEAD]u*2u \}
+. if \\n[#PRINT_STYLE]=1 .sp
+. if \\n[#PRINT_STYLE]=2 .ALD \\n[#DOC_LEAD]u*2u
. if \\n[#COLUMNS] \{\
. nr #COL_NUM 0 1
. nr #L_LENGTH_FOR_EPI \\n[#L_LENGTH]
-. po \\n[#COL_\\n+[#COL_NUM]_L_MARGIN]u
-. nr #L_MARGIN \\n(.o
+. ie \\n[#RV_POST_COVER] \{\
+. nr #COL_\\n+[#COL_NUM]_L_MARGIN \\n[#DOC_L_MARGIN]
+. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u
+. nr #L_MARGIN \\n[.o]
+. rr #RV_POST_COVER
+. \}
+. el \{\
+. po \\n[#COL_\\n+[#COL_NUM]_L_MARGIN]u
+. nr #L_MARGIN \\n[.o]
+. \}
. LL \\n[#COL_L_LENGTH]u
-. ta \\n(.lu
-. mk dc
+. ta \\n[.l]u
. \}
. \}
. \}
. LS \\n[#DOC_LEAD]u
. if \\n[#ADJ_DOC_LEAD]=1 \{\
. ie !r#ADVANCE_FROM_TOP \{\
-. if \\n[#DOC_HEADER]=1 \{ .SHIM \}
+. if \\n[#DOC_HEADER]=1 .SHIM
. \}
-. el \{ .rr #ADVANCE_FROM_TOP \}
+. el .rr #ADVANCE_FROM_TOP
. \}
+. mk dc
. QUAD \\*[$DOC_QUAD]
. CLEANUP_DEFAULTS
. nr #START_FOR_FOOTERS 1
-. if \\n[#COLLATED_DOC]=1 \{\
-. if !\\n[MNinit_DEFERRED]=1 \{\
-. MN_INIT rerun
-. \}
-. \}
-. if \\n[#MNinit_DEFERRED]=1 \{\
-. rr #MNinit_DEFERRED
-. nr #START_FOR_MNinit 1
-. MN_INIT \\*[$MN-arg1] \\*[$MN-arg2] \\*[$MN-arg3] \\*[$MN-arg4] \\*[$MN-arg5] \\*[$MN-arg6] \\*[$MN-arg7] \\*[$MN-arg8] \\*[$MN-arg9]
-. \}
-. nr #START_FOR_MNinit 2
-. if !\\n[#DOC_TYPE]=4 \{ .em TERMINATE \}
+. if !\\n[#DOC_TYPE]=4 .em TERMINATE
. if \\n[#LINENUMBERS]=2 \{\
. NUMBER_LINES RESUME
. nr #LINENUMBERS 1
. \}
. if \\n[#RUN_ON]=1 \{\
-. if \\n[#FN_MARKER_STYLE]=1 \{ .RUNON_WARNING \}
-. if \\n[#FN_MARKER_STYLE]=2 \{ .RUNON_WARNING \}
+. if \\n[#FN_MARKER_STYLE]=1 .RUNON_WARNING
+. if \\n[#FN_MARKER_STYLE]=2 .RUNON_WARNING
. \}
.END
\#
.MAC CLEANUP_DEFAULTS END
. nr #START 1
+. if \\n[#DOC_HEADER]=1 .nr #DOC_HEADER 2
. rm $TOC_TITLE_ITEM
. rm $DOCHEADER_LEAD_ADJ
-.\" Various registers
-. if \\n[#DOC_HEADER]=1 \{ .nr #DOC_HEADER 2 \}
. rr #MISC_NUM
. rr #MISCS
. rr #NEXT_AUTHOR
@@ -7873,23 +7505,23 @@ y\\R'#DESCENDER \\n[.cdp]'
\# *Argument:
\# <none> | <anything> [distance to advance from top of page]
\# *Function:
-\# Turns printing of document header on or off. If a second argument
-\# in units of measure is given, advances that distance from the
-\# top of the page without printing the document header.
+\# Turns printing of document header on or off. If a second
+\# numeric argument with units of measure is given, advances that
+\# distance from the top of the page without printing the document
+\# header.
\# *Notes:
\# Default is on. If the 1st argument is <anything> (which turns
\# document headers off), the optional 2nd argument may be given
\# (with a unit of measure).
\#
.MAC DOCHEADER END
-. ie '\\$1'' \{ .nr #DOC_HEADER 1 \}
+. ie '\\$1'' .nr #DOC_HEADER 1
. el \{\
-. if !'\\$2'' \{ .nr #ADVANCE_FROM_TOP (\\$2) \}
+. if !'\\$2'' .nr #ADVANCE_FROM_TOP (\\$2)
. nr #DOC_HEADER 0
. \}
.END
\#
-\#
\# DOCUMENT HEADER LEADING
\# -----------------------
\# *Arguments:
@@ -7904,7 +7536,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. ds $DOCHEADER_LEAD_ADJ \\$1
.END
\#
-\#
\# DOCHEADER ADVANCE
\# -----------------
\# *Arguments:
@@ -7919,7 +7550,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #DOCHEADER_ADVANCE (\\$1)
.END
\#
-\#
\# DOCUMENT LEFT MARGIN
\# --------------------
\# *Argument:
@@ -7927,7 +7557,7 @@ y\\R'#DESCENDER \\n[.cdp]'
\# *Function:
\# Creates or modifies register #DOC_L_MARGIN.
\# *Notes:
-\# Affects EVERYTHING on the page.
+\# Affects everything on the page.
\#
.MAC DOC_LEFT_MARGIN END
. br
@@ -7935,7 +7565,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. L_MARGIN \\n[#DOC_L_MARGIN]u
.END
\#
-\#
\# DOCUMENT RIGHT MARGIN
\# ---------------------
\# *Argument:
@@ -7943,7 +7572,7 @@ y\\R'#DESCENDER \\n[.cdp]'
\# *Function:
\# Creates or modifies register #DOC_R_MARGIN.
\# *Notes:
-\# Affects EVERYTHING on the page.
+\# Affects everything on the page.
\#
.MAC DOC_RIGHT_MARGIN END
. br
@@ -7952,24 +7581,22 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #DOC_L_LENGTH \\n[#L_LENGTH]
.END
\#
-\#
\# DOCUMENT LINE LENGTH
\# --------------------
\# *Argument:
\# <line length of document>
\# *Function:
-\# Creates or modifies string $DOC_L_LENGTH.
+\# Creates or modifies register #DOC_L_LENGTH.
\# *Notes:
-\# Affects EVERYTHING on the page.
+\# Affects everything on the page.
\#
.MAC DOC_LINE_LENGTH END
. br
. nr #DOC_L_LENGTH (\\$1)
. LL \\n[#DOC_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
.END
\#
-\#
\# DOCUMENT FAMILY
\# ---------------
\# *Argument:
@@ -7977,12 +7604,12 @@ y\\R'#DESCENDER \\n[.cdp]'
\# *Function:
\# Creates or modifies string $DOC_FAM.
\# *Notes:
-\# Affects everything EXCEPT headers and footers.
+\# Affects everything except headers and footers.
\#
.MAC DOC_FAMILY END
. br
-. ds $DOC_FAM \\$1
-. ds $FAMILY \\*[$DOC_FAM]
+. ds $DOC_FAM \\$1
+. ds $FAMILY \\*[$DOC_FAM]
. AUTHOR_FAMILY \\*[$DOC_FAM]
. BLOCKQUOTE_FAMILY \\*[$DOC_FAM]
. DOCHEADER_FAMILY \\*[$DOC_FAM]
@@ -7990,16 +7617,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. EPIGRAPH_FAMILY \\*[$DOC_FAM]
. FOOTNOTE_FAMILY \\*[$DOC_FAM]
. HDRFTR_FAMILY \\*[$DOC_FAM]
-. HEAD_FAMILY \\*[$DOC_FAM]
. LINENUMBER_FAMILY \\*[$DOC_FAM]
-. PARAHEAD_FAMILY \\*[$DOC_FAM]
. QUOTE_FAMILY \\*[$DOC_FAM]
-. SUBHEAD_FAMILY \\*[$DOC_FAM]
. SUBTITLE_FAMILY \\*[$DOC_FAM]
. TITLE_FAMILY \\*[$DOC_FAM]
.END
\#
-\#
\# DOCUMENT POINT SIZE
\# -------------------
\# *Argument:
@@ -8008,16 +7631,15 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Creates or modifies register #DOC_PT_SIZE.
\# *Notes:
\# DOC_PT_SIZE is the basis for calculating all type sizes in
-\# a document.
+\# a document. Ignored if PRINTSTYLE TYPEWRITE.
\#
.MAC DOC_PT_SIZE END
-. if \\n[#IGNORE] \{ .return \}
+. if \\n[#IGNORE] .return
. br
. PT_SIZE \\$1
. nr #DOC_PT_SIZE \\n[#PT_SIZE]
.END
\#
-\#
\# DOCUMENT LEAD
\# -------------
\# *Argument:
@@ -8034,17 +7656,16 @@ y\\R'#DESCENDER \\n[.cdp]'
\# on the overall document lead supplied by the register #DOC_LEAD,
\# DOC_LEAD, in the body of a document, should always be associated
\# with the start of a new page (in other words, just before or
-\# just after a manual NEWPAGE).
+\# just after a manual NEWPAGE). Ignored if PRINTSTYLE TYPEWRITE.
\#
.MAC DOC_LEAD END
-. if \\n[#IGNORE] \{ .return \}
+. if \\n[#IGNORE] .return
. br
. vs \\$1
. nr #DOC_LEAD \\n[#LEAD]
-. if '\\$2'ADJUST' \{ .TRAPS \}
+. if '\\$2'ADJUST' .TRAPS
.END
\#
-\#
\# ADJUST DOCUMENT LEAD
\# --------------------
\# *Arguments:
@@ -8064,7 +7685,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
.END
\#
-\#
\# SHIM
\# ----
\# *Argument:
@@ -8082,28 +7702,29 @@ y\\R'#DESCENDER \\n[.cdp]'
.MAC PROCESS_SHIM END
. while \\n+[#VALID_BASELINE]<\\n[#CURRENT_V_POS] \{\
.
-.\}
+. \}
. nr #SHIM \\n[#VALID_BASELINE]-\\n[#CURRENT_V_POS]
.END
\#
-\# And a macro to disable SHIM (useful sometimes with QUOTE and
-\# BLOCKQUOTE)
+\# And a macro to disable SHIM
\#
.MAC NO_SHIM END
-. ie '\\$1'' \{ .nr #NO_SHIM 1 \}
-. el \{ .rr #NO_SHIM \}
+. ie '\\$1'' .nr #NO_SHIM 1
+. el .rr #NO_SHIM
.END
\#
+.nr #NO_SHIM 2 \" Restored to 1 in DEFAULTS.
+\#
.MAC SHIM END
-. ie r#NO_SHIM \{ .return \}
+. ie \\n[#NO_SHIM] .return
. el \{\
. nr #VALID_BASELINE \\n[#T_MARGIN]-1v \\n[#DOC_LEAD]
-. if !r#CURRENT_V_POS \{ .nr #CURRENT_V_POS \\n(.d \}
+. if !r#CURRENT_V_POS .nr #CURRENT_V_POS \\n[.d]
. ie r#ADVANCE_FROM_TOP \{\
. ie \\n[#CURRENT_V_POS]<(\\n[#T_MARGIN]-1v) \{\
. while \\n-[#VALID_BASELINE]>\\n[#CURRENT_V_POS] \{\
.
-.\}
+. \}
. nr #VALID_BASELINE +\\n[#DOC_LEAD]
. nr #SHIM \\n[#VALID_BASELINE]-\\n[#CURRENT_V_POS]
. \}
@@ -8119,8 +7740,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
.END
\#
-\#
-\#
\# ====================================================================
\#
\# +++INTERNATIONALIZATION+++
@@ -8133,17 +7752,17 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Creates or modifies string $ATTRIBUTE_STRING.
\# *Notes:
\# Default is "by". A blank string ("") may be used if no
-\# attribution is desired.
+\# attribution is desired. Blank line results.
\#
.MAC ATTRIBUTE_STRING END
. if !'\\$1'DOC_COVER' \{\
-. if !'\\$1'COVER' \{ .nr #NEITHER 1 \}
+. if !'\\$1'COVER' .nr #NEITHER 1
. \}
. if !'\\$1'COVER' \{\
-. if !'\\$1'DOC_COVER' \{ .nr #NEITHER 1 \}
+. if !'\\$1'DOC_COVER' .nr #NEITHER 1
. \}
. if '\\$1'DOC_COVER' \{\
-. ds $ATTRIBUTE_STRING_DOCCOVER \\$2
+. ds $ATTRIBUTE_STRING_DOC_COVER \\$2
. \}
. if '\\$1'COVER' \{\
. ds $ATTRIBUTE_STRING_COVER \\$2
@@ -8154,7 +7773,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
.END
\#
-\#
\# CHAPTER STRING
\# --------------
\# *Argument:
@@ -8168,7 +7786,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. ds $CHAPTER_STRING \\$1
.END
\#
-\#
\# DRAFT STRING
\# ------------
\# *Argument:
@@ -8182,7 +7799,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. ds $DRAFT_STRING \\$1
.END
\#
-\#
\# REVISION STRING
\# ---------------
\# *Argument:
@@ -8196,7 +7812,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. ds $REVISION_STRING \\$1
.END
\#
-\#
\# FINIS STRING
\# ------------
\# *Argument:
@@ -8211,8 +7826,8 @@ y\\R'#DESCENDER \\n[.cdp]'
.END
\#
.MAC FINIS_STRING_CAPS END
-. ie '\\$1'' \{ .nr #FINIS_STRING_CAPS 1 \}
-. el \{ .nr #FINIS_STRING_CAPS 0 \}
+. ie '\\$1'' .nr #FINIS_STRING_CAPS 1
+. el .nr #FINIS_STRING_CAPS 0
.END
\#
\# ====================================================================
@@ -8232,8 +7847,20 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Default is OFF.
\#
.MAC RECTO_VERSO END
-. ie '\\$1'' \{ .nr #RECTO_VERSO 1 \}
-. el \{ .nr #RECTO_VERSO 0 \}
+. ie '\\$1'' .nr #RECTO_VERSO 1
+. el .nr #RECTO_VERSO 0
+.END
+\#
+\# FORCE RECTO
+\# -----------
+\# *Function:
+\# Forces doccover and cover pages to recto
+\#
+.MAC RV_HARD_SET_MARGINS END
+. DOC_LEFT_MARGIN \\n[@L_MARGIN]u
+. DOC_RIGHT_MARGIN \\n[@R_MARGIN]u
+. po \\n[#DOC_L_MARGIN]u
+. LL \\n[#DOC_L_LENGTH]u
.END
\#
\# ====================================================================
@@ -8250,20 +7877,15 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Default is 2 for TYPEWRITE, 3 for TYPESET.
\#
.MAC EPIGRAPH_INDENT END
-. if r#EPI_OFFSET_VALUE \{ .rr #EPI_OFFSET_VALUE \}
-. if !'\\*[$EPI_OFFSET_VALUE]'' \{ .rm $EPI_OFFSET_VALUE \}
+. if \\n[#EPI_OFFSET_VALUE] .rr #EPI_OFFSET_VALUE
+. if !'\\*[$EPI_OFFSET_VALUE]'' .rm $EPI_OFFSET_VALUE
. ds $EVAL_EI_ARG \\$1
. substring $EVAL_EI_ARG -1
-. ie \B'\\*[$EVAL_EI_ARG]' \{\
-. nr #EPI_OFFSET_VALUE \\$1
-. \}
-. el \{\
-. ds $EPI_OFFSET_VALUE \\$1
-. \}
+. ie \B'\\*[$EVAL_EI_ARG]' .nr #EPI_OFFSET_VALUE \\$1
+. el .ds $EPI_OFFSET_VALUE \\$1
. rm $EVAL_EI_ARG
.END
\#
-\#
\# EPIGRAPH AUTOLEAD
\# -----------------
\# *Argument:
@@ -8277,7 +7899,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #EPI_AUTOLEAD \\$1
.END
\#
-\#
\# EPIGRAPH
\# --------
\# *Arguments:
@@ -8305,7 +7926,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. if \\n[#START] \{\
. if \\n[#PRINT_STYLE]=1 \{\
-. if \\n[#AUTHOR_LINES]=1 \{ .ALD \\n[#DOC_LEAD]u \}
+. if \\n[#AUTHOR_LINES]=1 .ALD \\n[#DOC_LEAD]u
. \}
. \}
. ie '\\$1'' \{\
@@ -8313,28 +7934,26 @@ y\\R'#DESCENDER \\n[.cdp]'
. ev EPIGRAPH
. nr #IN_DIVER 1
. ll \\n[#L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. CHECK_INDENT
. if \\n[#COLUMNS] \{\
. ie \\n[#START] \{\
. ll \\n[#DOC_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. el \{\
. ll \\n[#COL_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. \}
. CENTER
. if \\n[#PRINT_STYLE]=1 \{\
. fam \\*[$TYPEWRITER_FAM]
. ft R
-. if '\\*[$EPI_FT]'I' \{\
-. FT I
-. \}
+. if '\\*[$EPI_FT]'I' .FT I
. ps \\*[$TYPEWRITER_PS]
-. ie \\n[#SINGLE_SPACE] \{ .vs \\n[#DOC_LEAD]u \}
-. el \{ .vs \\n[#DOC_LEAD]u/2u \}
+. ie \\n[#SINGLE_SPACE] .vs \\n[#DOC_LEAD]u
+. el .vs \\n[#DOC_LEAD]u/2u
. nr #EPI_LEAD \\n[#LEAD]
. nr #EPI_LEAD_DIFF \\n[#DOC_LEAD]-\\n[#EPI_LEAD]
. \}
@@ -8363,52 +7982,47 @@ y\\R'#DESCENDER \\n[.cdp]'
. ev EPIGRAPH
. ie \\n[#START] \{\
. ie \\n[#COLUMNS] \{\
-. ie r#EPI_OFFSET_VALUE \{\
-. ll \\n[#L_LENGTH_FOR_EPI]u-(\\n[#PP_INDENT]u*(\\n[#EPI_OFFSET_VALUE]u*2u))
-. \}
-. el \{\
-. ll \\n[#L_LENGTH_FOR_EPI]u-(\\*[$EPI_OFFSET_VALUE]u*2u)
-. \}
-. ta \\n(.lu
+. ie r#EPI_OFFSET_VALUE \
+. ll \
+\\n[#L_LENGTH_FOR_EPI]u-(\\n[#PP_INDENT]u*(\\n[#EPI_OFFSET_VALUE]u*2u))
+. el \
+. ll \
+\\n[#L_LENGTH_FOR_EPI]u-(\\*[$EPI_OFFSET_VALUE]u*2u)
+. ta \\n[.l]u
. \}
. el \{\
-. ie r#EPI_OFFSET_VALUE \{\
-. ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#EPI_OFFSET_VALUE]u*2u))
-. \}
-. el \{\
+. ie r#EPI_OFFSET_VALUE \
+. ll \
+\\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#EPI_OFFSET_VALUE]u*2u))
+. el \
. ll \\n[#L_LENGTH]u-(\\*[$EPI_OFFSET_VALUE]*2u)
-. \}
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. \}
. el \{\
-. ie r#EPI_OFFSET_VALUE \{\
-. ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#EPI_OFFSET_VALUE]u*2u))
-. \}
-. el \{\
+. ie r#EPI_OFFSET_VALUE \
+. ll \
+\\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#EPI_OFFSET_VALUE]u*2u))
+. el \
. ll \\n[#L_LENGTH]u-(\\*[$EPI_OFFSET_VALUE]*2u)
-. \}
-. ta \\n(.lu
+. ta \\n[.l]u
. if \\n[#COLUMNS] \{\
-. ie r#EPI_OFFSET_VALUE \{\
-. ll \\n[#COL_L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#EPI_OFFSET_VALUE]u*2u))
-. \}
-. el \{\
+. ie r#EPI_OFFSET_VALUE \
+. ll \
+\\n[#COL_L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#EPI_OFFSET_VALUE]u*2u))
+. el \
. ll \\n[#COL_L_LENGTH]u-(\\*[$EPI_OFFSET_VALUE]*2u)
-. \}
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. CHECK_INDENT
. \}
. if \\n[#PRINT_STYLE]=1 \{\
. fam \\*[$TYPEWRITER_FAM]
. ft R
-. if '\\*[$EPI_FT]'I' \{\
-. FT I
-. \}
+. if '\\*[$EPI_FT]'I' .FT I
. ps \\*[$TYPEWRITER_PS]
-. ie \\n[#SINGLE_SPACE] \{ .vs \\n[#DOC_LEAD]u \}
-. el \{ .vs \\n[#DOC_LEAD]u/2u \}
+. ie \\n[#SINGLE_SPACE] .vs \\n[#DOC_LEAD]u
+. el .vs \\n[#DOC_LEAD]u/2u
. QUAD LEFT
. HY OFF
. nr #EPI_LEAD \\n[#LEAD]
@@ -8442,7 +8056,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
.END
\#
-\#
\# DO EPIGRAPH
\# -----------
\# *Arguments:
@@ -8479,24 +8092,23 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #EPI_WHITESPACE (\\n[#DOC_LEAD]*\\n[#EPI_LINES])-\\n[#EPI_DEPTH]
. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
-.\}
+. \}
. if \\n[#PRINT_STYLE]=1 \{\
-. if !\\n[#SINGLE_SPACE]=1 \{ .ALD \\n[#DOC_LEAD]u \}
+. if !\\n[#SINGLE_SPACE]=1 .ALD \\n[#DOC_LEAD]u
. \}
. if \\n[#PRINT_STYLE]=2 \{\
-. ie !\\n[#DOC_TYPE]=2 \{ .RLD \\n[#DOC_LEAD]u \}
+. ie !\\n[#DOC_TYPE]=2 .RLD \\n[#DOC_LEAD]u
. el \{\
-. ie '\\*[$CHAPTER_TITLE]'' \{ .RLD \\n[#DOC_LEAD]u \}
+. ie '\\*[$CHAPTER_TITLE]'' .RLD \\n[#DOC_LEAD]u
. el \{\
-. if '\\*[$CHAPTER]'' \{ .RLD \\n[#DOC_LEAD]u \}
+. if '\\*[$CHAPTER]'' .RLD \\n[#DOC_LEAD]u
. \}
. \}
-. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \{\
+. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \
. ALD \\n[#EPI_LEAD_DIFF]u+(\\n[#EPI_WHITESPACE]u/2u)
-. \}
-. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
-. ALD \\n[#EPI_LEAD_DIFF]u+(\\n[#EPI_WHITESPACE]u/2u)-\\n[#DOC_LEAD]u
-. \}
+. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \
+. ALD \
+\\n[#EPI_LEAD_DIFF]u+(\\n[#EPI_WHITESPACE]u/2u)-\\n[#DOC_LEAD]u
. \}
. \}
. el \{\
@@ -8505,51 +8117,56 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #EPI_WHITESPACE (\\n[#DOC_LEAD]*\\n[#EPI_LINES])-\\n[#EPI_DEPTH]
. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
-.\}
+. \}
. ie \\n[#PRINT_STYLE]=1 \{\
-. if \\n[#EPI_WHITESPACE]=\\n[#DOC_LEAD] \{ .ALD \\n[#EPI_WHITESPACE]u/2u \}
+. if \\n[#EPI_WHITESPACE]=\\n[#DOC_LEAD] \
+. ALD \\n[#EPI_WHITESPACE]u/2u
. \}
. el \{\
-. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \{\
-. ALD \\n[#EPI_LEAD_DIFF]u+(\\n[#EPI_WHITESPACE]u/2u)
-. \}
-. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
-. ALD \\n[#EPI_LEAD_DIFF]u+(\\n[#EPI_WHITESPACE]u/2u)-\\n[#DOC_LEAD]u
-. \}
+. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \
+. ALD \
+\\n[#EPI_LEAD_DIFF]u+(\\n[#EPI_WHITESPACE]u/2u)
+. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \
+. ALD \
+\\n[#EPI_LEAD_DIFF]u+(\\n[#EPI_WHITESPACE]u/2u)-\\n[#DOC_LEAD]u
. \}
-. if \\n[#DIVER_FN]=2 \{ .rr #DIVER_FN \}
+. if \\n[#DIVER_FN]=2 .rr #DIVER_FN
. \}
. el \{\
. nr #EPI_LINES_TO_TRAP 0 1
. while \\n[#EPI_LEAD]*\\n+[#EPI_LINES_TO_TRAP]<\\n[#TRAP_DISTANCE] \{\
. nr #LOOP 1
-.\}
+. \}
. nr #EPI_LINES_TO_TRAP -1
-. nr #EPI_WHITESPACE (\\n[#EPI_LINES_TO_TRAP]*\\n[#DOC_LEAD])-(\\n[#EPI_LINES_TO_TRAP]*\\n[#EPI_LEAD])
+. nr #EPI_WHITESPACE \
+(\\n[#EPI_LINES_TO_TRAP]*\\n[#DOC_LEAD])-(\\n[#EPI_LINES_TO_TRAP]*\\n[#EPI_LEAD])
. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
-.\}
-. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \{ .ALD \\n[#EPI_WHITESPACE]u \}
-. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{ .ALD \\n[#EPI_WHITESPACE]u-\\n[#DOC_LEAD]u \}
-. \}
+. \}
+. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \
+. ALD \\n[#EPI_WHITESPACE]u
+. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \
+. ALD \\n[#EPI_WHITESPACE]u-\\n[#DOC_LEAD]u
+. \}
. \}
. if \\n[#EPIGRAPH]=1 \{\
. po \\n[#L_MARGIN]u
. if \\n[#COLUMNS] \{\
. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u
-. nr #L_MARGIN \\n(.o
+. nr #L_MARGIN \\n[.o]
. \}
. \}
. if \\n[#EPIGRAPH]=2 \{\
-. ie r#EPI_OFFSET_VALUE \{\
-. nr #EPI_OFFSET \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE])
-. \}
-. el \{ .nr #EPI_OFFSET \\n[#L_MARGIN]+\\*[$EPI_OFFSET_VALUE] \}
+. ie r#EPI_OFFSET_VALUE \
+. nr #EPI_OFFSET \
+\\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE])
+. el .nr #EPI_OFFSET \\n[#L_MARGIN]+\\*[$EPI_OFFSET_VALUE]
. if \\n[#COLUMNS] \{\
-. ie r#EPI_OFFSET_VALUE \{\
-. nr #EPI_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE])
-. \}
-. el \{ .nr #EPI_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+\\*[$EPI_OFFSET_VALUE] \}
+. ie r#EPI_OFFSET_VALUE \
+. nr #EPI_OFFSET \
+\\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE])
+. el .nr #EPI_OFFSET \
+\\n[#COL_\\n[#COL_NUM]_L_MARGIN]+\\*[$EPI_OFFSET_VALUE]
. \}
. po \\n[#EPI_OFFSET]u
. \}
@@ -8557,16 +8174,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. EPI_TEXT
. br
. ie \\n[#START] \{\
-. if \\n[#PRINT_STYLE]=1 \{\
-. SHIM
-. \}
+. if \\n[#PRINT_STYLE]=1 .SHIM
. if \\n[#PRINT_STYLE]=2 \{\
-. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \{\
+. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \
. ALD \\n[#EPI_WHITESPACE]u/2u
-. \}
-. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
+. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \
. ALD (\\n[#EPI_WHITESPACE]u/2u)-\\n[#DOC_LEAD]u
-. \}
. SHIM
. \}
. \}
@@ -8575,40 +8188,41 @@ y\\R'#DESCENDER \\n[.cdp]'
. ie \\n[#EPI_FITS] \{\
. ie \\n[#FN_FOR_EPI] \{\
. nr #EPI_LINES_TO_END 1
-. nr #EPI_WHITESPACE (\\n[#EPI_LINES_TO_END]*\\n[#DOC_LEAD])-(\\n[#EPI_LINES_TO_END]*\\n[#EPI_LEAD])
+. nr #EPI_WHITESPACE \
+(\\n[#EPI_LINES_TO_END]*\\n[#DOC_LEAD])-(\\n[#EPI_LINES_TO_END]*\\n[#EPI_LEAD])
. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
-. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
-.\}
+. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
+. \}
. ALD \\n[#EPI_WHITESPACE]u-(\\n[#DOC_LEAD]u-\\n[#EPI_LEAD]u)
. \}
. el \{\
. ie \\n[#PRINT_STYLE]=1 \{\
-. if \\n[#EPI_WHITESPACE]=\\n[#DOC_LEAD] \{ .ALD \\n[#EPI_WHITESPACE]u \}
+. if \\n[#EPI_WHITESPACE]=\\n[#DOC_LEAD] \
+. ALD \\n[#EPI_WHITESPACE]u
. \}
. el \{\
-. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \{\
+. if \\n[#EPI_WHITESPACE]<\\n[#DOC_LEAD] \
. ALD \\n[#EPI_WHITESPACE]u/2u
-. \}
-. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
+. if \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \
. ALD (\\n[#EPI_WHITESPACE]u/2u)-\\n[#DOC_LEAD]u
-. \}
. \}
. \}
. \}
. el \{\
. nr #EPI_LINES_TO_END \\n[#EPI_LINES]-\\n[#EPI_LINES_TO_TRAP]
-. if \\n[#LOOP] \{ .nr #EPI_LINES_TO_END +1 \}
+. if \\n[#LOOP] .nr #EPI_LINES_TO_END +1
. rr #LOOP
-. nr #EPI_WHITESPACE (\\n[#EPI_LINES_TO_END]*\\n[#DOC_LEAD])-(\\n[#EPI_LINES_TO_END]*\\n[#EPI_LEAD])
+. nr #EPI_WHITESPACE \
+(\\n[#EPI_LINES_TO_END]*\\n[#DOC_LEAD])-(\\n[#EPI_LINES_TO_END]*\\n[#EPI_LEAD])
. while \\n[#EPI_WHITESPACE]>\\n[#DOC_LEAD] \{\
-. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
-.\}
+. nr #EPI_WHITESPACE -\\n[#DOC_LEAD]
+. \}
. ALD \\n[#EPI_WHITESPACE]u-(\\n[#DOC_LEAD]u-\\n[#EPI_LEAD]u)
. if \\n[#PRINT_STYLE]=1 \{\
. if !\\n[#SINGLE_SPACE] \{\
. nr #EPI_LINES_EVEN \\n[#EPI_LINES_TO_END]%2
-. ie \\n[#EPI_LINES_EVEN] \{ .ALD .5v \}
-. el \{ .RLD .5v \}
+. ie \\n[#EPI_LINES_EVEN] .ALD .5v
+. el .RLD .5v
. rr #EPI_LINES_EVEN
. \}
. \}
@@ -8621,12 +8235,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. po \\n[#L_MARGIN]u
. if \\n[#COLUMNS] \{\
. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u
-. nr #L_MARGIN \\n(.o
+. nr #L_MARGIN \\n[.o]
. \}
. if \\n[#START] \{\
. if \\n[#COLUMNS] \{\
. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u
-. nr #L_MARGIN \\n(.o
+. nr #L_MARGIN \\n[.o]
. mk dc
. \}
. \}
@@ -8648,28 +8262,39 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Deposits --END-- at the end of a document.
\#
.MAC FINIS END
+. if !\\n[@TOP] \{\
+. if \\n[.t]<=2v \{\
+. tm1 "[mom]: Insufficient room to print \\$0 on last page.
+. return
+. \}
+. \}
. br
. ev FINIS
. evc 0
-. if \\n[#TAB_ACTIVE] \{ .TQ \}
-. if \\n[#INDENT_ACTIVE] \{ .IQ CLEAR \}
+. if \\n[#TAB_ACTIVE] .TQ
+. if \\n[#INDENT_ACTIVE] .IQ CLEAR
. nr #EM_ADJUST (1m/8)
. if \\n[#COLUMNS] \{\
. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u
-. nr #L_MARGIN \\n(.o
+. nr #L_MARGIN \\n[.o]
. \}
. ALD \\n[#DOC_LEAD]u
. CENTER
-. if \\n[#FINIS_STRING_CAPS]=1 \{ .CAPS \}
-. if \\n[#PRINT_STYLE]=1 \{ .PRINT "--\\*[$FINIS_STRING]--\}
+. if \\n[#FINIS_STRING_CAPS]=1 .CAPS
+. if \\n[#PRINT_STYLE]=1 .PRINT "--\\*[$FINIS_STRING]--
. if \\n[#PRINT_STYLE]=2 \{\
-. ie \\n[#FINIS_COLOR] \{\
-. PRINT "\m[\\*[$FINIS_COLOR]]\v'-\\n[#EM_ADJUST]u'\(em\v'+\\n[#EM_ADJUST]u'\\*[$FINIS_STRING]\v'-\\n[#EM_ADJUST]u'\*[FU1]\(em\m[]
-. \}
-. el \{ .PRINT \v'-\\n[#EM_ADJUST]u'\(em\v'+\\n[#EM_ADJUST]u'\\*[$FINIS_STRING]\v'-\\n[#EM_ADJUST]u'\*[FU1]\(em\m[] \}
-. \}
-. if \\n[#FINIS_STRING_CAPS]=1 \{ .CAPS OFF \}
+. ie \\n[#FINIS_COLOR] \
+. PRINT \
+\m[\\*[$FINIS_COLOR]]\v'-\\n[#EM_ADJUST]u'\[em]\v'+\\n[#EM_ADJUST]u'\
+\\*[$FINIS_STRING]\v'-\\n[#EM_ADJUST]u'\*[FU1]\[em]\m[]\c
+. el .PRINT \
+\v'-\\n[#EM_ADJUST]u'\[em]\v'+\\n[#EM_ADJUST]u'\
+\\*[$FINIS_STRING]\v'-\\n[#EM_ADJUST]u'\*[FU1]\[em]\m[]\c
+. \}
+. EL
+. if \\n[#FINIS_STRING_CAPS]=1 .CAPS OFF
. ev
+. pdfsync
.END
\#
\# ====================================================================
@@ -8682,7 +8307,6 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
.ds PAGE# \En[#PAGENUMBER]
\#
-\#
\# HDRFTR RULE GAP
\# ---------------
\# *Argument:
@@ -8697,15 +8321,14 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #HDRFTR_RULE_GAP (\\$1)
. if '\\$0'HEADER_RULE_GAP' \{\
. nr #HEADER_RULE_GAP \\n[#HDRFTR_RULE_GAP]
-. if r#FOOTER_RULE_GAP \{ .nr #FOOTER_RULE_GAP \\n[#FOOTER_RULE_GAP] \}
+. if r #FOOTER_RULE_GAP .nr #FOOTER_RULE_GAP \\n[#FOOTER_RULE_GAP]
. \}
. if '\\$0'FOOTER_RULE_GAP' \{\
. nr #FOOTER_RULE_GAP \\n[#HDRFTR_RULE_GAP]
-. if r#HEADER_RULE_GAP \{ .nr #HEADER_RULE_GAP \\n[#HEADER_RULE_GAP] \}
+. if r #HEADER_RULE_GAP .nr #HEADER_RULE_GAP \\n[#HEADER_RULE_GAP]
. \}
.END
\#
-\#
\# HDRFTR LEFT
\# -----------
\# *Argument:
@@ -8723,7 +8346,7 @@ y\\R'#DESCENDER \\n[.cdp]'
\# If the argument is the # character, simply prints the current
\# page number.
\#
-\# If the user wants to *incorporate* the page number into the string,
+\# If the user wants to incorporate the page number into the string,
\# \*[PAGE#] must be used. For example, if the user wants to put
\# an elipsis before the page number in the string, s/he should use
\# ...\*[PAGE#], not ...#
@@ -8733,7 +8356,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. ds $HDRFTR_LEFT \\$1
.END
\#
-\#
\# HDRFTR LEFT CAPS
\# ----------------
\# *Argument:
@@ -8745,16 +8367,13 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Default is on.
\#
.MAC HDRFTR_LEFT_CAPS END
-. ie '\\$1'' \{\
-. nr #HDRFTR_LEFT_CAPS 1
-. \}
+. ie '\\$1'' .nr #HDRFTR_LEFT_CAPS 1
. el \{\
. nr #HDRFTR_LEFT_CAPS 0
. ds $HDRFTR_LEFT_SIZE_CHANGE +0
. \}
.END
\#
-\#
\# HDRFTR CENTER
\# -------------
\# *Argument:
@@ -8771,7 +8390,7 @@ y\\R'#DESCENDER \\n[.cdp]'
\# If the argument is the # character, simply prints the current
\# page number.
\#
-\# If the user wants to *incorporate* the page number into the string,
+\# If the user wants to incorporate the page number into the string,
\# \*[PAGE#] must be used. For example, if the user wants to put
\# an elipsis before the page number in the string, s/he should use
\# ...\*[PAGE#], not ...#
@@ -8789,7 +8408,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. ds $HDRFTR_CENTER \\$1
.END
\#
-\#
\# HDRFTR CENTER CAPS
\# ------------------
\# *Argument:
@@ -8801,16 +8419,13 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Default is on.
\#
.MAC HDRFTR_CENTER_CAPS END
-. ie '\\$1'' \{\
-. nr #HDRFTR_CENTER_CAPS 1
-. \}
+. ie '\\$1'' .nr #HDRFTR_CENTER_CAPS 1
. el \{\
. nr #HDRFTR_CENTER_CAPS 0
. ds $HDRFTR_CENTER_SIZE_CHANGE +0
. \}
.END
\#
-\#
\# HDRFTR CENTER PADDING
\# ---------------------
\# *Argument:
@@ -8824,20 +8439,15 @@ y\\R'#DESCENDER \\n[.cdp]'
\# line length. Long titles or long author names can screw up
\# visual centering, or create overprints. This macro allows the
\# user to pad the center string by the specified amount of space
-\# to fix these problems. Use only one of LEFT or RIGHT.
+\# to fix these problems.
\#
\# A unit of measure is required.
\#
.MAC HDRFTR_CENTER_PAD END
-. if '\\$1'LEFT' \{\
-. nr #HDRFTR_CTR_PAD_LEFT (\\$2)
-. \}
-. if '\\$1'RIGHT' \{\
-. nr #HDRFTR_CTR_PAD_RIGHT (\\$2)
-. \}
+. if '\\$1'LEFT' .nr #HDRFTR_CTR_PAD_LEFT (\\$2)
+. if '\\$1'RIGHT' .nr #HDRFTR_CTR_PAD_RIGHT (\\$2)
.END
\#
-\#
\# SWITCH HDRFTR CENTER PADDING SIDE - support macro
\# --------------------------------
\# *Argument:
@@ -8854,7 +8464,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. HDRFTR_CENTER_PAD RIGHT \\n[#HDRFTR_CTR_PAD_TMP]u
.END
\#
-\#
\# HDRFTR RIGHT
\# ------------
\# *Argument:
@@ -8870,7 +8479,7 @@ y\\R'#DESCENDER \\n[.cdp]'
\# If the argument is the # character, simply prints the current
\# page number.
\#
-\# If the user wants to *incorporate* the page number into the string,
+\# If the user wants to incorporate the page number into the string,
\# \*[PAGE#] must be used. For example, if the user wants to put
\# an elipsis before the page number in the string, s/he should use
\# ...\*[PAGE#], not ...#
@@ -8880,7 +8489,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. ds $HDRFTR_RIGHT \\$1
.END
\#
-\#
\# HDRFTR RIGHT CAPS
\# -----------------
\# *Argument:
@@ -8892,16 +8500,13 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Default is on.
\#
.MAC HDRFTR_RIGHT_CAPS END
-. ie '\\$1'' \{\
-. nr #HDRFTR_RIGHT_CAPS 1
-. \}
+. ie '\\$1'' .nr #HDRFTR_RIGHT_CAPS 1
. el \{\
. nr #HDRFTR_RIGHT_CAPS 0
. ds $HDRFTR_RIGHT_SIZE_CHANGE +0
. \}
.END
\#
-\#
\# HDRFTR RULE
\# -----------
\# *Arguments:
@@ -8911,22 +8516,27 @@ y\\R'#DESCENDER \\n[.cdp]'
\# under the header/over the footer. Otherwise, turns HDRFTR_RULE
\# on or off.
\#
-.MAC HDRFTR_RULE END \"To print rule under header/over footer.
-. if \\n[#HEADERS_ON] \{ .nr #HDRFTR_RULE_GAP \\n[#HEADER_RULE_GAP] \}
-. if \\n[#FOOTERS_ON] \{ .nr #HDRFTR_RULE_GAP \\n[#FOOTER_RULE_GAP] \}
+.MAC HDRFTR_RULE END
+. if r #HEADERS_ON \{\
+. if \\n[#HEADERS_ON]=1 .nr #HDRFTR_RULE_GAP \\n[#HEADER_RULE_GAP]
+. \}
+. if r #FOOTERS_ON \{\
+. if \\n[#FOOTERS_ON]=1 .nr #HDRFTR_RULE_GAP \\n[#FOOTER_RULE_GAP]
+. \}
. if '\\$0'HDRFTR_RULE_INTERNAL' \{\
. ie \\n[#USERDEF_HDRFTR] \{\
. nr #CAP_HEIGHT_ADJUST \\n[#HDRFTR_HEIGHT]
. if \\n[#HEADERS_ON] \{\
-. rt \\nyu
+. rt \\n[y]u
. ALD \\n[#HDRFTR_RULE_GAP]u
-. nr #HDRFTR_RULE_WEIGHT \\n[#HEADER_RULE_WEIGHT]
+. nr #HDRFTR_RULE_WEIGHT \\n[#HEADER_RULE_WEIGHT]
. nr #HDRFTR_RULE_WEIGHT_ADJ \\n[#HEADER_RULE_WEIGHT_ADJ]
. \}
. if \\n[#FOOTERS_ON] \{\
-. rt \\nyu
-. RLD \\n[#HDRFTR_RULE_GAP]u+\\n[#CAP_HEIGHT_ADJUST]u+\\n[#FOOTER_RULE_WEIGHT]u
-. nr #HDRFTR_RULE_WEIGHT \\n[#FOOTER_RULE_WEIGHT]
+. rt \\n[y]u
+. RLD \
+\\n[#HDRFTR_RULE_GAP]u+\\n[#CAP_HEIGHT_ADJUST]u+\\n[#FOOTER_RULE_WEIGHT]u
+. nr #HDRFTR_RULE_WEIGHT \\n[#FOOTER_RULE_WEIGHT]
. nr #HDRFTR_RULE_WEIGHT_ADJ \\n[#FOOTER_RULE_WEIGHT_ADJ]
. \}
. ie \\n[#HDRFTR_RULE_COLOR]=1 \{\
@@ -8950,29 +8560,26 @@ y\\R'#DESCENDER \\n[.cdp]'
. br
. \}
. el \{\
-. if \\n[#PRINT_STYLE]=1 \{\
-. nr #CAP_HEIGHT_ADJUST \\n[#CAP_HEIGHT]
-. \}
+. if \\n[#PRINT_STYLE]=1 .nr #CAP_HEIGHT_ADJUST \\n[#CAP_HEIGHT]
. if \\n[#PRINT_STYLE]=2 \{\
-. ie \\n[#LEFT_CAP_HEIGHT]>\\n[#CENTER_CAP_HEIGHT] \{\
+. ie \\n[#LEFT_CAP_HEIGHT]>\\n[#CENTER_CAP_HEIGHT] \
. nr #CAP_HEIGHT_ADJUST \\n[#LEFT_CAP_HEIGHT]
-. \}
-. el \{ .nr #CAP_HEIGHT_ADJUST \\n[#CENTER_CAP_HEIGHT] \}
-. ie \\n[#CAP_HEIGHT_ADJUST]>\\n[#RIGHT_CAP_HEIGHT] \{\
+. el .nr #CAP_HEIGHT_ADJUST \\n[#CENTER_CAP_HEIGHT]
+. ie \\n[#CAP_HEIGHT_ADJUST]>\\n[#RIGHT_CAP_HEIGHT] \
. nr #CAP_HEIGHT_ADJUST \\n[#CAP_HEIGHT_ADJUST]
-. \}
-. el \{ .nr #CAP_HEIGHT_ADJUST \\n[#RIGHT_CAP_HEIGHT] \}
+. el .nr #CAP_HEIGHT_ADJUST \\n[#RIGHT_CAP_HEIGHT]
. \}
. if \\n[#HEADERS_ON] \{\
-. rt \\nyu
+. rt \\n[y]u
. ALD \\n[#HDRFTR_RULE_GAP]u
-. nr #HDRFTR_RULE_WEIGHT \\n[#HEADER_RULE_WEIGHT]
+. nr #HDRFTR_RULE_WEIGHT \\n[#HEADER_RULE_WEIGHT]
. nr #HDRFTR_RULE_WEIGHT_ADJ \\n[#HEADER_RULE_WEIGHT_ADJ]
. \}
. if \\n[#FOOTERS_ON] \{\
-. rt \\nyu
-. RLD \\n[#HDRFTR_RULE_GAP]u+\\n[#CAP_HEIGHT_ADJUST]u+\\n[#FOOTER_RULE_WEIGHT]u
-. nr #HDRFTR_RULE_WEIGHT \\n[#FOOTER_RULE_WEIGHT]
+. rt \\n[y]u
+. RLD \
+\\n[#HDRFTR_RULE_GAP]u+\\n[#CAP_HEIGHT_ADJUST]u+\\n[#FOOTER_RULE_WEIGHT]u
+. nr #HDRFTR_RULE_WEIGHT \\n[#FOOTER_RULE_WEIGHT]
. nr #HDRFTR_RULE_WEIGHT_ADJ \\n[#FOOTER_RULE_WEIGHT_ADJ]
. \}
. ie \\n[#HDRFTR_RULE_COLOR]=1 \{\
@@ -9017,15 +8624,13 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. \}
. if '\\$0'HDRFTR_RULE' \{\
-. ie '\\$1'' \{ .nr #HDRFTR_RULE 1 \}
-. el \{ .nr #HDRFTR_RULE 0 \}
+. ie '\\$1'' .nr #HDRFTR_RULE 1
+. el .nr #HDRFTR_RULE 0
. \}
.END
\#
-\#
.ALIAS HDRFTR_RULE_INTERNAL HDRFTR_RULE
\#
-\#
\# HDRFTR PLAIN
\# ------------
\# *Arguments:
@@ -9052,7 +8657,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. HDRFTR_RIGHT_CAPS OFF
.END
\#
-\#
\# SWITCH HDRFTR
\# -------------
\# *Arguments:
@@ -9065,7 +8669,7 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
\# Typically, the author string appears at the left of header/footers,
\# and the title string appears at the right. This switches the
-\# location of the two. Useful in conjuction with RECTO_VERSO to tweak
+\# location of the two. Useful in conjunction with RECTO_VERSO to tweak
\# switches on alternate pages to come out as the user wishes. The
\# assumption of RECTO_VERSO is that the first page of the document
\# (recto) is odd, and even though it has no header/footer, if it did
@@ -9075,13 +8679,12 @@ y\\R'#DESCENDER \\n[.cdp]'
\# TITLE...CENTER...AUTHOR (or whatever strings the user has supplied
\# for HDRFTR_LEFT/RIGHT). SWITCH_HDRFTRS allows the user to get the
\# desired string in the desired place on the desired recto/verso page.
-\#
+\#
.MAC SWITCH_HDRFTR END
-. ie '\\$1'' \{ .nr #SWITCH_HDRFTR 1 \}
-. el \{ .nr #SWITCH_HDRFTR 0 \}
+. ie '\\$1'' .nr #SWITCH_HDRFTR 1
+. el .nr #SWITCH_HDRFTR 0
.END
\#
-\#
\# USER DEFINED HDRFTR RECTO
\# -------------------------
\# *Arguments:
@@ -9098,24 +8701,21 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
.MAC HDRFTR_RECTO END
. nr #USERDEF_HDRFTR 1
-. if '\\$1'L' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 1 \}
-. if '\\$1'LEFT' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 1 \}
-. if '\\$1'C' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 2 \}
-. if '\\$1'CENTER' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 2 \}
-. if '\\$1'CENTRE' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 2 \}
-. if '\\$1'R' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 3 \}
-. if '\\$1'RIGHT' \{ .nr #USERDEF_HDRFTR_RECTO_QUAD 3 \}
+. if '\\$1'L' .nr #USERDEF_HDRFTR_RECTO_QUAD 1
+. if '\\$1'LEFT' .nr #USERDEF_HDRFTR_RECTO_QUAD 1
+. if '\\$1'C' .nr #USERDEF_HDRFTR_RECTO_QUAD 2
+. if '\\$1'CENTER' .nr #USERDEF_HDRFTR_RECTO_QUAD 2
+. if '\\$1'CENTRE' .nr #USERDEF_HDRFTR_RECTO_QUAD 2
+. if '\\$1'R' .nr #USERDEF_HDRFTR_RECTO_QUAD 3
+. if '\\$1'RIGHT' .nr #USERDEF_HDRFTR_RECTO_QUAD 3
. shift
. ie '\\$1'CAPS' \{\
. nr #HDRFTR_RECTO_CAPS 1
. ds $USERDEF_HDRFTR_RECTO \\$2
. \}
-. el \{\
-. ds $USERDEF_HDRFTR_RECTO \\$1
-. \}
+. el .ds $USERDEF_HDRFTR_RECTO \\$1
.END
\#
-\#
\# USER DEFINED HDRFTR VERSO
\# -------------------------
\# *Arguments:
@@ -9130,21 +8730,19 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
.MAC HDRFTR_VERSO END
. nr #USERDEF_HDRFTR 1
-. if '\\$1'L' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 1 \}
-. if '\\$1'LEFT' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 1 \}
-. if '\\$1'C' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 2 \}
-. if '\\$1'CENTER' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 2 \}
-. if '\\$1'CENTRE' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 2 \}
-. if '\\$1'R' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 3 \}
-. if '\\$1'RIGHT' \{ .nr #USERDEF_HDRFTR_VERSO_QUAD 3 \}
+. if '\\$1'L' .nr #USERDEF_HDRFTR_VERSO_QUAD 1
+. if '\\$1'LEFT' .nr #USERDEF_HDRFTR_VERSO_QUAD 1
+. if '\\$1'C' .nr #USERDEF_HDRFTR_VERSO_QUAD 2
+. if '\\$1'CENTER' .nr #USERDEF_HDRFTR_VERSO_QUAD 2
+. if '\\$1'CENTRE' .nr #USERDEF_HDRFTR_VERSO_QUAD 2
+. if '\\$1'R' .nr #USERDEF_HDRFTR_VERSO_QUAD 3
+. if '\\$1'RIGHT' .nr #USERDEF_HDRFTR_VERSO_QUAD 3
. shift
. ie '\\$1'CAPS' \{\
. nr #HDRFTR_VERSO_CAPS 1
. ds $USERDEF_HDRFTR_VERSO \\$2
. \}
-. el \{\
-. ds $USERDEF_HDRFTR_VERSO \\$1
-. \}
+. el .ds $USERDEF_HDRFTR_VERSO \\$1
.END
\#
\# PRINT FOOTER ON FIRST PAGE
@@ -9158,11 +8756,10 @@ y\\R'#DESCENDER \\n[.cdp]'
\# page of doc.
\#
.MAC FOOTER_ON_FIRST_PAGE END
-. ie '\\$1'' \{ .nr #PRINT_FOOTER_ON_PAGE_1 1 \}
-. el \{ .rr #PRINT_FOOTER_ON_PAGE_1 \}
+. ie '\\$1'' .nr #PRINT_FOOTER_ON_PAGE_1 1
+. el .rr #PRINT_FOOTER_ON_PAGE_1
.END
\#
-\#
\# PRINT PAGE NUMBER ON FIRST PAGE
\# -------------------------------
\# *Arguments:
@@ -9175,11 +8772,10 @@ y\\R'#DESCENDER \\n[.cdp]'
\# has been user set at top of page.
\#
.MAC PAGENUM_ON_FIRST_PAGE END
-. ie '\\$1'' \{ .nr #PRINT_PAGENUM_ON_PAGE_1 1 \}
-. el \{ .rr #PRINT_PAGENUM_ON_PAGE_1 \}
+. ie '\\$1'' .nr #PRINT_PAGENUM_ON_PAGE_1 1
+. el .rr #PRINT_PAGENUM_ON_PAGE_1
.END
\#
-\#
\# PRINT HEADER/FOOTER
\# -------------------
\# *Arguments:
@@ -9198,12 +8794,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. if \\n[#START_FOR_FOOTERS] \{\
. rr #START_FOR_FOOTERS
. if !\\n[#PRINT_FOOTER_ON_PAGE_1] \{\
-. ie !\\n[#HDRFTR_BOTH] \{ .return \}
+. ie !\\n[#HDRFTR_BOTH] .return
. el \{\
. rr #FOOTERS_ON
. nr #HEADERS_ON 1
-. ie \\n[#HEADER_RULE]=1 \{ .HEADER_RULE \}
-. el \{ .HEADER_RULE OFF \}
+. ie \\n[#HEADER_RULE]=1 .HEADER_RULE
+. el .HEADER_RULE OFF
. HEADER_RECTO \\*[$HDR_RECTO_QUAD] "\\*[$HDR_RECTO_STRING]"
. return
. \}
@@ -9234,7 +8830,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #SWITCH_HDRFTR 0
. \}
. nr #PAGENUMBER \\n%+\\n[#PAGE_NUM_ADJ]
-. if \\n[#ENDNOTES] \{ .PAGENUM_STYLE \\*[$EN_PN_STYLE] \}
+. if \\n[#ENDNOTES] .PAGENUM_STYLE \\*[$EN_PN_STYLE]
. if \\n[#PRINT_STYLE]=1 \{\
. if \\n[#FOOTERS_ON] \{\
. di NULL
@@ -9242,82 +8838,76 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #LEFT_CAP_HEIGHT \\n[#CAP_HEIGHT]
. di
. \}
-. if o \{ .RIGHT \}
-. if e \{ .LEFT \}
-. if \\n[#RECTO_VERSO]=0 \{ .LEFT \}
-. if \\n[#HDRFTR_LEFT_CAPS] \{ .CAPS \}
+. if o .RIGHT
+. if e .LEFT
+. if \\n[#RECTO_VERSO]=0 .LEFT
+. if \\n[#HDRFTR_LEFT_CAPS] .CAPS
. ie '\\*[$HDRFTR_LEFT]'#' \{\
. PRINT \\n[#PAGENUMBER]
. \}
. el \{\
-. ie !'\\*[$HDRFTR_LEFT]'' \{ . PRINT \\*[$HDRFTR_LEFT] \}
-. el \{ .PRINT \& \}
+. ie !'\\*[$HDRFTR_LEFT]'' .PRINT \\*[$HDRFTR_LEFT]
+. el .PRINT \&
. \}
-. if \\n[#HDRFTR_LEFT_CAPS] \{ .CAPS OFF \}
+. if \\n[#HDRFTR_LEFT_CAPS] .CAPS OFF
. CENTER
-. if \\n[#HDRFTR_CENTER_CAPS] \{ .CAPS \}
-. rt \\nyu
-. ie '\\*[$HDRFTR_CENTER]'#' \{\
-. PRINT \\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\\n[#PAGENUMBER]\\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'
-. \}
+. if \\n[#HDRFTR_CENTER_CAPS] .CAPS
+. rt \\n[y]u
+. ie '\\*[$HDRFTR_CENTER]'#' .PRINT \
+\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\\n[#PAGENUMBER]\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'
. el \{\
-. ie !'\\*[$HDRFTR_CENTER]'' \{ .PRINT \\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\\*[$HDRFTR_CENTER]\\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u' \}
-. el \{ .PRINT \& \}
-. \}
-. if \\n[#HDRFTR_CENTER_CAPS] \{ .CAPS OFF \}
-. if o \{ .LEFT \}
-. if e \{ .RIGHT \}
-. if \\n[#RECTO_VERSO]=0 \{ .RIGHT \}
-. if \\n[#HDRFTR_RIGHT_CAPS] \{ .CAPS \}
-. rt \\nyu
-. ie '\\*[$HDRFTR_RIGHT]'#' \{\
-. PRINT \\n[#PAGENUMBER]
-. \}
+. ie !'\\*[$HDRFTR_CENTER]'' .PRINT \
+\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\\*[$HDRFTR_CENTER]\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'
+. el .PRINT \&
+. \}
+. if \\n[#HDRFTR_CENTER_CAPS] .CAPS OFF
+. if o .LEFT
+. if e .RIGHT
+. if \\n[#RECTO_VERSO]=0 .RIGHT
+. if \\n[#HDRFTR_RIGHT_CAPS] .CAPS
+. rt \\n[y]u
+. ie '\\*[$HDRFTR_RIGHT]'#' .PRINT \\n[#PAGENUMBER]
. el \{\
-. ie !'\\*[$HDRFTR_RIGHT]'' \{ .PRINT \\*[$HDRFTR_RIGHT] \}
-. el \{ .PRINT \& \}
+. ie !'\\*[$HDRFTR_RIGHT]'' .PRINT \\*[$HDRFTR_RIGHT]
+. el .PRINT \&
. \}
-. if \\n[#HDRFTR_RIGHT_CAPS] \{ .CAPS OFF \}
+. if \\n[#HDRFTR_RIGHT_CAPS] .CAPS OFF
. \}
. if \\n[#PRINT_STYLE]=2 \{\
. if \\n[#HDRFTR_COLOR]=1 \{\
. nf
\m[\\*[$HDRFTR_COLOR]]
. \}
-. fam \\*[$HDRFTR_LEFT_FAM]
-. ft \\*[$HDRFTR_LEFT_FT]
-. ps \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_LEFT_SIZE_CHANGE]
-. vs 12
+. fam \\*[$HDRFTR_LEFT_FAM]
+. ft \\*[$HDRFTR_LEFT_FT]
+. ps \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_LEFT_SIZE_CHANGE]
+. vs 12
. if \\n[#FOOTERS_ON] \{\
. di NULL
. SIZESPECS
. nr #LEFT_CAP_HEIGHT \\n[#CAP_HEIGHT]
. di
. \}
-. if o \{ .LEFT \}
-. if e \{ .RIGHT \}
-. if \\n[#RECTO_VERSO]=0 \{ .LEFT \}
-. if \\n[#HDRFTR_LEFT_CAPS] \{ .CAPS \}
+. if o .LEFT
+. if e .RIGHT
+. if \\n[#RECTO_VERSO]=0 .LEFT
+. if \\n[#HDRFTR_LEFT_CAPS] .CAPS
. ie '\\*[$HDRFTR_LEFT]'#' \{\
-. ie \\n[#HDRFTR_LEFT_COLOR]=1 \{\
+. ie \\n[#HDRFTR_LEFT_COLOR]=1 \
. PRINT \m[\\*[$HDRFTR_LEFT_COLOR]]\\n[#PAGENUMBER]\m[]
-. \}
-. el \{\
+. el \
. PRINT \\n[#PAGENUMBER]
-. \}
. \}
. el \{\
. ie !'\\*[$HDRFTR_LEFT]'' \{\
-. ie \\n[#HDRFTR_LEFT_COLOR]=1 \{\
-. PRINT \m[\\*[$HDRFTR_LEFT_COLOR]]\\*[$HDRFTR_LEFT]\m[]
-. \}
-. el \{\
-. PRINT \\*[$HDRFTR_LEFT]
-. \}
+. ie \\n[#HDRFTR_LEFT_COLOR]=1 \
+. PRINT \m[\\*[$HDRFTR_LEFT_COLOR]]\\*[$HDRFTR_LEFT]\m[]
+. el \
+. PRINT \\*[$HDRFTR_LEFT]
. \}
-. el \{ .PRINT \& \}
+. el .PRINT \&
. \}
-. if \\n[#HDRFTR_LEFT_CAPS] \{ .CAPS OFF \}
+. if \\n[#HDRFTR_LEFT_CAPS] .CAPS OFF
. fam \\*[$HDRFTR_CENTER_FAM]
. ft \\*[$HDRFTR_CENTER_FT]
. ps \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_CENTER_SIZE_CHANGE]
@@ -9329,63 +8919,57 @@ y\\R'#DESCENDER \\n[.cdp]'
. di
. \}
. CENTER
-. if \\n[#HDRFTR_CENTER_CAPS] \{ .CAPS \}
-. rt \\nyu
+. if \\n[#HDRFTR_CENTER_CAPS] .CAPS
+. rt \\n[y]u
. ie '\\*[$HDRFTR_CENTER]'#' \{\
-. ie \\n[#HDRFTR_CENTER_COLOR]=1 \{\
-. PRINT \\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\m[\\*[$HDRFTR_CENTER_COLOR]]\\n[#PAGENUMBER]\\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'\m[]
-. \}
-. el \{\
-. PRINT \\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\\n[#PAGENUMBER]\\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'
-. \}
+. ie \\n[#HDRFTR_CENTER_COLOR]=1 .PRINT \
+\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\m[\\*[$HDRFTR_CENTER_COLOR]]\
+\\n[#PAGENUMBER]\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'\m[]
+. el .PRINT \
+\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\\n[#PAGENUMBER]\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'
. \}
. el \{\
. ie !'\\*[$HDRFTR_CENTER]'' \{\
-. ie \\n[#HDRFTR_CENTER_COLOR]=1 \{\
-. PRINT \\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\m[\\*[$HDRFTR_CENTER_COLOR]]\\*[$HDRFTR_CENTER]\\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'\m[]
-. \}
-. el \{\
-. PRINT \\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\\*[$HDRFTR_CENTER]\\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'
-. \}
-. \}
-. el \{ .PRINT \& \}
-. \}
-. if \\n[#HDRFTR_CENTER_CAPS] \{ .CAPS OFF \}
-. fam \\*[$HDRFTR_RIGHT_FAM]
-. ft \\*[$HDRFTR_RIGHT_FT]
-. ps \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_RIGHT_SIZE_CHANGE]
-. vs 12
+. ie \\n[#HDRFTR_CENTER_COLOR]=1 .PRINT \
+\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\m[\\*[$HDRFTR_CENTER_COLOR]]\
+\\*[$HDRFTR_CENTER]\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'\m[]
+. el .PRINT \
+\h'\\n[#HDRFTR_CTR_PAD_LEFT]u'\\*[$HDRFTR_CENTER]\h'\\n[#HDRFTR_CTR_PAD_RIGHT]u'
+. \}
+. el .PRINT \&
+. \}
+. if \\n[#HDRFTR_CENTER_CAPS] .CAPS OFF
+. fam \\*[$HDRFTR_RIGHT_FAM]
+. ft \\*[$HDRFTR_RIGHT_FT]
+. ps \\n[#HDRFTR_PT_SIZE]u\\*[$HDRFTR_RIGHT_SIZE_CHANGE]
+. vs 12
. if \\n[#FOOTERS_ON] \{\
. di NULL
. SIZESPECS
. nr #RIGHT_CAP_HEIGHT \\n[#CAP_HEIGHT]
. di
. \}
-. if o \{ .RIGHT \}
-. if e \{ .LEFT \}
-. if \\n[#RECTO_VERSO]=0 \{ .RIGHT \}
-. if \\n[#HDRFTR_RIGHT_CAPS] \{ .CAPS \}
-. rt \\nyu
+. if o .RIGHT
+. if e .LEFT
+. if \\n[#RECTO_VERSO]=0 .RIGHT
+. if \\n[#HDRFTR_RIGHT_CAPS] .CAPS
+. rt \\n[y]u
. ie '\\*[$HDRFTR_RIGHT]'#' \{\
-. ie \\n[#HDRFTR_RIGHT_COLOR]=1 \{\
+. ie \\n[#HDRFTR_RIGHT_COLOR]=1 \
. PRINT \m[\\*[$HDRFTR_RIGHT_COLOR]]\\n[#PAGENUMBER]\m[]
-. \}
-. el \{\
+. el \
. PRINT \\n[#PAGENUMBER]
-. \}
. \}
. el \{\
. ie !'\\*[$HDRFTR_RIGHT]'' \{\
-. ie \\n[#HDRFTR_RIGHT_COLOR]=1 \{\
+. ie \\n[#HDRFTR_RIGHT_COLOR]=1 \
. PRINT \m[\\*[$HDRFTR_RIGHT_COLOR]]\\*[$HDRFTR_RIGHT]\m[]
-. \}
-. el \{\
+. el \
. PRINT \\*[$HDRFTR_RIGHT]
-. \}
. \}
-. el \{ .PRINT \& \}
+. el .PRINT \&
. \}
-. if \\n[#HDRFTR_RIGHT_CAPS] \{ .CAPS OFF \}
+. if \\n[#HDRFTR_RIGHT_CAPS] .CAPS OFF
. \}
. if \\n[#HDRFTR_RULE] \{\
. HDRFTR_RULE_INTERNAL
@@ -9393,7 +8977,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. br
.END
\#
-\#
\# PRINT USER DEFINED HEADER/FOOTER
\# --------------------------------
\# *Arguments:
@@ -9408,8 +8991,8 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #PAGENUMBER \\n%+\\n[#PAGE_NUM_ADJ]
. fc ^ #
. if \\n[#PRINT_STYLE]=2 \{\
-. fam \\*[$HDRFTR_FAM]
-. ft R
+. fam \\*[$HDRFTR_FAM]
+. ft R
. ps \\n[#HDRFTR_PT_SIZE]u
. if \\n[#HDRFTR_COLOR]=1 \{\
. nf
@@ -9418,12 +9001,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. ie \\n[#RECTO_VERSO] \{\
. if o \{\
-. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=1 \{ .LEFT \}
-. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=2 \{ .CENTER \}
-. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=3 \{ .RIGHT \}
-. if \\n[#HDRFTR_RECTO_CAPS]=1 \{ .CAPS \}
+. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=1 .LEFT
+. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=2 .CENTER
+. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=3 .RIGHT
+. if \\n[#HDRFTR_RECTO_CAPS]=1 .CAPS
. PRINT \\*[$USERDEF_HDRFTR_RECTO]
-. if \\n[#HDRFTR_RECTO_CAPS]=1 \{ .CAPS OFF \}
+. if \\n[#HDRFTR_RECTO_CAPS]=1 .CAPS OFF
. EOL
. if \\n[#FOOTERS_ON] \{\
. di NULL
@@ -9434,12 +9017,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. if e \{\
. ie !'\\*[$USERDEF_HDRFTR_VERSO]'' \{\
-. if \\n[#USERDEF_HDRFTR_VERSO_QUAD]=1 \{ .LEFT \}
-. if \\n[#USERDEF_HDRFTR_VERSO_QUAD]=2 \{ .CENTER \}
-. if \\n[#USERDEF_HDRFTR_VERSO_QUAD]=3 \{ .RIGHT \}
-. if \\n[#HDRFTR_VERSO_CAPS]=1 \{ .CAPS \}
+. if \\n[#USERDEF_HDRFTR_VERSO_QUAD]=1 .LEFT
+. if \\n[#USERDEF_HDRFTR_VERSO_QUAD]=2 .CENTER
+. if \\n[#USERDEF_HDRFTR_VERSO_QUAD]=3 .RIGHT
+. if \\n[#HDRFTR_VERSO_CAPS]=1 .CAPS
. PRINT \\*[$USERDEF_HDRFTR_VERSO]
-. if \\n[#HDRFTR_VERSO_CAPS]=1 \{ .CAPS OFF \}
+. if \\n[#HDRFTR_VERSO_CAPS]=1 .CAPS OFF
. EOL
. if \\n[#FOOTERS_ON] \{\
. di NULL
@@ -9449,12 +9032,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. \}
. el \{\
-. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=1 \{ .LEFT \}
-. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=2 \{ .CENTER \}
-. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=3 \{ .RIGHT \}
-. if \\n[#HDRFTR_RECTO_CAPS]=1 \{ .CAPS \}
+. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=1 .LEFT
+. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=2 .CENTER
+. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=3 .RIGHT
+. if \\n[#HDRFTR_RECTO_CAPS]=1 .CAPS
. PRINT \\*[$USERDEF_HDRFTR_RECTO]
-. if \\n[#HDRFTR_RECTO_CAPS]=1 \{ .CAPS OFF \}
+. if \\n[#HDRFTR_RECTO_CAPS]=1 .CAPS OFF
. EOL
. if \\n[#FOOTERS_ON] \{\
. di NULL
@@ -9466,12 +9049,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. \}
. el \{\
-. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=1 \{ .LEFT \}
-. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=2 \{ .CENTER \}
-. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=3 \{ .RIGHT \}
-. if \\n[#HDRFTR_RECTO_CAPS]=1 \{ .CAPS \}
+. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=1 .LEFT
+. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=2 .CENTER
+. if \\n[#USERDEF_HDRFTR_RECTO_QUAD]=3 .RIGHT
+. if \\n[#HDRFTR_RECTO_CAPS]=1 .CAPS
. PRINT \\*[$USERDEF_HDRFTR_RECTO]
-. if \\n[#HDRFTR_RECTO_CAPS]=1 \{ .CAPS OFF \}
+. if \\n[#HDRFTR_RECTO_CAPS]=1 .CAPS OFF
. EOL
. if \\n[#FOOTERS_ON] \{\
. di NULL
@@ -9490,7 +9073,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
.END
\#
-\#
\# +++HEADERS+++
\#
\# HEADERS (off or on)
@@ -9503,11 +9085,10 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Default is on.
\#
.MAC HEADERS END
-. ie '\\$1'' \{ .nr #HEADERS_ON 1 \}
-. el \{ .nr #HEADERS_ON 0 \}
+. ie '\\$1'' .nr #HEADERS_ON 1
+. el .nr #HEADERS_ON 0
.END
\#
-\#
\# HEADER MARGIN
\# -------------
\# *Argument:
@@ -9523,7 +9104,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #HEADER_MARGIN (\\$1)
.END
\#
-\#
\# HEADER GAP
\# ----------
\# *Argument:
@@ -9538,7 +9118,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #HEADER_GAP (\\$1)
.END
\#
-\#
\# HEADER
\# ------
\# *Arguments:
@@ -9546,39 +9125,39 @@ y\\R'#DESCENDER \\n[.cdp]'
\# *Function:
\# Prints header appropriate to DOC_TYPE, PRINTSTYLE, and COPYSTYLE.
\# *Notes:
-\# In order to convert the title string to caps in the header (in the
-\# event that the user enters .TITLE in caps/lc), I've used
-\# quad left, quad centre, and quad right to arrange the three bits
-\# of the header, rather than .tl. This allows the use of the CAPS macro.
-\# The downside is that I have to add \\v'-(\\n[#LEAD]u*<n>) in order
-\# for -Tlatin1 output to align the header/footer strings on the baseline.
-\# The console output still isn't brilliant, but at least it's
-\# comprehensible.
+\# In order to convert the title string to caps in the header
+\# (in the event that the user enters .TITLE in caps/lc), I've
+\# used quad left, quad centre, and quad right to arrange the
+\# three bits of the header, rather than .tl. This allows the
+\# use of the CAPS macro. The downside is that I have to add
+\# \\v'-(\\n[#LEAD]u*<n>) in order for -Tlatin1 output to align
+\# the header/footer strings on the baseline. The console output
+\# still isn't brilliant, but at least it's comprehensible.
\#
.MAC HEADER END
. MNtop
. rr #FROM_FOOTER
. nr #FROM_HEADER 1
. nr #LAST_FN_COUNT_FOR_COLS \\n[#FN_COUNT_FOR_COLS]
-. if \\n[#FN_DEPTH] \{ .PROCESS_FN_LEFTOVER \}
+. if \\n[#FN_DEPTH] .PROCESS_FN_LEFTOVER
. rr #RULED
-. if \\n[#RESET_FN_NUMBER] \{ .nr #FN_NUMBER 0 1 \}
+. if \\n[#RESET_FN_NUMBER] .nr #FN_NUMBER 0 1
. po \\n[#DOC_L_MARGIN]u
. if \\n[#RECTO_VERSO] \{\
-. if !\\n[#TOC_RV_SWITCH] \{\
. nr #DOC_LR_MARGIN_TMP \\n[#DOC_L_MARGIN]
. DOC_LEFT_MARGIN \\n[#DOC_R_MARGIN]u
+. if \\n[#CROPS] .DOC_LEFT_MARGIN \\n[#DOC_R_MARGIN]u+\\n[cropmarks]u
. DOC_RIGHT_MARGIN \\n[#DOC_LR_MARGIN_TMP]u
+. if \\n[#CROPS] .DOC_RIGHT_MARGIN \\n[#DOC_LR_MARGIN_TMP]u-\\n[cropmarks]u
. SWITCH_HDRFTR_CENTER_PAD
. \}
-. rr #TOC_RV_SWITCH
. \}
. ev HEADER
-. if \\n[#PAGE_NUM_V_POS]=1 \{ .vs 0 \}
+. if \\n[#PAGE_NUM_V_POS]=1 .vs 0
. sp |\\n[#HEADER_MARGIN]u-1v
. mk y
. ll \\n[#DOC_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. if \\n[#PRINT_STYLE]=1 \{\
. fam \\*[$TYPEWRITER_FAM]
. ft R
@@ -9604,8 +9183,8 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. \}
. \}
-. if !n \{ .nop \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap' \}
-. RLD 1v
+. if !n .nop \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap'
+. sp -1v
. ie \\n[#HEADERS_ON] \{\
. PRINT_HDRFTR
. sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
@@ -9616,9 +9195,9 @@ y\\R'#DESCENDER \\n[.cdp]'
. PRINT_PAGE_NUMBER
. sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
. \}
-. el \{ .sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u \}
+. el .sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
. \}
-. el \{ .sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u \}
+. el .sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
. \}
. if \\n[#PRINT_STYLE]=1 \{\
. if \\n[#ENDNOTES]=1 \{\
@@ -9628,39 +9207,33 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. \}
. \}
-. nr #PAGE_TOP \\n(nl
+. nr #PAGE_TOP \\n[nl]
. ev
. po \\n[#L_MARGIN]u
-. if \\n[#RECTO_VERSO] \{\
-. nr #L_MARGIN +\\n[#L_MARGIN_DIFF]
-. \}
+. if \\n[#RECTO_VERSO] .nr #L_MARGIN +\\n[#L_MARGIN_DIFF]
. if \\n[#CAPS_WAS_ON] \{\
. CAPS
. rr #CAPS_WAS_ON
. \}
-. if \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \}
+. if \\n[#TAB_ACTIVE] .TAB \\n[#CURRENT_TAB]
. if \\n[#QUOTE] \{\
-. ie \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \}
+. ie \\n[#TAB_ACTIVE] .TAB \\n[#CURRENT_TAB]
. el \{\
-. ie r#Q_OFFSET_VALUE \{\
-. nr #Q_OFFSET \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
-. \}
-. el \{\
-. nr #Q_OFFSET \\n[#L_MARGIN]+\\*[$Q_OFFSET_VALUE]
-. \}
+. ie \\n[#Q_OFFSET_VALUE] .nr #Q_OFFSET \
+\\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
+. el .nr #Q_OFFSET \\n[#L_MARGIN]+\\*[$Q_OFFSET_VALUE]
. po \\n[#Q_OFFSET]u
. \}
-. if \\n[#PRINT_STYLE]=2 \{ .ALD \\n[#Q_LEAD_DIFF]u \}
+. if \\n[#PRINT_STYLE]=2 .sp \\n[#Q_LEAD_DIFF]u
. \}
. if \\n[#EPIGRAPH] \{\
-. ie \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \}
+. ie \\n[#TAB_ACTIVE] .TAB \\n[#CURRENT_TAB]
. el \{\
-. ie r#EPI_OFFSET_VALUE \{\
-. nr #EPI_OFFSET \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE])
-. \}
-. el \{\
+. ie r#EPI_OFFSET_VALUE \
+. nr #EPI_OFFSET \
+\\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE])
+. el \
. nr #EPI_OFFSET \\n[#L_MARGIN]+\\*[$EPI_OFFSET_VALUE]
-. \}
. po \\n[#EPI_OFFSET]u
. \}
. \}
@@ -9670,38 +9243,37 @@ y\\R'#DESCENDER \\n[.cdp]'
. rr #EPI_ACTIVE
. \}
. el \{\
-. ie \\n[#EPI_FITS] \{ .ns \}
-. el \{ .ALD \\n[#DOC_LEAD]u-\\n[#EPI_LEAD]u \}
+. ie \\n[#EPI_FITS] .ns
+. el .sp \\n[#DOC_LEAD]u-\\n[#EPI_LEAD]u
. \}
. \}
-. el \{ .ns \}
+. el .ns
. ns
. if \\n[#COLUMNS] \{\
. nr #FN_COUNT_FOR_COLS 0 1
. nr #L_MARGIN \\n[#DOC_L_MARGIN]
-. if \\n[#RECTO_VERSO] \{ .COLUMNS \\n[#NUM_COLS] \\n[#GUTTER]u \}
+. if \\n[#RECTO_VERSO] .COLUMNS \\n[#NUM_COLS] \\n[#GUTTER]u
. nr #COL_NUM 0 1
. mk dc
. po \\n[#COL_\\n+[#COL_NUM]_L_MARGIN]u
-. nr #L_MARGIN \\n(.o
-. if \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \}
+. nr #L_MARGIN \\n[.o]
+. if \\n[#TAB_ACTIVE] .TAB \\n[#CURRENT_TAB]
. ll \\n[#COL_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. if \\n[#QUOTE] \{\
-. ie r#Q_OFFSET_VALUE \{\
+. ie \\n[#Q_OFFSET_VALUE] \
. po +(\\n[#PP_INDENT]u*\\n[#Q_OFFSET_VALUE]u)
-. \}
-. el \{\
+. el \
. po +\\*[$Q_OFFSET_VALUE]
-. \}
. \}
. if \\n[#EPIGRAPH] \{\
. if \\n[#EPI_ACTIVE] \{\
-. ie \\n[#EPI_FITS] \{ . \}
-. el \{ .nr dc -\\n[#EPI_LEAD_DIFF] \}
+. ie \\n[#EPI_FITS] .
+. el .nr dc -\\n[#EPI_LEAD_DIFF]
. \}
. ie r#EPI_OFFSET_VALUE \{\
-. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u+(\\n[#PP_INDENT]u*\\n[#EPI_OFFSET_VALUE]u)
+. po \
+\\n[#COL_\\n[#COL_NUM]_L_MARGIN]u+(\\n[#PP_INDENT]u*\\n[#EPI_OFFSET_VALUE]u)
. \}
. el \{\
. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u+\\*[$EPI_OFFSET_VALUE]
@@ -9712,16 +9284,16 @@ y\\R'#DESCENDER \\n[.cdp]'
. rr #RESET_FN_COUNTERS
. PROCESS_FN_IN_DIVER
. nr #FN_COUNT \\n[#SAVED_FN_COUNT] 1
-. if \\n[#COLUMNS]=1 \{ .nr #FN_COUNT_FOR_COLS \\n[#SAVED_FN_COUNT_FOR_COLS] 1 \}
-. ie \\n[#RESET_FN_NUMBER]=1 \{ .nr #FN_NUMBER \\n[#SAVED_FN_NUMBER] 1 \}
-. el \{ .nr #FN_NUMBER \\n[#FN_NUMBER] 1 \}
+. if \\n[#COLUMNS]=1 .nr #FN_COUNT_FOR_COLS \\n[#SAVED_FN_COUNT_FOR_COLS] 1
+. ie \\n[#RESET_FN_NUMBER]=1 .nr #FN_NUMBER \\n[#SAVED_FN_NUMBER] 1
+. el .nr #FN_NUMBER \\n[#FN_NUMBER] 1
. rm FN_IN_DIVER
-. if dRUNON_FN_IN_DIVER \{ .rm RUNON_FN_IN_DIVER \}
+. if dRUNON_FN_IN_DIVER .rm RUNON_FN_IN_DIVER
. \}
. rr #FROM_HEADER
. rr #DEFER_SPACE_ADDED
. if !\\n[#FN_DEPTH] \{\
-. if r#DIVERTED \{ .rr #DIVERTED \}
+. if r #DIVERTED .rr #DIVERTED
. \}
. if \\n[#MN_OVERFLOW_LEFT]=1 \{\
. MN LEFT
@@ -9741,22 +9313,55 @@ y\\R'#DESCENDER \\n[.cdp]'
. rm MN_OVERFLOW_RIGHT
. rr #MN_OVERFLOW_RIGHT
. rr #no-repeat-MN-right
-. if \\n[#PRE_COLLATE]=1 \{ .rr #PRE_COLLATE \}
+. if \\n[#PRE_COLLATE]=1 .rr #PRE_COLLATE
. if \\n[#UNDERLINE_WAS_ON]=1 \{\
. vs 0
-. ie !n \{\
-. nop \R'#UNDERLINE_ON 1'\X'ps: exec \\n[_w] \\n[_d] decorline' \}
-. \}
-. el \{\
-. ul 1000
-. \}
-. rr #UNDERLINE_WAS_ON
+. ie !n \
+. nop \R'#UNDERLINE_ON 1'\X'ps: exec \\n[_w] \\n[_d] decorline'
+. el .ul 1000
. br
+. ns
+. rr #UNDERLINE_WAS_ON
+. \}
+. if \\n[#RESTORE_PAGINATION] \{\
+. PAGINATE
+. rr #RESTORE_PAGINATION
+. \}
+. ch RR_@TOP
+. wh \\n[nl]u+1u RR_@TOP
+. if d PDF*IMAGE \{\
+. rs
+. nf
+. PDF*IMAGE
+. sp \\n[pdf-img:depth]u
+. PDF_IMAGE_CLEAN
+. \}
+. if \\n[defer] \{\
+. rs
+. sp |\\n[#T_MARGIN]u-\\n[.v]u
+. ev protect
+. nf
+. nr defer-count \\n[defer]
+. nr loop-count 0 1
+. while \\n+[loop-count]<=\\n[defer-count] \{\
+. FLOAT*DIV:\\n[loop-count]
+. if \\n[D-float:\\n[loop-count]] \{\
+. sp \
+-\\n[float-depth:\\n[loop-count]]u+\\n[D-float:\\n[loop-count]]u+\\n[#DOC_LEAD]u
+. rr D-float:\\n[loop-count]
+. \}
+. rm FLOAT*DIV:\\n[loop-count]
+. rr float-depth:\\n[loop-count]
+. \}
+. ev
+. SHIM
+. rr defer
+. rr loop-count
+. rr defer-count
+. rm float-adj
+. rm float-adj:top
+. rm float-adj:bottom
. \}
-. if \\n[#RESTORE_PAGINATION] \{\
-. PAGINATE
-. rr #RESTORE_PAGINATION
-. \}
.END
\#
\# ====================================================================
@@ -9775,15 +9380,14 @@ y\\R'#DESCENDER \\n[.cdp]'
\# or the pagenumber position has been changed to left or right.
\#
.MAC FOOTERS END
-. ie '\\$1'' \{\
+. ie '\\$1'' \{\
. rr #HEADERS_ON
. nr #FOOTERS_ON 1
. PAGENUM_POS TOP CENTER
. \}
-. el \{ .nr #FOOTERS_ON 0 \}
+. el .nr #FOOTERS_ON 0
.END
\#
-\#
\# FOOTER MARGIN
\# -------------
\# *Argument:
@@ -9796,11 +9400,10 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Unit of measure required. Default is 3P.
\#
.MAC FOOTER_MARGIN END
-. ie \\n%>0 \{ .nr #FOOTER_MARGIN (\\$1) \}
-. el \{ . \}
+. ie \\n%>0 .nr #FOOTER_MARGIN (\\$1)
+. el .
.END
\#
-\#
\# FOOTER GAP
\# ----------
\# *Argument:
@@ -9813,11 +9416,10 @@ y\\R'#DESCENDER \\n[.cdp]'
\# baseline.
\#
.MAC FOOTER_GAP END
-. ie \\n%>0 \{ .nr #FOOTER_GAP (\\$1) \}
-. el \{ . \}
+. ie \\n%>0 .nr #FOOTER_GAP (\\$1)
+. el .
.END
\#
-\#
\# FOOTER
\# ------
\# *Arguments:
@@ -9830,10 +9432,13 @@ y\\R'#DESCENDER \\n[.cdp]'
\# FINAL respects PAGENUMBER.
\#
.MAC FOOTER END
-. nr #SAVED_LEAD \\n(.v
+. rr #LB_4_HD
+. rr #QUOTE_4_HD
+. nr #SAVED_LEAD \\n[.v]
. ev PAGE_TRANSITION
-. ie !n \{ .nop \X'ps: exec decornone' \}
-. el \{ .ul 0 \}
+. pdfmarksuspend
+. ie !n .nop \X'ps: exec decornone'
+. el .ul 0
. br
. if \\n[#UNDERLINE_ON]=1 \{\
. nr #UNDERLINE_WAS_ON 1
@@ -9843,7 +9448,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. MNbottom-left
. nr #no-repeat-MN-left 1
. \}
-. if '\\n(.z'MN_OVERFLOW_LEFT' \{\
+. if '\\n[.z]'MN_OVERFLOW_LEFT' \{\
. di
. nr #MN_OVERFLOW_LEFT 1
. rr #OVERFLOW_LEFT
@@ -9851,11 +9456,9 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. if \\n[MN-right]>0 \{\
. if (\\n[MN-right] > 0) \{\
-. if !\\n[#no-repeat-MN-right]=1 \{\
-. MNbottom-right
-. \}
+. if !\\n[#no-repeat-MN-right]=1 .MNbottom-right
. \}
-. if '\\n(.z'MN_OVERFLOW_RIGHT' \{\
+. if '\\n[.z]'MN_OVERFLOW_RIGHT' \{\
. di
. nr #MN_OVERFLOW_RIGHT 1
. rr #OVERFLOW_RIGHT
@@ -9866,50 +9469,52 @@ y\\R'#DESCENDER \\n[.cdp]'
. if !\\n[#FN_DEFER] \{\
. nr #DIVER_DEPTH 0
. if \\n[#FN_DEPTH] \{\
-. if \\n[#DIVERTED]=3 \{ .nr #FN_DEPTH +\\n[#VFP_DIFF] \}
+. if \\n[#DIVERTED]=3 .nr #FN_DEPTH +\\n[#VFP_DIFF]
. vpt 0
-. sp |\\n[#PAGE_LENGTH]u-(\\n[#B_MARGIN]u+\\n[#FN_DEPTH]u-\\n[#DOC_LEAD]u)
+. sp \
+|\\n[#PAGE_LENGTH]u-(\\n[#B_MARGIN]u+\\n[#FN_DEPTH]u-\\n[#DOC_LEAD]u)
. vpt 1
. po \\n[#DOC_L_MARGIN]u
. if \\n[#COLUMNS] \{\
. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u
-. nr #L_MARGIN \\n(.o
+. nr #L_MARGIN \\n[.o]
. nr #FROM_FOOTER 1
. \}
. nf
. FOOTNOTES
. rm FOOTNOTES
-. if d RUNON_FOOTNOTES \{ .rm RUNON_FOOTNOTES \}
-. if \\n[#PRINT_STYLE]=1 \{ .vs \\n[#SAVED_LEAD]u \}
-. if \\n[#PRINT_STYLE]=2 \{ .LS \\n[#SAVED_LEAD]u \}
-. if '\\n(.z'FN_OVERFLOW' \{\
+. if d RUNON_FOOTNOTES .rm RUNON_FOOTNOTES
+. if \\n[#PRINT_STYLE]=1 .vs \\n[#SAVED_LEAD]u
+. if \\n[#PRINT_STYLE]=2 .LS \\n[#SAVED_LEAD]u
+. if '\\n[.z]'FN_OVERFLOW' \{\
. di
. nr #FN_OVERFLOW_DEPTH \\n[#DIVER_DEPTH]
. \}
. nr #FN_COUNT_AT_FOOTER \\n[#FN_COUNT]
. nr #FN_COUNT 0
. if \\n[#COL_NEXT] \{\
-. ie !\\n[#COL_NUM]=\\n[#NUM_COLS] \{ .nr #COL_NUM \\n-[#COL_NUM] \}
-. el \{ .nr #COL_NUM \\n[#NUM_COLS] 1 \}
+. ie !\\n[#COL_NUM]=\\n[#NUM_COLS] .nr #COL_NUM \\n-[#COL_NUM]
+. el .nr #COL_NUM \\n[#NUM_COLS] 1
. \}
. \}
. rr #DIVERTED
. \}
+. nr @TOP 1
. ie \\n[#COLUMNS]=1 \{\
-. ie \\n[#COL_NUM]=\\n[#NUM_COLS] \{ .DO_FOOTER \}
+. ie \\n[#COL_NUM]=\\n[#NUM_COLS] .DO_FOOTER
. el \{\
-. ie \\n[#ENDNOTES] \{ .sp |\\n(ecu-\\n[#EN_LEAD]u \}
-. el \{ .sp |\\n(dcu \}
+. ie \\n[#ENDNOTES] .sp |\\n[ec]u-\\n[#EN_LEAD]u
+. el .sp |\\n[dc]u
. po \\n[#COL_\\n+[#COL_NUM]_L_MARGIN]u
-. nr #L_MARGIN \\n(.o
-. if \\n[#FN_DEPTH] \{ .PROCESS_FN_LEFTOVER \}
+. nr #L_MARGIN \\n[.o]
+. if \\n[#FN_DEPTH] .PROCESS_FN_LEFTOVER
. LS \\n[#SAVED_LEAD]u
. if \\n[#PREV_FN_DEFERRED] \{\
. nr #PREV_FN_DEFERRED 2
. \}
. rr #RULED
-. if !\\n[#EPIGRAPH] \{ .rr #COL_NEXT \}
-. if !\\n[#QUOTE] \{ .rr #COL_NEXT \}
+. if !\\n[#EPIGRAPH] .rr #COL_NEXT
+. if !\\n[#QUOTE] .rr #COL_NEXT
. if \\n[#RESET_FN_COUNTERS]=1 \{\
. rr #RESET_FN_COUNTERS
. PROCESS_FN_IN_DIVER
@@ -9917,46 +9522,39 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #FN_COUNT \\n[#FN_COUNT] 1
. nr #FN_COUNT_FOR_COLS \\n[#FN_COUNT_FOR_COLS] 1
. rm FN_IN_DIVER
-. if dRUNON_FN_IN_DIVER \{ .rm RUNON_FN_IN_DIVER \}
+. if dRUNON_FN_IN_DIVER .rm RUNON_FN_IN_DIVER
. \}
. rr #DEFER_SPACE_ADDED
-. if \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \}
+. if \\n[#TAB_ACTIVE] .TAB \\n[#CURRENT_TAB]
. if \\n[#QUOTE] \{\
-. ie \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \}
+. ie \\n[#TAB_ACTIVE] .TAB \\n[#CURRENT_TAB]
. el \{\
-. ie r#Q_OFFSET_VALUE \{\
-. nr #Q_OFFSET \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
-. \}
-. el \{\
+. ie \\n[#Q_OFFSET_VALUE] \
+. nr #Q_OFFSET \
+\\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
+. el \
. nr #Q_OFFSET \\n[#L_MARGIN]+\\*[$Q_OFFSET_VALUE]
-. \}
. if \\n[#COLUMNS] \{\
-. ie r#Q_OFFSET_VALUE \{\
-. nr #Q_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
-. \}
-. el \{\
-. nr #Q_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+\\*[$Q_OFFSET_VALUE]
-. \}
+. ie \\n[#Q_OFFSET_VALUE] .nr #Q_OFFSET \
+\\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
+. el .nr #Q_OFFSET \
+\\n[#COL_\\n[#COL_NUM]_L_MARGIN]+\\*[$Q_OFFSET_VALUE]
. \}
. po \\n[#Q_OFFSET]u
. \}
. \}
. if \\n[#EPIGRAPH] \{\
-. ie \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \}
+. ie \\n[#TAB_ACTIVE] .TAB \\n[#CURRENT_TAB]
. el \{\
-. ie r#EPI_OFFSET_VALUE \{\
-. nr #EPI_OFFSET \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE])
-. \}
-. el \{\
-. nr #EPI_OFFSET \\n[#L_MARGIN]+\\*[$EPI_OFFSET_VALUE]
-. \}
+. ie r#EPI_OFFSET_VALUE .nr #EPI_OFFSET \
+\\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE])
+. el .nr #EPI_OFFSET \
+\\n[#L_MARGIN]+\\*[$EPI_OFFSET_VALUE]
. if \\n[#COLUMNS] \{\
-. ie r#EPI_OFFSET_VALUE \{\
-. nr #EPI_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE])
-. \}
-. el \{\
-. nr #EPI_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+\\*[$EPI_OFFSET_VALUE]
-. \}
+. ie r#EPI_OFFSET_VALUE .nr #EPI_OFFSET \
+\\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#EPI_OFFSET_VALUE])
+. el .nr #EPI_OFFSET \
+\\n[#COL_\\n[#COL_NUM]_L_MARGIN]+\\*[$EPI_OFFSET_VALUE]
. \}
. po \\n[#EPI_OFFSET]u
. \}
@@ -9967,22 +9565,22 @@ y\\R'#DESCENDER \\n[.cdp]'
. rr #EPI_ACTIVE
. \}
. el \{\
-. sp |\\n(dcu+(\\n[#DOC_LEAD]u-\\n[#EPI_LEAD]u)
+. sp |\\n[dc]u+(\\n[#DOC_LEAD]u-\\n[#EPI_LEAD]u)
. rr #EPI_ACTIVE
. \}
. \}
-. el \{ .ns \}
+. el .ns
. ev
. \}
. ns
. rr #DIVERTED
+. ch RR_@TOP
+. wh \\n[nl]u+1u RR_@TOP
. \}
-. el \{\
-. DO_FOOTER
-. \}
+. el .DO_FOOTER
+. pdfmarkrestart
.END
\#
-\#
\# PROCESS FOOTER
\# --------------
\# *Arguments:
@@ -10010,25 +9608,20 @@ y\\R'#DESCENDER \\n[.cdp]'
.\" Have to change position of FN_OVERFLOW_TRAP or it screws up the
.\" placement of page numbers (or footers). It's reset to its original
.\" position at the end of the macro.
-. if r#SAVED_FOOTER_POS \{ .ch FOOTER \\n[#SAVED_FOOTER_POS]u \}
+. if r #SAVED_FOOTER_POS .ch FOOTER \\n[#SAVED_FOOTER_POS]u
. rr #SAVED_FOOTER_POS
-. ie (\\n[#FOOTER_MARGIN]+\\n[.v]>\\n[#B_MARGIN] \{\
-. nr #SKIP_FOOTER 1
-. \}
+. ie (\\n[#FOOTER_MARGIN]+\\n[.v]>\\n[#B_MARGIN]) .nr #SKIP_FOOTER 1
. el \{\
. ev FOOTER
. vpt 0
-. vs 12
-. sp |\\n[#PAGE_LENGTH]u-\\n[#FOOTER_MARGIN]u-1v
+. sp |\\n[#PAGE_LENGTH]u-\\n[#FOOTER_MARGIN]u-\\n[#UNADJUSTED_DOC_LEAD]u
. mk y
. \}
. UNDERLINE OFF
. po \\n[#DOC_L_MARGIN]u
. ll \\n[#DOC_L_LENGTH]u
-. ta \\n(.lu
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. \}
+. ta \\n[.l]u
+. if \\n[#PRINT_STYLE]=1 .TYPEWRITER
. if \\n[#PRINT_STYLE]=2 \{\
. fam \\*[$HDRFTR_FAM]
. ft R
@@ -10040,12 +9633,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. CAPS OFF
. \}
. ie \\n[#FOOTERS_ON] \{\
-. if !\\n[#SKIP_FOOTER]=1 \{ .PRINT_HDRFTR \}
+. if !\\n[#SKIP_FOOTER]=1 .PRINT_HDRFTR
. \}
. el \{\
. if \\n[#PAGINATE] \{\
. if \\n[#PAGE_NUM_V_POS]=2 \{\
-. if !\\n[#SKIP_FOOTER]=1 \{ .PRINT_PAGE_NUMBER \}
+. if !\\n[#SKIP_FOOTER]=1 .PRINT_PAGE_NUMBER
. \}
. \}
. \}
@@ -10055,7 +9648,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. rr #CAPS_WAS_ON
. \}
. ev
-. rr #SAVED_LEAD
. vpt 1
.END
\#
@@ -10108,11 +9700,11 @@ y\\R'#DESCENDER \\n[.cdp]'
. if \\\\n[#HDRFTR_BOTH]=1 \{\
. FOOTER_RECTO \\*[$FTR_RECTO_QUAD] "\\*[$FTR_RECTO_STRING]"
. FOOTER_VERSO \\*[$FTR_VERSO_QUAD] "\\*[$FTR_VERSO_STRING]"
-. if \\\\n[#HEADER_RULE]=1 \{ .HEADER_RULE \}
-. ie \\\\n[#FOOTER_RULE]=1 \{ .FOOTER_RULE \}
-. el \{ .FOOTER_RULE OFF \}
-. if r#PAGINATE .rr #PAGINATE
-. if r#PAGE_NUM_V_POS .rr #PAGE_NUM_V_POS
+. if \\\\n[#HEADER_RULE]=1 .HEADER_RULE
+. ie \\\\n[#FOOTER_RULE]=1 .FOOTER_RULE
+. el .FOOTER_RULE OFF
+. if r #PAGINATE .rr #PAGINATE
+. if r #PAGE_NUM_V_POS .rr #PAGE_NUM_V_POS
.\}
.DONE
.am PRINT_USERDEF_HDRFTR DONE
@@ -10123,8 +9715,8 @@ y\\R'#DESCENDER \\n[.cdp]'
. HEADER_VERSO \\*[$HDR_VERSO_QUAD] "\\*[$HDR_VERSO_STRING]"
. rr #FOOTERS_ON
. nr #HEADERS_ON 1
-. ie \\\\n[#HEADER_RULE]=1 \{ .HEADER_RULE \}
-. el \{ .HEADER_RULE OFF \}
+. ie \\\\n[#HEADER_RULE]=1 .HEADER_RULE
+. el .HEADER_RULE OFF
. \}
. \}
. if \\n[#HEADERS_ON]=1 \{\
@@ -10135,13 +9727,13 @@ y\\R'#DESCENDER \\n[.cdp]'
.DONE
.am HEADER DONE
. if \\\\n[#HDRFTR_BOTH]=1 \{\
-. if r#START_FOR_FOOTERS .rr #START_FOR_FOOTERS
+. if r #START_FOR_FOOTERS .rr #START_FOR_FOOTERS
. rr #HEADERS_ON
. nr #FOOTERS_ON 1
. FOOTER_RECTO \\*[$FTR_RECTO_QUAD] "\\*[$FTR_RECTO_STRING]"
. FOOTER_VERSO \\*[$FTR_VERSO_QUAD] "\\*[$FTR_VERSO_STRING]"
-. ie \\\\n[#FOOTER_RULE]=1 \{ .FOOTER_RULE \}
-. el \{ .FOOTER_RULE OFF \}
+. ie \\\\n[#FOOTER_RULE]=1 .FOOTER_RULE
+. el .FOOTER_RULE OFF
. \}
.DONE
. \}
@@ -10166,895 +9758,796 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
\# +++HEADS+++
\#
-\# ---Head numbers---
-\#
-\# NUMBER HEADS
-\# ------------
-\# *Arguments:
-\# <none> | <anything>
-\# *Function:
-\# Toggles register #NUMBER_HEAD; sets incrementing register #HEAD_NUM.
-\# *Notes:
-\# Default is OFF.
-\#
-.MAC NUMBER_HEADS END
-. ie '\\$1'' \{\
-. nr #NUMBER_HEAD 1
-. if !\\n[#HEAD_NUM] \{ .nr #HEAD_NUM 0 1 \}
-. \}
-. el \{ .rr #NUMBER_HEAD \}
-.END
-\#
-\#
-\# RESET HEAD NUMBER
-\# -----------------
-\# *Arguments:
-\# <none> | <desired head number>
-\# *Function:
-\# Resets incrementing register #HEAD_NUM to 1 or, if there's
-\# an argument, to user supplied number.
-\# *Notes:
-\# Also resets subhead and parahead numbers. If this is not
-\# desired, subhead and parahead numbers may be reset individually.
-\#
-.MAC RESET_HEAD_NUMBER END
-. ie '\\$1'' \{\
-. nr #HEAD_NUM 0 1
-. nr #SH_NUM 0 1
-. nr #PH_NUM 0 1
-. \}
-. el \{\
-. nr #HEAD_NUM \\$1-1 1
-. nr #SH_NUM 0 1
-. nr #PH_NUM 0 1
-. \}
-.END
-\#
-\#
-\# NUMBER SUBHEADS
-\# ---------------
-\# *Arguments:
-\# <none> | <anything>
-\# *Function:
-\# Toggles register #NUMBER_SH; sets incrementing register #SH_NUM.
-\# *Notes:
-\# Default is OFF.
-\#
-.MAC NUMBER_SUBHEADS END
-. ie '\\$1'' \{\
-. nr #NUMBER_SH 1
-. if !\\n[#SH_NUM] \{ .nr #SH_NUM 0 1 \}
-. \}
-. el \{ .rr #NUMBER_SH \}
-.END
-\#
-\#
-\# RESET SUBHEAD NUMBER
-\# --------------------
-\# *Arguments:
-\# <none> | <desired subhead number>
-\# *Function:
-\# Resets incrementing register #SH_NUM to 1 or, if there's
-\# an argument, to user supplied number.
-\# *Notes:
-\# When the subhead number is reset, it resets the parahead number as
-\# well. If this behaviour is not what's wanted, RESET_SUBHEAD_NUMBER
-\# allows the user to set the parahead number to whatever s/he desires.
-\#
-.MAC RESET_SUBHEAD_NUMBER END
-. ie '\\$1'' \{ .nr #SH_NUM 0 1 \}
-. el \{\
-. nr #SH_NUM \\$1-1 1
-. nr #PH_NUM 0 1
-. \}
-.END
-\#
+.char \[hd-num-spacer] \0
+.char \[parahead-spacer] \~\~
+.char \[toc-hd-num-spacer] \h'\w'\[en]'u'
+.ds toc-word-space \ \" ie an unbreakable space
\#
-\# NUMBER PARAHEADS
-\# ----------------
+\# HEADING
+\# -------
\# *Arguments:
-\# <none> | <anything>
+\# <heading level> [PARAHEAD] [NAMED <pdf-id>] <heading text>
\# *Function:
-\# Toggles register #NUMBER_PH; sets incrementing register #PH_NUM.
+\# Assigns a heading level to the heading text and prints heading
+\# in the style set up for that level. If PARAHEAD given, the
+\# heading is attached to the body of the paragraph. If NAMED
+\# given, creates a target for pdf links. Collects the heading
+\# for the TOC and sets TOC indenting appropriate for the level.
\# *Notes:
-\# Default is OFF.
-\#
-.MAC NUMBER_PARAHEADS END
-. ie '\\$1'' \{\
-. nr #NUMBER_PH 1
-. if !\\n[#PH_NUM] \{ .nr #PH_NUM 0 1 \}
+\# If PARAHEAD given, HEADING must come after PP.
+\#
+.MAC HEADING END
+. if !\B'\\$1' \{\
+. tm1 "[mom]: The first argument to \\$0 must be a numeric heading level.
+. ab Aborting \\n[.F] at \\$0, line \\n[.c].
+. \}
+. if r #QUOTE .rr #QUOTE
+. if r #END_QUOTE .rr #END_QUOTE
+. if r #EPIGRAPH .rr #EPIGRAPH
+. if \\$1<\\n[#LEVEL] \
+. nr #ACTIVE_LEVELS \\n[#LEVEL] \" loop count for resetting numbering registers
+. nr #LAST_LEVEL \\n[#LEVEL] \" used during TOC collection, if SPACE_TOC_ITEMS
+. nr #LEVEL \\$1 \" reset #LEVEL to arg
+. shift
+. nr #ARG_NUM 0 1
+. while \\n+[#ARG_NUM]<=2 \{\
+. if '\\$1'NAMED' \{\
+. ds PDF_NM "\\$1 \\$2
+. shift 2 \" \\$1 is now heading text
+. \}
+. if '\\$1'PARAHEAD' \{\
+. nr #PARAHEAD 1
+. shift \" \\$1 is now NAMED, if we have it; otherwise heading text
+. \}
. \}
-. el \{ .rr #NUMBER_PH \}
-.END
-\#
-\#
-\# RESET PARAHEAD NUMBER
-\# ---------------------
-\# *Arguments:
-\# <none> | <desired parahead number>
-\# *Function:
-\# Resets incrementing register #PH_NUM to 1 or, if there's
-\# an argument, to user supplied number.
-\# *Notes:
-\# Resetting the parahead number resets the parahead number
-\# only.
-\#
-.MAC RESET_PARAHEAD_NUMBER END
-. ie '\\$1'' \{ .nr #PH_NUM 0 1 \}
-. el \{ .nr #SH_NUM \\$1-1 1 \}
-.END
-\#
-\#
-\# PREFIX CHAPTER NUMBERS TO NUMBERED HEADS, SUBHEADS AND PARAHEADS
-\# ----------------------------------------------------------------
-\# *Arguments:
-\# <none> | <chapter number> | <anything>
-\# *Function:
-\# Toggles register #PREFIX_CH_NUM. Sets register #CH_NUM from
-\# string $CHAPTER if $CHAPTER is a digit; if <chapter number> arg
-\# given, sets #CH_NUM to arg.
-\# *Notes:
-\# Default is OFF.
-\#
-.MAC PREFIX_CHAPTER_NUMBER END
-. ie '\\$1'' \{\
-. ie r#CH_NUM \{\
-. nr #PREFIX_CH_NUM 1
-. if \\n[#CHAPTER_CALLED] \{\
-. ie \B'\\*[$CHAPTER]' \{\
-. nr #CH_NUM \\*[$CHAPTER]
-. \}
-. el \{\
-. PREFIX_CH_NUM_WARNING
-. \}
-. rr #CHAPTER_CALLED
-. \}
-. \}
-. el \{\
-. ie \B'\\*[$CHAPTER]' \{\
-. nr #PREFIX_CH_NUM 1
-. nr #CH_NUM \\*[$CHAPTER]
+.\" Spacing
+. if \\n[#Q_LEAD_DIFF_CHECK] .sp -1v
+. ie \\n[#PARAHEAD] 'br
+. el .br
+. ie !\\n[#PARAHEAD] \{\
+. if !\\n[@TOP] \{\
+. nr #HEAD 1
+. ie \\n[#HEAD_\\n[#LEVEL]_SPACE_AFTER] .ne \\n[#NUM_ARGS]+2
+. el .ne \\n[#NUM_ARGS]+1
+. vpt 0
+. ie !\\n[#START] \{\
+. if !\\n[#SPACE_ADDED] .if !\\n[#LINEBREAK] .sp
. \}
. el \{\
-. PREFIX_CH_NUM_WARNING
+. ie !\\n[#PP] \{\
+. rr #START
+. \}
+. el .sp
+. \}
+. if \\n[#EPIGRAPH] \{\
+. if \\n[#SINGLE_SPACE] .sp
. \}
. \}
+. if \\n[#PP_SPACE] \{\
+. if \\n[#QUOTE_4_HD] .sp .5v
+. \}
+. if !\\n[#SPACE_ADDED] .SHIM
+. if \\n[#SPACE_ADDED] .rr #SPACE_ADDED
. \}
. el \{\
-. ie \B'\\$1' \{\
-. nr #CH_NUM \\$1
-. nr #PREFIX_CH_NUM 1
+. if \\n[#NUM_ARGS]>1 \{\
+. tm1 "[mom]: Error at line \\n[.c], \\$0.
+. tm1 " PARAHEAD may not be given more than 1 line of text.
+. ab Aborting \\n[.F] at \\$0, line \\n[.c].
. \}
-. el \{\
-. rr #PREFIX_CH_NUM
+. vpt 0
+. if !(\\n[#PRINT_STYLE]=1)&(\\n[#SINGLE_SPACE]=1) .sp -1v
+. if \\n[#QUOTE_4_HD] \{\
+. sp -1v
+. if \\n[#PP_SPACE] \{\
+. sp .5v
+. SHIM
+. \}
+. \}
+. if (\\n[#QUOTE_4_HD]=0)&(\\n[#LB_4_HD]=0)&(\\n[#START]=0) \{\
+. if !\\n[#LB_4_PARAHEAD] .sp -1v
. \}
. \}
-.END
-\#
-.MAC PREFIX_CH_NUM_WARNING END
-. tm1 "[mom]: PREFIX_CHAPTER_NUMBER cannot determine a chapter number.
-. tm1 " Please enter the current chapter number as a digit after
-. tm1 " PREFIX_CHAPTER_NUMBER.
-. ab Aborting on PREFIX_CHAPTER_NUMBER at line \\n(.c.
-.END
-\#
-\#
-\# ---Main heads---
-\#
-\# HEAD CAPS
-\# ---------
-\# *Arguments:
-\# <none> | <anything>
-\# *Function:
-\# Creates or modifies register #HEAD_CAPS.
-\# *Notes:
-\# Default is on.
-\#
-.MAC HEAD_CAPS END
-. ie '\\$1'' \{ .nr #HEAD_CAPS 1 \}
-. el \{ .nr #HEAD_CAPS 0 \}
-.END
-\#
-\#
-\# HEAD SPACE
-\# ----------
-\# *Arguments:
-\# <none> | <anything>
-\# *Function:
-\# Creates register #HEAD_SPACE, which toggles whether the space
-\# before heads is 1 extra line space ("off") or 2 ("on"). Used only
-\# in PRINTSTYLE TYPESET.
-\# *Notes:
-\# Default is on.
-\#
-.MAC HEAD_SPACE END
-. ie '\\$1'' \{ .nr #HEAD_SPACE 1 \}
-. el \{ .nr #HEAD_SPACE 0 \}
-.END
-\#
-\#
-\# MAIN HEAD
-\# ---------
-\# *Arguments:
-\# "text of main head" ["text of main head"] ...
-\# *Function:
-\# In TYPEWRITE, prints main heads centered, all caps, underlined.
-\# In TYPESET, prints bold main heads 1 point larger than running
-\# text, all caps, underlined.
-\# *Notes:
-\# The HEAD macro requires that double-quotes (") surround
-\# each line of text.
-\#
-.MAC HEAD END
-. if \\n[#UNDERLINE_ON]=1 .UNDERLINE OFF
-. br
-. if \\n[#PRINT_STYLE]=1 \{ .ne \\n[#NUM_ARGS]+2 \}
+. ev HEADING
+. evc 0
+.\" Style
. if \\n[#PRINT_STYLE]=2 \{\
-. ie \\n[#HEAD_SPACE] \{ .ne \\n[#NUM_ARGS]+3 \}
-. el \{ .ne \\n[#NUM_ARGS]+2 \}
+. fam \\*[$HEAD_\\n[#LEVEL]_FAM]
+. ft \\*[$HEAD_\\n[#LEVEL]_FT]
+. ps \\*[$HEAD_\\n[#LEVEL]_SIZE]
+. nf
. \}
-.\" Collect head for TOC.
-. nr #ARG_NUM 0 1
+.\" Numbering
+. ds $TOC_HD_NUM_PREV \\*[$TOC_HD_NUM]
+. rm $TOC_HD_NUM
+. rm $PDF_HD_NUM
+. ie \\n[#NUMBER_HEAD_\\n[#LEVEL]] \{\
+. if \\n[#PREFIX_CH_NUM] .ds $HD_NUM \\n[#CH_NUM].
+. nr #HEAD_\\n[#LEVEL]_NUM +1 \" incremented manually here; still auto-increments
+.\" Reset numbering registers for headings beneath current level
+. nr @LEVEL \\n[#LEVEL] 1 \" loop step
+. nr #LOOP \\n[#ACTIVE_LEVELS] \" loop count
+. while \\n+[@LEVEL]<=\\n[#LOOP] \
+. if \\n[#HEAD_\\n[@LEVEL]_NUM] \
+. nr #HEAD_\\n[@LEVEL]_NUM 0 1
+.\" Build numbering strings for body and toc
+. nr @LEVEL 0 1 \" loop step
+. nr #LOOP \\n[#LEVEL] \" loop count
+. while \\n+[@LEVEL]<=\\n[#LOOP] \
+. if \\n[#HEAD_\\n[@LEVEL]_NUM] \
+. as $HD_NUM \\n[#HEAD_\\n[@LEVEL]_NUM].
+. ie \\n[#TRUNC_TOC_HD_NUM] \
+. ds $TOC_HD_NUM \\n[#HEAD_\\n[#LEVEL]_NUM].
+. el .ds $TOC_HD_NUM \\*[$HD_NUM]
+. if \\n[#LEVEL]=1 \
+. ds $TOC_HD_NUM_PREV \\*[$TOC_HD_NUM]
+. if \\n[#TOC_NO_HD_NUM] .rm $TOC_HD_NUM
+. if !\\n[#HEAD_\\n[#LEVEL]_NUM]] .rm $TOC_HD_NUM
+. as $HD_NUM \[hd-num-spacer]
+. ds $PDF_HD_NUM \\*[$TOC_HD_NUM]
+. if !'\\*[$TOC_HD_NUM]'' .as $TOC_HD_NUM \[toc-hd-num-spacer]
+. if !'\\*[$PDF_HD_NUM]'' .as $PDF_HD_NUM " "
+. \}
+. el .nr @LEVEL \\n[#LEVEL] 1
+.\" TOC collection and formatting
. nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
. af #TOC_ENTRY_PN \\g[#PAGENUMBER]
+. nr #ARG_NUM 0 1
. while \\n[#ARG_NUM]<\\n[#NUM_ARGS] \{\
-. ie \\n[#ARG_NUM]=\\n[#NUM_ARGS] \{\
-. as $TOC_HEAD_ITEM \\$[\\n+[#ARG_NUM]]\\|
-. \}
-. el \{\
-.\" Note that in the .as lines, below, \ at the end has a literal
-.\" space after it.
-. ie \\n[#NUMBER_HEAD] \{\
-. ie \\n[#ARG_NUM]=0 \{\
-. as $TOC_HEAD_ITEM \\n+[#HEAD_NUM].\0\\$[\\n+[#ARG_NUM]]\ \"
-. nr #HEAD_NUM \\n-[#HEAD_NUM]
-. \}
-. el \{\
-. as $TOC_HEAD_ITEM \\$[\\n+[#ARG_NUM]]\ \"
-. \}
-. \}
-. el \{\
-. as $TOC_HEAD_ITEM \\$[\\n+[#ARG_NUM]]\ \"
-. \}
-. \}
-.\}
-.\" Note the use of \!, which transparently embeds the macros used
-.\" in the TOC_ENTRIES diversion. The elements they control must be
-.\" processed literally when the diversion is output.
+. as $TOC_HEAD_\\n[#LEVEL]_ITEM "\\$[\\n+[#ARG_NUM]]
+. if \\n[#NUM_ARGS]>\\n[#ARG_NUM] \
+. as $TOC_HEAD_\\n[#LEVEL]_ITEM "\\*[toc-word-space]
+. \}
+. PDF_BOOKMARK \
+ \\*[PDF_NM] \\n[#LEVEL]+1 \
+ \\*[$PDF_HD_NUM] \\*[$TOC_HEAD_\\n[#LEVEL]_ITEM]
+. rm PDF_NM
+. rm $PDF_HD_NUM
. ev TOC_EV
-. da TOC_ENTRIES
-. if \\n[#PRINT_STYLE]=1 \{\
-\!. fam \\*[$TYPEWRITER_FAM]
-\!. ft R
-\!. ps \\*[$TYPEWRITER_PS]
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-\!. FAMILY \\*[$TOC_HEAD_FAM]
-\!. FT \\*[$TOC_HEAD_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_HEAD_SIZE_CHANGE]
-. \}
-\!. TRAP OFF
-\!. PAD_MARKER ^
. ie \\n[#PRINT_STYLE]=1 \{\
-\!. PAD "\\h'2m'\\*[$TOC_HEAD_ITEM]\\*[$TOC_PN_TYPEWRITE]"
-. \}
-. el \{\
-\!. PAD "\\h'\\n[#TOC_HEAD_INDENT]u'\\*[$TOC_HEAD_ITEM]\\*[$TOC_PN]"
-. \}
-\!. PAD_MARKER #
-\!. EOL
-\!. ST 100 L
-\!. ST 101 R
-. if \\n[#PRINT_STYLE]=2 \{\
-\!. FAMILY \\*[$TOC_PN_FAM]
-\!. FT \\*[$TOC_PN_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
-. \}
-\!. TAB 100
-\!. PRINT \\*[LEADER]
-\!. TN
-\!. TRAP
-\!. PRINT \\n[#TOC_ENTRY_PN]
-\!. TQ
-. di
-. ev
-.\" End collection of head for TOC
-.\" Process head
-. nr #HEAD 1
-. ev HEAD
-. ll \\n[#L_LENGTH]u
-. ta \\n(.lu
-. if \\n[#COLUMNS] \{\
-. ll \\n[#COL_L_LENGTH]u
-. ta \\n(.lu
-. \}
-. CHECK_INDENT
-. QUAD \\*[$HEAD_QUAD]
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. vs \\n[#DOC_LEAD]u
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. FAMILY \\*[$HEAD_FAM]
-. FT \\*[$HEAD_FT]
-. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$HEAD_SIZE_CHANGE]
-. LS \\n[#DOC_LEAD]u
-. \}
-. if r#QUOTE \{ .rr #QUOTE \}
-. if r#EPIGRAPH \{ .rr #EPIGRAPH \}
-. ie \\n[#START] \{\
-. if \\n[#DOC_HEADER]=0 \{ .RLD 1v \}
+. fam \\*[$TYPEWRITER_FAM]
+. ft R
+. ps \\*[$TYPEWRITER_PS]
. \}
. el \{\
-. if \\n[#PRINT_STYLE]=1 \{\
-. if !\\n[#LINEBREAK] \{\
-. ALD \\n[#DOC_LEAD]u
-. if \\n[#SINGLE_SPACE] \{ .ALD \\n[#DOC_LEAD]u \}
-. \}
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. ie \\n[#PP_SPACE] \{\
-. ie \\n[#END_QUOTE] \{ . \}
-. el \{\
-. if !\\n[#LINEBREAK] \{\
-. if \\n[#HEAD_SPACE] \{ .ALD \\n[#DOC_LEAD]u \}
+. FAMILY \\*[$TOC_HEAD_\\n[#LEVEL]_FAM]
+. FT \\*[$TOC_HEAD_\\n[#LEVEL]_FT]
+. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_HEAD_\\n[#LEVEL]_SIZE]
+. \}
+.\" Indents for TOC heading levels.
+.\" First, numbered heads. @LEVEL here is #LEVEL+1
+. ie \\n[#NUMBER_HEAD_\\n[#LEVEL]] \{\
+. ie !\\n[#TOC_NO_HD_NUM] \{\
+. ie \\n[#TRUNC_TOC_HD_NUM] \{\
+. if !\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT_SET] \{\
+. ie !\\n[#FROM_STYLE_\\n[@LEVEL]] \{\
+. ie !\\n[#NUMBER_HEAD_\\n[@LEVEL]] \
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\w'\\*[$TOC_HD_NUM]'+1.5m
+. el \
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\w'\\*[$TOC_HD_NUM]'
. \}
+. el \
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
+ \\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]
. \}
. \}
. el \{\
-. ie \\n[#HEAD_SPACE] \{ .ALD \\n[#DOC_LEAD]u*2u \}
-. el \{ .ALD \\n[#DOC_LEAD]u \}
-. \}
-. if \\n[#END_QUOTE] \{\
-. if !\\n[#Q_FITS] \{\
-. RLD \\n[#DOC_LEAD]u
-. if \\n[#PP_ACTIVE] \{ .ALD \\n[#DOC_LEAD]u \}
+. if !\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT_SET] \{\
+. ie !\\n[#FROM_STYLE_\\n[@LEVEL]] \{\
+. ie \\n[#NUMBER_HEAD_\\n-[@LEVEL]] \{\
+. ie !\\n[#NUMBER_HEAD_\\n+[@LEVEL]] \
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\w'\\*[$TOC_HD_NUM_PREV]'+1.5m
+. el \
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\w'.\[toc-hd-num-spacer]'
+. \}
+. el \
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\w'\\n[#TOC_HD_NUM].'
+. ie \\n[#LEVEL]=1 \
+. nr #TOC_HEAD_\\n+[@LEVEL]_INDENT +\w'\0'
+. el \{\
+. if !\\n[#NUMBER_HEAD_\\n[@LEVEL]] \{\
+. nr @LEVEL \\n+[@LEVEL] 1
+. nr #TOC_HEAD_\\n+[@LEVEL]_INDENT +\w'\0'
+. \}
+. \}
+. \}
+. el \
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\\n[#TOC_HEAD_\\n+[@LEVEL]_INDENT]
. \}
-. if \\n[#Q_AT_TOP] \{\
-. RLD \\n[#DOC_LEAD]u
-. if \\n[#Q_AT_TOP] \{ .ALD \\n[#DOC_LEAD]u \}
+. if \\n[#LEVEL]=1 \{\
+. if \\n[#NUMBER_HEAD_\\n[@LEVEL]] \{\
+. if \\n[#PREFIX_CH_NUM] \
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT \w'\\*[$TOC_HD_NUM]'
+. \}
. \}
. \}
-. if \\n[#LINEBREAK] \{\
-. if \\n[#HEAD_SPACE] \{ .RLD \\n[#DOC_LEAD]u \}
-. \}
. \}
-. \}
-.\" Print head
-. nr #ARG_NUM 0 1
-. nr #FROM_HEAD 1
-. if \\n[#HEAD_CAPS] \{ .CAPS \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. if \\n[#HEAD_COLOR]=1 \{\
-. TRAP OFF
-. COLOR \\*[$HEAD_COLOR]
-. EOL
-. TRAP
+. el \{\
+. ie !\\n[#FROM_STYLE_\\n[@LEVEL]] \{\
+. if !\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT_SET] \
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
+ \\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+1.5m
+. \}
+. el \{\
+. if !\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT_SET] \
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
+\\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+\\n[#TOC_HEAD_\\n+[@LEVEL]_INDENT]
+. \}
. \}
. \}
-. if \\n[#PRINT_STYLE]=1 \{\
-. ie \\n[#HEAD_CAPS]=1 \{\
-. ds $HEAD_UNDERLINE_GAP 2p
+.\" Non-numbered heads
+. el \{\
+. nr @LEVEL \\n[#LEVEL] 1
+. ie \\n[#FROM_STYLE_\\n+[@LEVEL]] \{\ \" increments @LEVEL even if false
+. if !\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT_SET] \{\
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
+\\n[#TOC_HEAD_\\n[#LEVEL]_INDENT]+\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT]
+. if !\\n[#LEVEL]=\\n[#LAST_LEVEL] \{\
+. if \\n[#NUMBER_HEAD_\\n[@LEVEL]] \
+. nr #TOC_HEAD_\\n[#LEVEL]_INDENT \
+\\n[#TOC_HEAD_\\n[@LEVEL]_INDENT]+\w'\\*[$TOC_HD_NUM_PREV]'
+. \}
+. \}
. \}
. el \{\
-. ds $HEAD_UNDERLINE_GAP 4p
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT \
+ \\n[#TOC_HEAD_\\n-[@LEVEL]_INDENT]+1.5m
+. if \\n[#LEVEL]=1 \{\
+. if !\\n[#FROM_STYLE_1] \
+. nr #TOC_HEAD_1_INDENT 0
+. \}
. \}
. \}
-. while \\n[#ARG_NUM]<\\n[#NUM_ARGS] \{\
-. ie \\n[#NUMBER_HEAD] \{\
-. ie \\n[#ARG_NUM]=0 \{\
-. ie \\n[#PREFIX_CH_NUM]=1 \{\
-. ds $CH_NUM \\n[#CH_NUM].
-. \}
-. el \{\
-. rm $CH_NUM
-. \}
+. nr #TOC_HEAD_\\n[@LEVEL]_INDENT_SET 1
+. HD_TO_TOC
+. rm $TOC_HEAD_\\n[#LEVEL]_ITEM
+.\" Print heading
+. if !\\n[#PARAHEAD] .\\*[$HEAD_\\n[#LEVEL]_QUAD]
+. if \\n[#CAPS_ON] \{\
+. CAPS OFF
+. nr #CAPS_RESTORE 1
+. \}
+. if \\n[#HEAD_\\n[#LEVEL]_CAPS] \{\
+. CAPS
+. nr #CAPS_OFF 1
+. \}
+. if !'\\*[$HEAD_\\n[#LEVEL]_COLOR]'' \
+. COLOR \\*[$HEAD_\\n[#LEVEL]_COLOR]
+. nop \X'ps: exec decornone'\c
+. nr #ARG_NUM 0 1
+. while \\n+[#ARG_NUM]<=\\n[#NUM_ARGS] \{\
+. if \\n[#PARAHEAD] \
+. nr #PP_TEXT_OFFSET \
+ \w'\\*[$HD_NUM]\\$[\\n[#ARG_NUM]]'+\w'\[parahead-spacer]'
+. if (\\n[#HEAD_\\n[#LEVEL]_UNDERSCORE]=0)&(\\n[#HEAD_\\n[#LEVEL]_UNDERSCORE2]=0) \{\
+. ie \\n[#HD_NUM_INDENT] \{\
+. if !'\\*[$HEAD_\\n[#LEVEL]_QUAD]'CENTER' \
+. ti \\n[#HD_NUM_INDENT]u
+. PRINT \
+"\v'-\\*[$HEAD_\\n[#LEVEL]_BASELINE_ADJ]'\\$[\\n[#ARG_NUM]]
. br
-. ie \\n[#HEAD_UNDERLINE]=0 \{\
-. PRINT "\\*[$CH_NUM]\\n+[#HEAD_NUM].\0\\$[\\n+[#ARG_NUM]]"
+. \}
+. el \{\
+. ie !\\n[#PARAHEAD] \{\
+. PRINT \
+"\v'-\\*[$HEAD_\\n[#LEVEL]_BASELINE_ADJ]'\\*[$HD_NUM]\\$[\\n[#ARG_NUM]]
+. br
. \}
. el \{\
-. UNDERSCORE \\*[$HEAD_UNDERLINE_GAP] "\\*[$CH_NUM]\\n+[#HEAD_NUM].\0\\$[\\n+[#ARG_NUM]]"
+. if (\\n[#PP]>0):(\\n[#INDENT_FIRST_PARAS]) \{\
+. if !\\n[#LB_4_PARAHEAD] \{\
+. if !\\n[#START] \{\
+. if \\n[#PP_ACTIVE] \{\
+. ie \\n[#PP]=1 .br
+. el \{\
+. nr #PP_TEXT_OFFSET +\\n[#PP_INDENT]
+. ti \\n[#PP_INDENT]u
+. \}
+. \}
+. \}
+. \}
+. \}
+. ie \\n[#PRINT_STYLE]=1 \
+. PRINT "\\*[UL]\\*[$HD_NUM]\\$[\\n[#ARG_NUM]]\\*[ULX]
+. el .PRINT "\\*[$HD_NUM]\\$[\\n[#ARG_NUM]]
+. rr #LB_4_PARAHEAD
+. sp -1v
. \}
+. \}
+. \}
+. if \\n[#HEAD_\\n[#LEVEL]_UNDERSCORE] \{\
+. nr #SAVED_UL_WEIGHT \\n[#UNDERSCORE_WEIGHT]
+. UNDERSCORE_WEIGHT \\*[$HEAD_\\n[#LEVEL]_UL_WEIGHT]
+. ie \\n[#HD_NUM_INDENT] \{\
+. if !'\\*[$HEAD_\\n[#LEVEL]_QUAD]'CENTER' \
+. ti \\n[#HD_NUM_INDENT]u
+. UNDERSCORE \\*[$HEAD_\\n[#LEVEL]_UL_GAP] \
+ "\v'-\\*[$HEAD_\\n[#LEVEL]_BASELINE_ADJ]'\\$[\\n[#ARG_NUM]]
. br
. \}
. el \{\
-. br
-. ie \\n[#HEAD_UNDERLINE]=0 \{\
-. PRINT "\\$[\\n+[#ARG_NUM]]"
+. ie !\\n[#PARAHEAD] \{\
+. UNDERSCORE \\*[$HEAD_\\n[#LEVEL]_UL_GAP] \
+"\v'-\\*[$HEAD_\\n[#LEVEL]_BASELINE_ADJ]'\\*[$HD_NUM]\\$[\\n[#ARG_NUM]]
+. br
. \}
. el \{\
-. UNDERSCORE \\*[$HEAD_UNDERLINE_GAP] "\\$[\\n+[#ARG_NUM]]"
+. if (\\n[#PP]>0):(\\n[#INDENT_FIRST_PARAS]) \{\
+. if !\\n[#LB_4_HD] \{\
+. if !\\n[#START] \{\
+. if \\n[#PP_ACTIVE] \{\
+. nr #PP_TEXT_OFFSET +\\n[#PP_INDENT]
+. if (\\n[#PRINT_STYLE]=1)&(\\n[#SINGLE_SPACE]=1) .sp -1v
+. ti \\n[#PP_INDENT]u
+. \}
+. \}
+. \}
+. \}
+. UNDERSCORE \\*[$HEAD_\\n[#LEVEL]_UL_GAP] \
+ "\\*[$HD_NUM]\\$[\\n[#ARG_NUM]]
+. sp -1v
. \}
-. br
. \}
-. \}
-. el \{\
-. br
-. ie \\n[#HEAD_UNDERLINE]=0 \{\
-. PRINT "\\$[\\n+[#ARG_NUM]]"
+. nr #UNDERSCORE_WEIGHT \\n[#SAVED_UL_WEIGHT]
+. \}
+. if \\n[#HEAD_\\n[#LEVEL]_UNDERSCORE2] \{\
+. nr #SAVED_UL2_WEIGHT \\n[#UNDERSCORE_WEIGHT]
+. UNDERSCORE_WEIGHT \\*[$HEAD_\\n[#LEVEL]_UL2_WEIGHT]
+. ie \\n[#HD_NUM_INDENT] \{\
+. if !'\\*[$HEAD_\\n[#LEVEL]_QUAD]'CENTER' \
+. ti \\n[#HD_NUM_INDENT]u
+. UNDERSCORE2 \\*[$HEAD_\\n[#LEVEL]_UL2_GAP_1] \
+ \\*[$HEAD_\\n[#LEVEL]_UL2_GAP_2] \
+ "\v'-\\*[$HEAD_\\n[#LEVEL]_BASELINE_ADJ]'\\$[\\n[#ARG_NUM]]
+. br
. \}
. el \{\
-. UNDERSCORE \\*[$HEAD_UNDERLINE_GAP] "\\$[\\n+[#ARG_NUM]]"
-. \}
-. br
-. \}
-.\}
-. REMOVE_INDENT
-. CAPS OFF
-. ev
-. ALD \\n[#DOC_LEAD]u
-. if \\n[#NUMBER_HEAD] \{ .RESET_SUBHEAD_NUMBER \}
-. if \\n[#NUMBER_SH] \{ .RESET_PARAHEAD_NUMBER \}
-. if r#START \{ .rr #START \}
-. if r#EPIGRAPH \{ .rr #EPIGRAPH \}
-. if r#QUOTE \{ .rr #QUOTE \}
-. if r#Q_FITS \{ .rr #Q_FITS \}
-. if r#END_QUOTE \{ .rr #END_QUOTE \}
-. if r#LINEBREAK \{ .rr #LINEBREAK \}
-. if r#Q_AT_TOP \{ .rr #Q_AT_TOP \}
-. if r#PP_ACTIVE \{ .rr #PP_ACTIVE \}
-. rr #ARG_NUM
-. rr #FROM_HEAD
-. rm $TOC_HEAD_ITEM
-. nr #PP 0
-.END
-\#
-\#
-\# ---Subheads---
-\#
-\# SUBHEAD
-\# -------
-\# *Arguments:
-\# "text of subhead" ["text of subhead"] ...
-\# *Function:
-\# In TYPEWRITE, prints subheads underlined.
-\# In TYPESET, prints subheads bold, .5 points larger than running
-\# text.
-\# In both styles, a line space precedes the subhead, and a small
-\# amount of lead comes after.
-\# *Notes:
-\# As with the HEAD macro, double-quotes (") must surround
-\# each line of text.
-\#
-.MAC SUBHEAD END
-. if \\n[#UNDERLINE_ON]=1 .UNDERLINE OFF
-. br
-. ne \\n[#NUM_ARGS]+2
-.\" Collect subhead for TOC.
-. nr #ARG_NUM 0 1
-. nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
-. while \\n[#ARG_NUM]<\\n[#NUM_ARGS] \{\
-. ie \\n[#ARG_NUM]=\\n[#NUM_ARGS] \{\
-. as $TOC_SH_ITEM \\$[\\n+[#ARG_NUM]]\\|
-. \}
-. el \{\
-.\" Note that in the .as lines, below, \ at the end has a literal
-.\" space after it.
-. ie \\n[#NUMBER_SH] \{\
-. ie \\n[#ARG_NUM]=0 \{\
-. as $TOC_SH_ITEM \\n+[#SH_NUM].\0\\$[\\n+[#ARG_NUM]]\ \"
-. nr #SH_NUM \\n-[#SH_NUM]
+. ie !\\n[#PARAHEAD] \{\
+. UNDERSCORE2 \\*[$HEAD_\\n[#LEVEL]_UL2_GAP_1] \
+ \\*[$HEAD_\\n[#LEVEL]_UL2_GAP_2] \
+"\v'-\\*[$HEAD_\\n[#LEVEL]_BASELINE_ADJ]'\\*[$HD_NUM]\\$[\\n[#ARG_NUM]]
+. br
. \}
. el \{\
-. as $TOC_SH_ITEM \\$[\\n+[#ARG_NUM]]\ \"
+. if (\\n[#PP]>0):(\\n[#INDENT_FIRST_PARAS]) \{\
+. if !\\n[#LB_4_HD] \{\
+. if !\\n[#START] \{\
+. if \\n[#PP_ACTIVE] \{\
+. nr #PP_TEXT_OFFSET +\\n[#PP_INDENT]
+. if (\\n[#PRINT_STYLE]=1)&(\\n[#SINGLE_SPACE]=1) \
+. sp -1v
+. ti \\n[#PP_INDENT]u
+. \}
+. \}
+. \}
+. \}
+. UNDERSCORE2 \\*[$HEAD_\\n[#LEVEL]_UL2_GAP_1] \
+\\*[$HEAD_\\n[#LEVEL]_UL2_GAP_2] "\\*[$HD_NUM]\\$[\\n[#ARG_NUM]]
+. sp -1v
. \}
. \}
-. el \{\
-. as $TOC_SH_ITEM \\$[\\n+[#ARG_NUM]]\ \"
-. \}
+. nr #UNDERSCORE_WEIGHT \\n[#SAVED_UL2_WEIGHT]
. \}
-.\}
-.\" Note the use of \!, which transparently embeds the macros used
-.\" in the TOC_ENTRIES diversion. The elements they control must be
-.\" processed literally when the diversion is output.
-. ev TOC_EV
-. da TOC_ENTRIES
-. if \\n[#PRINT_STYLE]=1 \{\
-\!. fam \\*[$TYPEWRITER_FAM]
-\!. ft R
-\!. ps \\*[$TYPEWRITER_PS]
+. if !\\n[#HD_NUM_INDENT] .nr #HD_NUM_INDENT \w'\\*[$HD_NUM]'
. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-\!. FAMILY \\*[$TOC_SH_FAM]
-\!. FT \\*[$TOC_SH_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_SH_SIZE_CHANGE]
+. if !\\n[#PARAHEAD] \{\
+. if \\n[#HEAD_\\n[#LEVEL]_SPACE_AFTER] .sp
. \}
-\!. TRAP OFF
-\!. PAD_MARKER ^
-. ie \\n[#PRINT_STYLE]=1 \{\
-\!. PAD "\\h'4m'\\*[$TOC_SH_ITEM]\\*[$TOC_PN_TYPEWRITE]"
+. if \\n[#CAPS_OFF] \{\
+. CAPS OFF
+. rr #CAPS_OFF
. \}
-. el \{\
-\!. PAD "\\h'\\n[#TOC_SH_INDENT]u'\\*[$TOC_SH_ITEM]\\*[$TOC_PN]"
+. if \\n[#CAPS_RESTORE] \{\
+. CAPS
+. rr #CAPS_RESTORE
. \}
-\!. PAD_MARKER #
-\!. EOL
-\!. ST 100 L
-\!. ST 101 R
-. if \\n[#PRINT_STYLE]=2 \{\
-\!. FAMILY \\*[$TOC_PN_FAM]
-\!. FT \\*[$TOC_PN_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
-. \}
-\!. TAB 100
-\!. PRINT \\*[LEADER]
-\!. TN
-\!. TRAP
-\!. PRINT \\n[#TOC_ENTRY_PN]
-\!. TQ
-. di
. ev
-.\" End collection of head for TOC
-.\" Process subhead
-. nr #ARG_NUM 0 1
-. if r#QUOTE \{ .rr #QUOTE \}
-. if r#Q_AT_TOP \{ .rr #Q_AT_TOP \}
-. ev SUBHEAD
-. ll \\n[#L_LENGTH]u
-. ta \\n(.lu
-. if \\n[#COLUMNS] \{\
-. ll \\n[#COL_L_LENGTH]u
-. ta \\n(.lu
-. \}
-. CHECK_INDENT
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. vs \\n[#DOC_LEAD]u
-. QUAD \\*[$SH_QUAD]
+. rm $HD_NUM
+. rr #HD_NUM_INDENT
+. if \\n[#PARAHEAD] .ti \\n[#PP_TEXT_OFFSET]u
+. if !\\n[#PARAHEAD] .nr #PP 0
+. rr #PARAHEAD
+. if \\n[#LB_4_HD] .rr #LB_4_HD
+. if \\n[#QUOTE_4_HD] .rr #QUOTE_4_HD
+. if \\n[@TOP] \{\
+. ch RR_@TOP
+. wh \\n[nl]u+1u RR_@TOP
+. ns
. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. FAMILY \\*[$SH_FAM]
-. FT \\*[$SH_FT]
-. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$SH_SIZE_CHANGE]
-. LS \\n[#DOC_LEAD]u
-. QUAD \\*[$SH_QUAD]
-. \}
-. if \\n[#PRINT_STYLE]=1 \{ .nr #SH_LEAD_ADJUST \\n[#LEAD]/5 \}
-. if \\n[#PRINT_STYLE]=2 \{ .nr #SH_LEAD_ADJUST \\n[#LEAD]/8 \}
-. ie \\n[#START] \{ .RLD 1v \}
-. el \{\
-. ie \\n[#HEAD]=1 \{ . \}
-. el \{\
-. if \\n[#PRINT_STYLE]=1 \{\
-. if !\\n[#LINEBREAK] \{ .ALD \\n[#DOC_LEAD]u \}
+. vpt
+.END
+\#
+\# HEADING_STYLE
+\# -------------
+\# *Arguments:
+\# <level>
+\# FAMILY <family>
+\# FONT <font>
+\# SIZE <+|-n>
+\# COLOR <color>
+\# CAPS | NO_CAPS
+\#---when called as HEADING_STYLE, these are also available---
+\# QUAD <direction>
+\# NUMBER | NO_NUMBER
+\# SPACE_AFTER | NO_SPACE_AFTER
+\# UNDERSCORE <weight> <gap> | UNDERSCORE2 <weight> <gap1> <gap2>
+\# NO_UNDERSCORE | NO_UNDERSCORE2
+\# BASELINE_ADJUST
+\#---when called as TOC_ENTRY_STYLE this is also available---
+\# INDENT
+\# *Function:
+\# Sets up complete style parameters for HEADING <level>. If
+\# invoked as TOC_ENTRY_STYLE, sets up parameters for the
+\# corresponding TOC entry at <level>.
+\# *Notes:
+\# Arguments may be given in any order. Any not given retain
+\# their current values. Defaults for an initial 9 levels of
+\# heading are set up in PRINTSTYLE.
+\#
+\# NUMBER indicates that hierarchic numbering of <level> should be
+\# prepended to heading text. If invoked as TOC_ENTRY_STYLE,
+\# prepend numbering to TOC entries at <level> (only works if
+\# NUMBER is given to the corresponding HEADING <level>).
+\#
+\# INDENT refers to the indent for <level> in the TOC. It is
+\# measured from the left offset of the entry level above it
+\# (including numbering, if present). TOC entry levels beneath
+\# <level> will have their indents adjusted accordingly.
+\#
+.MAC HEADING_STYLE END
+. if !\B'\\$1' \{\
+. tm1 "[mom]: The first argument to \\$0 must be a numeric heading level.
+. ab Aborting \\n[.F] at \\$0, line \\n[.c].
+. \}
+. nr #LEVEL \\$1
+. if \\n[#FROM_OLDSTYLE] .nr #LEVEL_\\n[#LEVEL]_SET 1
+. shift
+.\" Prepend TOC_ to style strings if called as TOC_ENTRY_STYLE
+. if '\\$0'TOC_ENTRY_STYLE' .ds $TOC TOC_
+. nr #ARG_NUM 0 1
+. nr #ATTRIB \\n[#NUM_ARGS]
+. while \\n+[#ARG_NUM]<=\\n[#ATTRIB] \{\
+. if '\\$1'UNDERSCORE' \{\
+. nr #HEAD_\\n[#LEVEL]_UNDERSCORE 1
+. shift
+. if '\\$1'' \{\
+. tm1 "[mom]: The UNDERSCORE argument to \\$0 requires a rule weight.
+. ab Aborting \\n[.F] at \\$0, line \\n[.c].
. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. ie \\n[#PP_SPACE]=1 \{\
-. ie !\\n[#LINEBREAK] \{ .ALD \\n[#DOC_LEAD]u \}
-. el \{ .RLD \\n[#DOC_LEAD]u \}
-. \}
-. el \{\
-. if !\\n[#LINEBREAK] \{ .ALD \\n[#DOC_LEAD]u \}
-. \}
+. ds $HEAD_\\n[#LEVEL]_UL_WEIGHT \\$1
+. shift
+. if '\\$1'' \{\
+. tm1 "[mom]: The UNDERSCORE argument to \\$0 requires a rule gap.
+. ab Aborting \\n[.F] at \\$0, line \\n[.c].
. \}
+. ds $HEAD_\\n[#LEVEL]_UL_GAP \\$1
+. shift
. \}
-. \}
-.\" Print subhead
-. if \\n[#PRINT_STYLE]=1 \{\
-. while \\n[#ARG_NUM]<\\n[#NUM_ARGS] \{\
-. ie \\n[#NUMBER_SH] \{\
-. ie \\n[#ARG_NUM]=0 \{\
-. ie \\n[#PREFIX_CH_NUM]=1 \{\
-. ds $CH_NUM \\n[#CH_NUM].
-. \}
-. el \{\
-. rm $CH_NUM
-. \}
-. ie \\n[#NUMBER_HEAD] \{\
-. br
-. UNDERSCORE "\v'-\\n[#SH_LEAD_ADJUST]u'\\*[$CH_NUM]\\n[#HEAD_NUM].\\n+[#SH_NUM].\0\\$[\\n+[#ARG_NUM]]"
-. br
-. \}
-. el \{\
-. br
-. UNDERSCORE "\v'-\\n[#SH_LEAD_ADJUST]u'\\*[$CH_NUM]\\n+[#SH_NUM].\0\\$[\\n+[#ARG_NUM]]"
-. br
-. \}
-. \}
-. el \{\
-. br
-. UNDERSCORE "\v'-\\n[#SH_LEAD_ADJUST]u'\\$[\\n+[#ARG_NUM]]"
-. br
-. \}
+. if '\\$1'NO_UNDERSCORE' \{\
+. rr #HEAD_\\n[#LEVEL]_UNDERSCORE
+. shift
+. \}
+. if '\\$1'UNDERSCORE2' \{\
+. nr #HEAD_\\n[#LEVEL]_UNDERSCORE2 1
+. shift
+. if '\\$1'' \{\
+. tm1 "[mom]: The UNDERSCORE2 argument to \\$0 requires a rule weight.
+. ab Aborting \\n[.F] at \\$0, line \\n[.c].
. \}
-. el \{\
-. br
-. UNDERSCORE "\v'-\\n[#SH_LEAD_ADJUST]u'\\$[\\n+[#ARG_NUM]]"
-. br
+. ds $HEAD_\\n[#LEVEL]_UL2_WEIGHT \\$1
+. shift
+. if '\\$1'' \{\
+. tm1 "[mom]: The UNDERSCORE2 argument to \\$0 requires a rule gap.
+. ab Aborting \\n[.F] at \\$0, line \\n[.c].
. \}
-.\}
-. \}
-. if \\n[#PRINT_STYLE]=1 \{\
-. if \\n[#SINGLE_SPACE] \{ .ALD \\n[#DOC_LEAD]u \}
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. if \\n[#SH_COLOR]=1 \{ .COLOR \\*[$SH_COLOR] \}
-. ie \\n[#PP_SPACE]=0 \{\
-. while \\n[#ARG_NUM]<\\n[#NUM_ARGS] \{\
-. ie \\n[#NUMBER_SH] \{\
-. ie \\n[#ARG_NUM]=0 \{\
-. ie \\n[#PREFIX_CH_NUM]=1 \{\
-. ds $CH_NUM \\n[#CH_NUM].
-. \}
-. el \{\
-. rm $CH_NUM
-. \}
-. ie \\n[#NUMBER_HEAD] \{\
-. br
-. PRINT "\v'-\\n[#SH_LEAD_ADJUST]u'\\*[$CH_NUM]\\n[#HEAD_NUM].\\n+[#SH_NUM].\0\\$[\\n+[#ARG_NUM]]
-. br
-. \}
-. el \{\
-. br
-. PRINT "\v'-\\n[#SH_LEAD_ADJUST]u'\\*[$CH_NUM]\\n+[#SH_NUM].\0\\$[\\n+[#ARG_NUM]]
-. br
-. \}
-. \}
-. el \{\
-. br
-. PRINT "\v'-\\n[#SH_LEAD_ADJUST]u'\\$[\\n+[#ARG_NUM]]
-. br
-. \}
-. \}
-. el \{\
-. br
-. PRINT "\v'-\\n[#SH_LEAD_ADJUST]u'\\$[\\n+[#ARG_NUM]]
-. br
-. \}
-.\}
+. ds $HEAD_\\n[#LEVEL]_UL2_GAP_1 \\$1
+. shift
+. if '\\$1'' \{\
+. tm1 "[mom]: The UNDERSCORE2 argument to \\$0 requires an inter-rule gap.
+. ab Aborting \\n[.F] at \\$0, line \\n[.c].
+. \}
+. ds $HEAD_\\n[#LEVEL]_UL2_GAP_2 \\$1
+. shift
. \}
-. el \{\
-. ALD \\n[#DOC_LEAD]u
-. if \\n[#HEAD]=1 \{ .RLD \\n[#DOC_LEAD]u \}
-. if \\n[#END_QUOTE] \{ .RLD \\n[#DOC_LEAD]u \}
-. if \\n[#EPIGRAPH] \{ .RLD \\n[#DOC_LEAD]u \}
-. while \\n[#ARG_NUM]<\\n[#NUM_ARGS] \{\
-. ie \\n[#NUMBER_SH] \{\
-. ie \\n[#ARG_NUM]=0 \{\
-. ie \\n[#PREFIX_CH_NUM]=1 \{\
-. ds $CH_NUM \\n[#CH_NUM].
-. \}
-. el \{\
-. rm $CH_NUM
-. \}
-. ie \\n[#NUMBER_HEAD] \{\
-. br
-. PRINT "\v'-\\n[#SH_LEAD_ADJUST]u'\\*[$CH_NUM]\\n[#HEAD_NUM].\\n+[#SH_NUM]\0\\$[\\n+[#ARG_NUM]]
-. br
-. \}
-. el \{\
-. br
-. PRINT "\v'-\\n[#SH_LEAD_ADJUST]u'\\*[$CH_NUM]\\n+[#SH_NUM].\0\\$[\\n+[#ARG_NUM]]
-. br
-. \}
-. \}
-. el \{\
-. br
-. PRINT "\v'-\\n[#SH_LEAD_ADJUST]u'\\$[\\n+[#ARG_NUM]]
-. br
-. \}
-. \}
-. el \{\
-. br
-. PRINT "\v'-\\n[#SH_LEAD_ADJUST]u'\\$[\\n+[#ARG_NUM]]
-. br
-. \}
-.\}
-. ALD \\n[#DOC_LEAD]u
+. if '\\$1'NO_UNDERSCORE2' \{\
+. rr #HEAD_\\n[#LEVEL]_UNDERSCORE2
+. \}
+. if '\\$1'SPACE_AFTER' \{\
+. nr #HEAD_\\n[#LEVEL]_SPACE_AFTER 1
+. shift
+. \}
+. if '\\$1'NO_SPACE_AFTER' \{\
+. rr #HEAD_\\n[#LEVEL]_SPACE_AFTER
+. shift
+. \}
+. if '\\$1'FAMILY' \{\
+. shift
+. ds $\\*[$TOC]HEAD_\\n[#LEVEL]_FAM \\$1
+. shift
+. \}
+. if '\\$1'FONT' \{\
+. shift
+. ds $\\*[$TOC]HEAD_\\n[#LEVEL]_FT \\$1
+. shift
+. \}
+. if '\\$1'SIZE' \{\
+. shift
+. ds $\\*[$TOC]HEAD_\\n[#LEVEL]_SIZE \\$1
+. shift
+. \}
+. if '\\$1'QUAD' \{\
+. shift
+. if '\\$1'L' .ds $HEAD_\\n[#LEVEL]_QUAD LEFT
+. if '\\$1'LEFT' .ds $HEAD_\\n[#LEVEL]_QUAD LEFT
+. if '\\$1'C' .ds $HEAD_\\n[#LEVEL]_QUAD CENTER
+. if '\\$1'CENTRE' .ds $HEAD_\\n[#LEVEL]_QUAD CENTER
+. if '\\$1'CENTER' .ds $HEAD_\\n[#LEVEL]_QUAD CENTER
+. if '\\$1'R' .ds $HEAD_\\n[#LEVEL]_QUAD RIGHT
+. if '\\$1'RIGHT' .ds $HEAD_\\n[#LEVEL]_QUAD RIGHT
+. shift
+. \}
+. if '\\$1'COLOR' \{\
+. shift
+. ds $\\*[$TOC]HEAD_\\n[#LEVEL]_COLOR \\$1
+. shift
+. \}
+. if '\\$1'BASELINE_ADJUST' \{\
+. shift
+. ds $HEAD_\\n[#LEVEL]_BASELINE_ADJ \\$1
+. shift
+. \}
+. if '\\$1'CAPS' \{\
+. nr #\\*[$TOC]HEAD_\\n[#LEVEL]_CAPS 1
+. shift
+. \}
+. if '\\$1'NO_CAPS' \{\
+. rr #HEAD_\\n[#LEVEL]_CAPS
+. shift
+. \}
+. if '\\$1'NUMBER' \{\
+. nr #NUMBER_HEAD_\\n[#LEVEL] 1
+. nr #HEAD_\\n[#LEVEL]_NUM 0 1
+. shift
+. \}
+. if '\\$1'NO_NUMBER' \{\
+. rr #NUMBER_HEAD_\\n[#LEVEL]
+. shift
+. \}
+. if '\\$1'INDENT' \{\
+. shift
+. nr #TOC_HEAD_\\n[#LEVEL]_INDENT \\$1
+. nr #FROM_STYLE_\\n[#LEVEL] 1
+. shift
. \}
. \}
-. REMOVE_INDENT
-. ev
-. if \\n[#NUMBER_SH] \{ .RESET_PARAHEAD_NUMBER \}
-. if r#START \{ .rr #START \}
-. if r#EPIGRAPH \{ .rr #EPIGRAPH \}
-. if r#Q_FITS \{ .rr #Q_FITS \}
-. if r#END_QUOTE \{ .rr #END_QUOTE \}
-. if r#LINEBREAK \{ .rr #LINEBREAK \}
-. rm $TOC_SH_ITEM
-. nr #PP 0
-. nr #HEAD 2
+. rr #LEVEL
+. if d$TOC .rm $TOC
.END
\#
-\# ---Paragraph heads---
+.ALIAS TOC_ENTRY_STYLE HEADING_STYLE
\#
-\# PARAHEAD INDENT
-\# ---------------
-\# *Argument:
-\# <size of indent>
+\# OLDSTYLE HEADINGS
+\# -----------------
+\# *Arguments:
+\# None.
\# *Function:
-\# Creates or modifies register #PH_INDENT.
-\# *Notes:
-\# Default is 1/2 #PP_INDENT for TYPESET and TYPEWRITE.
+\# Called from HEAD, SUBHEAD, and SUBSUBHEAD, sets style
+\# parameters for HEADINGs 1-3 to former mom defaults for those macros.
+\# Any styles already assigned to those levels are retained.
\#
-.MAC PARAHEAD_INDENT END
-. nr #PH_INDENT (\\$1)
-.END
-\#
-\# PARAHEAD SPACE
-\# --------------
-\# *Argument:
-\# <amount of horizontal space between parahead and paragraph text>
-\# *Function:
-\# Creates or modifies string $PH_SPACE.
+\# Called by user with no argument, allows use of old style HEAD,
+\# SUBHEAD, and SUBSUBHEAD without generating the deprecated msg.
\# *Notes:
-\# Default is .6m for TYPESET and \0 (1 digit space) for TYPEWRITE.
+\# For backward compatibility, and to ease the transition to
+\# the HEADING scheme for heads.
\#
-.MAC PARAHEAD_SPACE END
-. ds $PH_SPACE \\$1
-.END
-\#
-\#
-\# PARAHEAD
-\# --------
-\# *Arguments:
-\# "<para head>"
-\# *Function:
-\# Deposits a paragraph head at the start and into the body of a
-\# paragraph.
-\# *Notes:
-\# PARAHEAD *must* come after PP.
+\# Paraheads must be set with .HEADING <level> PARAHEAD; attempts
+\# to call PARAHEAD abort with an instructive message.
\#
-.MAC PARAHEAD END
-. if \\n[#UNDERLINE_ON]=1 .UNDERLINE OFF
-.\" Collect parahead for TOC.
-. nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
-. ie \\n[#NUMBER_PH] \{\
-. ds $TOC_PH_ITEM \\n+[#PH_NUM].\0\\$1\\|
-. nr #PH_NUM \\n-[#PH_NUM]
-. \}
-. el \{\
-. ds $TOC_PH_ITEM \\$1\\|
-. \}
-. ev TOC_EV
-. da TOC_ENTRIES
+.MAC OLDSTYLE_HEADINGS END
+. if '\\$1'' .nr #SKIP_MSG 1
+. nr #FROM_OLDSTYLE 1 \" Used in HEADING
. if \\n[#PRINT_STYLE]=1 \{\
-\!. fam \\*[$TYPEWRITER_FAM]
-\!. ft R
-\!. ps \\*[$TYPEWRITER_PS]
+. if !\\n[#LEVEL_1_SET] \{\
+. HEADING_STYLE 1 \
+ FONT R \
+ SIZE +0 \
+ QUAD C \
+ CAPS \
+ UNDERSCORE .5 2p \
+ BASELINE_ADJUST 0 \
+ SPACE_AFTER
+. nr #OLDSTYLE_HD 1
+. return
+. \}
+. if !\\n[#LEVEL_2_SET] \{\
+. HEADING_STYLE 2 \
+ FONT R \
+ SIZE +0 \
+ UNDERSCORE .5 2p \
+ BASELINE_ADJUST \\n[.v]/8
+. nr #OLDSTYLE_SH 1
+. return
+. \}
+. if !\\n[#LEVEL_3_SET] \{\
+. HEADING_STYLE 3 \
+ FONT R \
+ SIZE +0 \
+ BASELINE_ADJUST \\n[.v]/8
+. nr #OLDSTYLE_SSH 1
+. return
+. \}
. \}
. if \\n[#PRINT_STYLE]=2 \{\
-\!. FAMILY \\*[$TOC_PH_FAM]
-\!. FT \\*[$TOC_PH_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PH_SIZE_CHANGE]
-. \}
-\!. TRAP OFF
-\!. PAD_MARKER ^
-. ie \\n[#PRINT_STYLE]=1 \{\
-\!. PAD "\\h'6m'\\*[$TOC_PH_ITEM]\\*[$TOC_PN_TYPEWRITE]"
+. if !\\n[#LEVEL_1_SET] \{\
+. HEADING_STYLE 1 \
+ FAMILY \E*[$DOC_FAM] \
+ FONT B \
+ SIZE +1 \
+ QUAD C \
+ CAPS \
+ UNDERSCORE .5 2p \
+ BASELINE_ADJUST 0 \
+ SPACE_AFTER
+. nr #OLDSTYLE_HD 1
+. return
+. \}
+. if !\\n[#LEVEL_2_SET] \{\
+. HEADING_STYLE 2 \
+ FAMILY \E*[$DOC_FAM] \
+ FONT B \
+ SIZE +.5 \
+ BASELINE_ADJUST \\n[.v]/8
+. nr #OLDSTYLE_SH 1
+. return
+. \}
+. if !\\n[#LEVEL_3_SET] \{\
+. HEADING_STYLE 3 \
+ FAMILY \E*[$DOC_FAM] \
+ FONT I \
+ SIZE +.5 \
+ BASELINE_ADJUST \\n[.v]/8
+. nr #OLDSTYLE_SSH 1
+. return
+. \}
+. \}
+. rr #FROM_OLDSTYLE
+.END
+\#
+\# "Deprecated" message
+\#
+.MAC DEPRECATED END
+. if !\\n[#SKIP_MSG] \{\
+. tm1 "[mom]: Macro '\\$1' at line \\n[.c] is deprecated.
+. tm1 " Invoking HEADING \\$2 instead and assigning style defaults
+. tm1 " from former \\$1 as described in the documentation.
+. tm1 " If another style is desired, use HEADING_STYLE \\$2 to
+. tm1 " create it (see docs).
+. tm1 " Further warnings will not be emitted for \\$1.
+. tm1 " To avoid this message when using the deprecated HEAD,
+. tm1 " SUBHEAD, and SUBSUBHEAD macros, add '.OLDSTYLE_HEADINGS'
+. tm1 " after PRINTSTYLE before START.
+. rm $MACRO
+. \}
+.END
+\#
+\# Wrappers around old-style headings.
+\#
+.MAC HEAD END
+. if !\\n[#OLDSTYLE_HD] \{\
+. DEPRECATED HEAD 1
+. OLDSTYLE_HEADINGS HEAD
. \}
-. el \{\
-\!. PAD "\\h'\\n[#TOC_PH_INDENT]u'\\*[$TOC_PH_ITEM]\\*[$TOC_PN]"
+. HEADING 1 \\$@
+.END
+\#
+.MAC SUBHEAD END
+. if !\\n[#OLDSTYLE_SH] \{\
+. DEPRECATED SUBHEAD 2
+. OLDSTYLE_HEADINGS SUBHEAD
. \}
-\!. PAD_MARKER #
-\!. EOL
-\!. ST 100 L
-\!. ST 101 R
-. if \\n[#PRINT_STYLE]=2 \{\
-\!. FAMILY \\*[$TOC_PN_FAM]
-\!. FT \\*[$TOC_PN_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
-. \}
-\!. TAB 100
-\!. PRINT \\*[LEADER]
-\!. TN
-\!. TRAP
-\!. PRINT \\n[#TOC_ENTRY_PN]
-\!. TQ
-. di
-. ev
-.\" End collection of parahead for TOC
-.\" Process parahead
-. if \\n[#SLANT_ON] \{\
-. nr #SLANT_WAS_ON 1
-\E*[SLANTX]
+. HEADING 2 \\$@
+.END
+\#
+.MAC SUBSUBHEAD END
+. if !\\n[#OLDSTYLE_SSH] \{\
+. DEPRECATED SUBSUBHEAD 3
+. OLDSTYLE_HEADINGS SUBSUBHEAD
. \}
-. ie \\n[#PP]=1 \{\
-. if \\n[#INDENT_FIRST_PARAS] \{\
-. vpt 0
-. if \\n[#PRINT_STYLE]=1 \{ .sp -1v \}
-. ti \\n[#PH_INDENT]u
-. vpt
-. \}
+. HEADING 3 \\$@
+.END
+\#
+.MAC PARAHEAD END
+. tm1 "[mom]: \\$0 is no longer a valid macro.
+. tm1 " Use 'HEADING <level> PARAHEAD <text>' instead.
+. tm1 " You will probably want to invoke HEADING_STYLE to set
+. tm1 " the type parameters for the parahead. See docs.
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+.END
+\#
+\# Wrapper macro for oldstyle NUMBER_HEADS, NUMBER_SUBHEADS...
+\#
+.MAC HEADING_NUMBERS END
+. if '\\$0'NUMBER_PARAHEADS' \{\
+. tm1 "[mom]: \\$0 is no longer a valid macro.
+. tm1 " Use 'HEADING_STYLE <level> NUMBER' instead. See docs.
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+. return
. \}
+. if '\\$0'NUMBER_HEADS' .nr level 1
+. if '\\$0'NUMBER_SUBHEADS' .nr level 2
+. if '\\$0'NUMBER_SUBSUBHEADS' .nr level 3
+. ds mom "[mom]:\"
+. ie '\\$1'' .ds $PARAM NUMBER
. el \{\
-. vpt 0
-. if \\n[#PRINT_STYLE]=1 \{ .sp -1v \}
-. ti \\n[#PH_INDENT]u
-. vpt
-. \}
-. ie \\n[#PREFIX_CH_NUM]=1 \{\
-. ds $CH_NUM \\n[#CH_NUM].
+. ds $PARAM NO_NUMBER
+. ds $SWITCH " \\$1
. \}
-. el \{\
-. rm $CH_NUM
+. HEADING_STYLE \\n[level] \\*[$PARAM]
+. if (\\n[#OLDSTYLE_HD]=1):(\\n[#OLDSTYLE_SH]=1):(\\n[#OLDSTYLE_SSH]=1) \{\
+. tm1 "\\*[mom] OLDSTYLE_HEADINGS detected.
+. ds mom " \"
. \}
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. ie \\n[#NUMBER_PH] \{\
-. if \\n[#NUMBER_HEAD] \{\
-. ie \\n[#NUMBER_SH] \{\
-. UNDERSCORE "\R'#NUMBERED 1'\\*[$CH_NUM]\\n[#HEAD_NUM].\\n[#SH_NUM].\\n+[#PH_NUM].\\ \\$1"
-\0
-. \}
-. el \{\
-. UNDERSCORE "\R'#NUMBERED 1'\\*[$CH_NUM]\\n[#HEAD_NUM].\\n+[#PH_NUM].\\ \\$1"
-\0
-. \}
-. \}
-. ie \\n[#NUMBER_SH] \{\
-. if !\\n[#NUMBERED] \{\
-. UNDERSCORE "\\*[$CH_NUM]\\n[#SH_NUM].\\n+[#PH_NUM].\\ \\$1"
-\0
-. \}
-. \}
-. el \{\
-. if !\\n[#NUMBERED] \{\
-. UNDERSCORE "\\*[$CH_NUM]\\n+[#PH_NUM].\\ \\$1"
-\0
-. \}
+. tm1 "\\*[mom] Setting HEADING_STYLE \\n[level] to '\\*[$PARAM]' at '\\$0\\*[$SWITCH]', line \\n[.c].
+. rm $PARAM
+. rm $SWITCH
+.END
+\#
+.ALIAS NUMBER_HEADS HEADING_NUMBERS
+.ALIAS NUMBER_SUBHEADS HEADING_NUMBERS
+.ALIAS NUMBER_SUBSUBHEADS HEADING_NUMBERS
+.ALIAS NUMBER_PARAHEADS HEADING_NUMBERS
+\#
+\# PREFIX CHAPTER NUMBERS TO HEADINGS/TOC ENTRIES
+\# ----------------------------------------------------------------
+\# *Arguments:
+\# <none> | <chapter number> | <anything>
+\# *Function:
+\# Toggles register #PREFIX_CH_NUM. Sets register #CH_NUM from
+\# string $CHAPTER if $CHAPTER is a digit; if <chapter number> arg
+\# given, sets #CH_NUM to arg.
+\# *Notes:
+\# Default is OFF.
+\#
+.MAC PREFIX_CHAPTER_NUMBER END
+. ie '\\$1'' \{\
+. ie r#CH_NUM \{\
+. nr #PREFIX_CH_NUM 1
+. if \\n[#CHAPTER_CALLED] \{\
+. ie \B'\\*[$CHAPTER]' .nr #CH_NUM \\*[$CHAPTER]
+. el .PREFIX_CH_NUM_WARNING
+. rr #CHAPTER_CALLED
. \}
. \}
. el \{\
-. UNDERSCORE "\\$1"
-\0
-. \}
-. if \\n[#SLANT_WAS_ON] \{\
-. if \\n[#UNDERLINE_SLANT] \{ .UNDERLINE \}
-. if \\n[#SLANT_MEANS_SLANT] \{\
-\E*[SLANT]\c
+. ie \B'\\*[$CHAPTER]' \{\
+. nr #PREFIX_CH_NUM 1
+. nr #CH_NUM \\*[$CHAPTER]
. \}
-. rr #SLANT_WAS_ON
+. el .PREFIX_CH_NUM_WARNING
. \}
. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. FAM \\*[$PH_FAM]
-. FT \\*[$PH_FT]
-. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$PH_SIZE_CHANGE]
-. if \\n[#PH_COLOR]=1 \{ .COLOR \\*[$PH_COLOR] \}
-. ie \\n[#NUMBER_PH] \{\
-. ie \\n[#PREFIX_CH_NUM]=1 \{\
-. ds $CH_NUM \\n[#CH_NUM].
-. \}
-. el \{\
-. rm $CH_NUM
-. \}
-. if \\n[#NUMBER_HEAD] \{\
-. ie \\n[#NUMBER_SH] \{\
-. PRINT "\R'#NUMBERED 1'\\*[$CH_NUM]\\n[#HEAD_NUM].\\n[#SH_NUM].\\n+[#PH_NUM].\0\\$1\h'\\*[$PH_SPACE]'\c"
-. \}
-. el \{\
-. PRINT "\R'#NUMBERED 1'\\*[$CH_NUM]\\n[#HEAD_NUM].\\n+[#PH_NUM].\0\\$1\h'\\*[$PH_SPACE]'\c"
-. \}
-. \}
-. ie \\n[#NUMBER_SH] \{\
-. if !\\n[#NUMBERED] \{\
-. PRINT "\\*[$CH_NUM]\\n[#SH_NUM].\\n+[#PH_NUM].\0\\$1\h'\\*[$PH_SPACE]'\c"
-. \}
-. \}
-. el \{\
-. if !\\n[#NUMBERED] \{\
-. PRINT "\\*[$CH_NUM]\\n+[#PH_NUM].\0\\$1\h'\\*[$PH_SPACE]'\c"
-. \}
-. \}
-. \}
-. el \{\
-. PRINT "\\$1\h'\\*[$PH_SPACE]'\c"
-. \}
+. el \{\
+. ie \B'\\$1' \{\
+. nr #CH_NUM \\$1
+. nr #PREFIX_CH_NUM 1
. \}
-. FAMILY \\*[$DOC_FAM]
-. FT \\*[$PP_FT]
-. PT_SIZE \\n[#DOC_PT_SIZE]u
-. if \\n[#PH_COLOR]=1 \m[]\c
-. if \\n[#SLANT_WAS_ON] \{\
-. rr #SLANT_WAS_ON
-\E*[SLANT]\c
+. el .rr #PREFIX_CH_NUM
. \}
-. rr #NUMBERED
-. rm $TOC_PH_ITEM
.END
\#
+.MAC PREFIX_CH_NUM_WARNING END
+. tm1 "[mom]: PREFIX_CHAPTER_NUMBER cannot determine a chapter number.
+. tm1 " Please enter the current chapter number as a digit after
+. tm1 " PREFIX_CHAPTER_NUMBER.
+. ab Aborting '\\n[.F]' at PREFIX_CHAPTER_NUMBER, line \\n[.c].
+.END
\#
\# ====================================================================
\#
@@ -11077,17 +10570,14 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #REPEAT 1
. ds $LINEBREAK_CHAR \\$1
. ds $LINEBREAK_CHAR_V_ADJ \\$3
-. if '\\*[$LINEBREAK_CHAR_V_ADJ]'' \{\
-. ds $LINEBREAK_CHAR_V_ADJ +0
-. \}
+. if '\\*[$LINEBREAK_CHAR_V_ADJ]'' .ds $LINEBREAK_CHAR_V_ADJ +0
. while \\$2>\\n[#REPEAT] \{\
. as $LINEBREAK_CHAR "\\ \\$1
. nr #REPEAT \\n[#REPEAT]+1
-.\}
+. \}
. rr #REPEAT
.END
\#
-\#
\# LINE BREAK
\# ----------
\# *Arguments:
@@ -11098,31 +10588,28 @@ y\\R'#DESCENDER \\n[.cdp]'
\# If $LINEBREAK_CHAR is blank, simply advances 2 line spaces.
\#
.MAC LINEBREAK END
-. if r#Q_AT_TOP \{ .rr #Q_AT_TOP \}
+. if r #Q_AT_TOP .rr #Q_AT_TOP
. po \\n[#DOC_L_MARGIN]u
-. ie '\\*[$LINEBREAK_CHAR]'' \{ .ALD \\n[#DOC_LEAD]u*2 \}
+. ie '\\*[$LINEBREAK_CHAR]'' .sp 2
. el \{\
-. if \\n[#PRINT_STYLE]=1 \{\
-. ie \\n[#END_QUOTE] \{ . \}
-. el \{ .ALD \\n[#DOC_LEAD]u \}
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. ie \\n[#END_QUOTE] \{ . \}
-. el \{ .ALD \\n[#DOC_LEAD]u \}
-. \}
+. ie \\n[#END_QUOTE] .
+. el .sp
. ev LINEBREAK
. evc 0
. CENTER
-. PRINT \m[\\*[$LINEBREAK_COLOR]]\\v'\\*[$LINEBREAK_CHAR_V_ADJ]'\\*[$LINEBREAK_CHAR]\\v'\\*[$LINEBREAK_CHAR_V_ADJ]'\m[]
-. if \\n[#PRINT_STYLE]=1 \{ .ALD \\n[#DOC_LEAD]u \}
-. if \\n[#PRINT_STYLE]=2 \{ .ALD \\n[#DOC_LEAD]u \}
+. PRINT \
+\m[\\*[$LINEBREAK_COLOR]]\v'\\*[$LINEBREAK_CHAR_V_ADJ]'\
+\\*[$LINEBREAK_CHAR]\m[]
+. sp
. ev
. QUAD \\*[$DOC_QUAD]
. \}
. nr #LINEBREAK 1
-. if r#QUOTE \{ .rr #QUOTE \}
-. if r#END_QUOTE \{ .rr #END_QUOTE \}
+. if r #QUOTE .rr #QUOTE
+. if r #END_QUOTE .rr #END_QUOTE
. nr #PP 0
+. nr #LB_4_HD 1
+. nr #LB_4_PARAHEAD 1
.END
\#
\# ====================================================================
@@ -11140,17 +10627,16 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
.MAC PP_FONT END
. if \\n[#PRINT_STYLE]=1 \{\
-. ie \\n[#ITALIC_MEANS_ITALIC] \{ .nop \}
-. el \{ .return \}
+. ie \\n[#ITALIC_MEANS_ITALIC] .nop
+. el .return
. \}
. if \\n[#COLLATE]=1 \{\
-. if !'\\*[$SAVED_PP_FT]'' \{ .rm $SAVED_PP_FT \}
+. if !'\\*[$SAVED_PP_FT]'' .rm $SAVED_PP_FT
. \}
. ds $PP_FT \\$1
. FT \\*[$PP_FT]
.END
\#
-\#
\# PARAGRAPH INDENT
\# ----------------
\# *Argument:
@@ -11164,10 +10650,22 @@ y\\R'#DESCENDER \\n[.cdp]'
\# PRINTSTYLE, not DEFAULTS.
\#
.MAC PARA_INDENT END
-. nr #PP_INDENT (\\$1)
+. ie \B'\\$1' \{\
+. nr #PP_INDENT (\\$1)
+. nr #SAVED_PP_INDENT \\n[#PP_INDENT]
+. \}
+. el \{\
+. ie '\\$1'' \{\
+. nr #PP_INDENT \\n[#SAVED_PP_INDENT]
+. rr #SAVED_PP_INDENT
+. \}
+. el \{\
+. nr #SAVED_PP_INDENT \\n[#PP_INDENT]
+. rr #PP_INDENT
+. \}
+. \}
.END
\#
-\#
\# INDENT FIRST PARAGRAPHS
\# -----------------------
\# *Arguments:
@@ -11180,11 +10678,10 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Default is OFF.
\#
.MAC INDENT_FIRST_PARAS END
-. ie '\\$1'' \{ .nr #INDENT_FIRST_PARAS 1 \}
-. el \{ .rr #INDENT_FIRST_PARAS \}
+. ie '\\$1'' .nr #INDENT_FIRST_PARAS 1
+. el .rr #INDENT_FIRST_PARAS
.END
\#
-\#
\# INTER-PARAGRAPH SPACING
\# -----------------------
\# *Arguments:
@@ -11193,15 +10690,14 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Adds a line space between paragraphs in body text. Block quotes
\# are unaffected.
\# *Notes:
-\# Default is OFF. PARA_SPACE ON is not recommended for use
-\# with PRINTSTYLE TYPEWRITE.
+\# Default is OFF. PARA_SPACE is not recommended for use with
+\# PRINTSTYLE TYPEWRITE without SINGLESPACE.
\#
.MAC PARA_SPACE END
-. ie '\\$1'' \{ .nr #PP_SPACE 1 \}
-. el \{ .rr #PP_SPACE \}
+. ie '\\$1'' .nr #PP_SPACE 1
+. el .rr #PP_SPACE
.END
\#
-\#
\# PARAGRAPH
\# ---------
\# *Arguments:
@@ -11209,12 +10705,6 @@ y\\R'#DESCENDER \\n[.cdp]'
\# *Function:
\# Figures out what to do with paragraphs under differing conditions.
\# *Notes:
-\# For the time being, there's no automatic widow/orphan control.
-\# Controlling them isn't just a matter of establishing an arbitrary
-\# number of lines needed for a para, since groff doesn't then
-\# handle single line paragraphs gracefully. Usually, the whole
-\# page needs to be tweaked.
-\#
\# Note the use of transparent line break (\!.br) to get
\# PP to work within blockquotes and epigraphs.
\#
@@ -11223,7 +10713,7 @@ y\\R'#DESCENDER \\n[.cdp]'
.MAC PP END
. br
. if \\n[#DOC_TYPE]=4 \{\
-. if !'\\n(.z'' \{ .di \}
+. if !'\\n[.z]'' .di
. nr #TOTAL_FIELDS \\n[#FIELD]
. nr #FIELD 0 1
. nr #NUM_FIELDS 0 1
@@ -11233,42 +10723,42 @@ y\\R'#DESCENDER \\n[.cdp]'
. LETTERHEAD\\n+[#FIELD]
. QUAD \\*[$DOC_QUAD]
. ALD \\n[#DOC_LEAD]u
-. if \\n[#DATE_FIRST]=1 \{ .ALD \\n[#DOC_LEAD]u \}
+. if \\n[#DATE_FIRST]=1 .ALD \\n[#DOC_LEAD]u
. rr #DATE_FIRST
. rm LETTERHEAD\\n[#FIELD]
-.\}
+. \}
. rr #FIELD
. rr #NUM_FIELDS
. rr #TOTAL_FIELDS
. \}
. \}
. rr #PP_ACTIVE
-. if r#Q_AT_TOP \{ .rr #Q_AT_TOP \}
+. if r #Q_AT_TOP .rr #Q_AT_TOP
. if \\n[#PP_STYLE]=1 \{\
. if \\n[#ENDNOTE] \{\
. nr #RESET_PARA_SPACE \\n[#PP_SPACE]
-. ie \\n[#EN_PP_SPACE] \{ .PARA_SPACE \}
-. el \{ .PARA_SPACE OFF \}
+. ie \\n[#EN_PP_SPACE] .PARA_SPACE
+. el .PARA_SPACE OFF
. \}
. br
-. if !\\n[#ENDNOTE] \{ .po \\n[#L_MARGIN]u \}
+. if !\\n[#ENDNOTE] .po \\n[#L_MARGIN]u
. if \\n[#COLUMNS] \{\
. if !\\n[#ENDNOTE] \{\
. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u
-. nr #L_MARGIN \\n(.o
+. nr #L_MARGIN \\n[.o]
. \}
. \}
-. if \\n[#TAB_ACTIVE] \{ .TAB \\n[#CURRENT_TAB] \}
+. if \\n[#TAB_ACTIVE] .TAB \\n[#CURRENT_TAB]
. ie \\n[#PRINT_STYLE]=1 \{\
. TYPEWRITER
-. ie \\n[#ENDNOTE] \{ .vs \\n[#EN_LEAD]u \}
-. el \{ .vs \\n[#DOC_LEAD]u \}
+. ie \\n[#ENDNOTE] .vs \\n[#EN_LEAD]u
+. el .vs \\n[#DOC_LEAD]u
. QUAD \\*[$DOC_QUAD]
. if \\n[#SLANT_ON] \{\
-. if \\n[#UNDERLINE_SLANT] \{ .UNDERLINE \}
+. if \\n[#UNDERLINE_SLANT] .UNDERLINE
. \}
. if '\\*[$PP_FT]'I' \{\
-. if \\n[#ITALIC_MEANS_ITALIC] \{ .FT I \}
+. if \\n[#ITALIC_MEANS_ITALIC] .FT I
. \}
. \}
. el \{\
@@ -11293,20 +10783,18 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. ie \\n[#PP]=0 \{\
. if \\n[#INDENT_FIRST_PARAS] \{\
-. ie \\n[#INDENT_ACTIVE] \{ .ti \\n[#INDENT]u+\\n[#PP_INDENT]u \}
-. el \{ .ti \\n[#PP_INDENT]u \}
-. if '\\n(.z'END_NOTES' \{\
+. ie \\n[#INDENT_ACTIVE] .ti \\n[#INDENT]u+\\n[#PP_INDENT]u
+. el .ti \\n[#PP_INDENT]u
+. if '\\n[.z]'END_NOTES' \
. ti \\n[#EN_PP_INDENT]u+\\n[#EN_TEXT_INDENT]u
-. \}
. \}
-. if r#END_QUOTE \{\
+. if r #END_QUOTE \{\
. if \\n[#END_QUOTE] \{\
. if !\\n[#LINEBREAK] \{\
-. ie \\n[#INDENT_ACTIVE] \{ .ti \\n[#INDENT]u+\\n[#PP_INDENT]u \}
-. el \{ .ti \\n[#PP_INDENT]u \}
-. if '\\n(.z'END_NOTES' \{\
+. ie \\n[#INDENT_ACTIVE] .ti \\n[#INDENT]u+\\n[#PP_INDENT]u
+. el .ti \\n[#PP_INDENT]u
+. if '\\n[.z]'END_NOTES' \
. ti \\n[#EN_PP_INDENT]u+\\n[#EN_TEXT_INDENT]u
-. \}
. \}
. \}
. \}
@@ -11314,40 +10802,38 @@ y\\R'#DESCENDER \\n[.cdp]'
. el \{\
. br
. if \\n[#PP_SPACE] \{\
-. if \\n[#PRINT_STYLE]=2 \{\
-. ie \\n[#END_QUOTE] \{\
+. ie \\n[#END_QUOTE] \{\
+. ALD \\n[#DOC_LEAD]u
+. rr #END_QUOTE
+. nr #NO_SPACE 1
+. nr #BASELINE_MARK \\n[nl]
+. \}
+. el \{\
+. if \\n[#NO_SPACE]=1 .rr #NO_SPACE
+. if !\\n[nl]=\\n[#BASELINE_MARK] \{\
. ALD \\n[#DOC_LEAD]u
-. rr #END_QUOTE
-. nr #NO_SPACE 1
-. nr #BASELINE_MARK \\n(nl
-. \}
-. el \{\
-. if \\n[#NO_SPACE]=1 \{\
-. rr #NO_SPACE
-. \}
-. if !\\n(nl=\\n[#BASELINE_MARK] \{\
-. ALD \\n[#DOC_LEAD]u
-. rr #BASELINE_MARK
-. \}
+. rr #BASELINE_MARK
. \}
. \}
. \}
-. ie \\n[#INDENT_ACTIVE] \{ .ti \\n[#INDENT]u+\\n[#PP_INDENT]u \}
-. el \{ .ti \\n[#PP_INDENT]u \}
-. if '\\n(.z'END_NOTES' \{\
+. ie \\n[#INDENT_ACTIVE] .ti \\n[#INDENT]u+\\n[#PP_INDENT]u
+. el .ti \\n[#PP_INDENT]u
+. if '\\n[.z]'END_NOTES' \
. ti \\n[#EN_PP_INDENT]u+\\n[#EN_TEXT_INDENT]u
-. \}
. \}
-. if r#START \{ .rr #START \}
-. if r#QUOTE \{ .rr #QUOTE \}
-. if r#END_QUOTE \{ .rr #END_QUOTE \}
-. if r#HEAD \{ .rr #HEAD \}
-. if r#EPIGRAPH \{ .rr #EPIGRAPH \}
-. if r#Q_FITS \{ .rr #Q_FITS \}
-. if r#LINEBREAK \{ .rr #LINEBREAK \}
+. if !\\n[#PP]=0 \{\
+. if r #START .rr #START
+. \}
+. if r #QUOTE .rr #QUOTE
+. if r #END_QUOTE .rr #END_QUOTE
+. if r #HEAD .rr #HEAD
+. if r #SUBHEAD .rr #SUBHEAD
+. if r #EPIGRAPH .rr #EPIGRAPH
+. if r #Q_FITS .rr #Q_FITS
+. if r #LINEBREAK .rr #LINEBREAK
. if \\n[#ENDNOTE] \{\
-. ie \\n[#RESET_PARA_SPACE] \{ .PARA_SPACE \}
-. el \{ .PARA_SPACE OFF \}
+. ie \\n[#RESET_PARA_SPACE] .PARA_SPACE
+. el .PARA_SPACE OFF
. \}
. if \\n[#CONDENSE] \{\
\E*[COND]\c
@@ -11360,22 +10846,21 @@ y\\R'#DESCENDER \\n[.cdp]'
. if \\n[#PP_STYLE]=2 \{\
\!. br
. if \\n[#BROKEN_QUOTE] \{\
-. ie \\n(nl=\\n[#PAGE_TOP] \{ .nr #Q_PP 1 \}
-. el \{ .nr #Q_PP 0 \}
+. ie \\n[nl]=\\n[#PAGE_TOP] .nr #Q_PP 1
+. el .nr #Q_PP 0
. rr #BROKEN_QUOTE
. \}
. ie \\n[#Q_PP]=0 \{\
-. if \\n[#INDENT_FIRST_PARAS] \{\
+. if \\n[#INDENT_FIRST_PARAS] \
. ti \\n[#PP_INDENT]u/2u
-. \}
. if \\n[#ENDNOTE] \{\
-. ie \\n[#INDENT_FIRSTS] \{ .ti \\n[#PP_INDENT]u/2u \}
-. el \{ .ti 0 \}
+. ie \\n[#INDENT_FIRSTS] .ti \\n[#PP_INDENT]u/2u
+. el .ti 0
. \}
. \}
. el \{\
. ti \\n[#PP_INDENT]u/2u
-. if \\n[#PP_SPACE]=1 \{ .ALD \\n[#DOC_LEAD]u \}
+. if \\n[#PP_SPACE]=1 .ALD \\n[#DOC_LEAD]u
. \}
. if \\n[#CONDENSE] \{\
\E*[COND]\c
@@ -11388,13 +10873,12 @@ y\\R'#DESCENDER \\n[.cdp]'
.\" This takes care of multi-paragraph dialogue, where each para
.\" is introduced by an open quote whereas the previous para has
.\" no close quote.
-. if \\n[#OPEN_CLOSE]=1 \{\
-. nr #OPEN_CLOSE 0
-. \}
+. if \\n[#OPEN_CLOSE]=1 .nr #OPEN_CLOSE 0
. nr #PP_ACTIVE 1
. UNDERLINE OFF
+. if r #QUOTE_4_HD .rr #QUOTE_4_HD
+. if r #LB_4_HD .rr #LB_4_HD
.END
-\#
\# ====================================================================
\#
\# +++QUOTES+++
@@ -11413,17 +10897,17 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Default is ON for printstyle TYPEWRITE.
\#
.MAC UNDERLINE_QUOTES END
-. ie '\\$1'' \{ .nr #UNDERLINE_QUOTES 1 \}
-. el \{ .rr #UNDERLINE_QUOTES \}
+. ie '\\$1'' .nr #UNDERLINE_QUOTES 1
+. el .rr #UNDERLINE_QUOTES
.END
\#
-\#
\# QUOTE INDENT
\# ------------
\# *Argument:
\# <integer> | <integer with unit of measure appended>
\# *Function:
-\# Creates or modifies register #Q_OFFSET_VALUE.
+\# Creates or modifies register #Q_OFFSET_VALUE or string
+\# $Q_OFFSET_VALUE.
\# *Notes:
\# If just an integer given, value by which to multiply PARA_INDENT
\# to get quote indent. If integer with a unit of measure appended,
@@ -11432,20 +10916,15 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Default is 3 for typeset; 2 for typewrite.
\#
.MAC QUOTE_INDENT END
-. if r#Q_OFFSET_VALUE \{ .rr #Q_OFFSET_VALUE \}
-. if !'\\*[$Q_OFFSET_VALUE]'' \{ .rm $Q_OFFSET_VALUE \}
+. rr #Q_OFFSET_VALUE
+. rm $Q_OFFSET_VALUE
. ds $EVAL_QI_ARG \\$1
. substring $EVAL_QI_ARG -1
-. ie \B'\\*[$EVAL_QI_ARG]' \{\
-. nr #Q_OFFSET_VALUE \\$1
-. \}
-. el \{\
-. ds $Q_OFFSET_VALUE \\$1
-. \}
+. ie \B'\\*[$EVAL_QI_ARG]' .nr #Q_OFFSET_VALUE \\$1
+. el .ds $Q_OFFSET_VALUE \\$1
. rm $EVAL_QI_ARG
.END
\#
-\#
\# QUOTE_AUTOLEAD
\# --------------
\# *Arguments:
@@ -11454,10 +10933,14 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Sets autolead for quotes and/or blockquotes.
\#
.MAC QUOTE_AUTOLEAD END
-. if '\\$0'QUOTE_AUTOLEAD' \{ .nr #Q_AUTOLEAD \\$1 \}
-. if '\\$0'BLOCKQUOTE_AUTOLEAD' \{ .nr #BQ_AUTOLEAD \\$1 \}
-. if '\\$0'ENDNOTE_QUOTE_AUTOLEAD' \{ .nr #EN_Q_AUTOLEAD \\$1 \}
-. if '\\$0'ENDNOTE_BLOCKQUOTE_AUTOLEAD' \{ .nr #EN_BQ_AUTOLEAD \\$1 \}
+. ie '\\$1'DEFAULT' .nr #\\$0_DEFAULT 1
+. el \{\
+. rr #\\$0_DEFAULT
+. if '\\$0'QUOTE_AUTOLEAD' .nr #Q_AUTOLEAD \\$1
+. if '\\$0'BLOCKQUOTE_AUTOLEAD' .nr #BQ_AUTOLEAD \\$1
+. if '\\$0'ENDNOTE_QUOTE_AUTOLEAD' .nr #EN_Q_AUTOLEAD \\$1
+. if '\\$0'ENDNOTE_BLOCKQUOTE_AUTOLEAD' .nr #EN_BQ_AUTOLEAD \\$1
+. \}
.END
\#
.ALIAS BLOCKQUOTE_AUTOLEAD QUOTE_AUTOLEAD
@@ -11475,11 +10958,10 @@ y\\R'#DESCENDER \\n[.cdp]'
\# quotes, s/he can turn it off here. Has no effect in TYPEWRITE.
\#
.MAC ALWAYS_FULLSPACE_QUOTES END
-. if '\\$1'' \{ .nr #FULLSPACE_QUOTES 1 \}
-. el \{ .rr #FULLSPACE_QUOTES \}
+. if '\\$1'' .nr #FULLSPACE_QUOTES 1
+. el .rr #FULLSPACE_QUOTES
.END
\#
-\#
\# QUOTE
\# -----
\# *Arguments:
@@ -11506,35 +10988,30 @@ y\\R'#DESCENDER \\n[.cdp]'
. br
. if \\n[#LINENUMBERS]=1 \{\
. nr #LINENUMBERS 2
-. nr #NEXT_LN \\n(ln
+. nr #NEXT_LN \\n[ln]
. nm
. \}
. ie '\\$1'' \{\
. ev QUOTE
+. evc 0
. if \\n[#LINENUMBERS]=2 \{\
-. if \\n[#SILENT_QUOTE_LN]=1 \{ .nm \\n[#NEXT_LN] 1000 -4 \}
+. if \\n[#SILENT_QUOTE_LN]=1 .nm \\n[#NEXT_LN] 1000 -4
. \}
. nr #IN_DIVER 1
. nr #QUOTE 1
. di P_QUOTE
-. ie r#Q_OFFSET_VALUE \{\
-. ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*\\n[#Q_OFFSET_VALUE]u)
-. \}
-. el \{ .ll \\n[#L_LENGTH]u-\\*[$Q_OFFSET_VALUE] \}
+. ie !'\\*[$Q_OFFSET_VALUE]'' .ll \\n[#L_LENGTH]u-(\\*[$Q_OFFSET_VALUE]*2u)
+. el .ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
. if \\n[#LINENUMBERS]=2 \{\
-. if \\n[#QUOTE_LN]=1 \{\
-. nm \\n(ln "" \\*[$Q_LN_GUTTER] -3-\\*[$Q_LN_GUTTER]
-. \}
+. if \\n[#QUOTE_LN]=1 \
+. nm \\n[ln] "" \\*[$Q_LN_GUTTER] -3-\\*[$Q_LN_GUTTER]
. \}
-. ta \\n(.lu
+. ta \\n[.l]u
. if \\n[#COLUMNS] \{\
-. ie r#Q_OFFSET_VALUE \{\
+. ie \\n[#Q_OFFSET_VALUE] \
. ll \\n[#COL_L_LENGTH]u-(\\n[#PP_INDENT]u*\\n[#Q_OFFSET_VALUE]u)
-. \}
-. el \{\
-. ll \\n[#COL_L_LENGTH]u-\\*[$Q_OFFSET_VALUE]
-. \}
-. ta \\n(.lu
+. el .ll \\n[#COL_L_LENGTH]u-\\*[$Q_OFFSET_VALUE]
+. ta \\n[.l]u
. \}
. if \\n[#PRINT_STYLE]=1 \{\
. TYPEWRITER
@@ -11545,20 +11022,22 @@ y\\R'#DESCENDER \\n[.cdp]'
. FAMILY \\*[$QUOTE_FAM]
. FT \\*[$QUOTE_FT]
. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$QUOTE_SIZE_CHANGE]
-. ie !r#Q_AUTOLEAD \{ .LS \\n[#Q_LEAD]u \}
+. ie !r #Q_AUTOLEAD .LS \\n[#Q_LEAD]u
. el \{\
. AUTOLEAD \\n[#Q_AUTOLEAD]
-. nr #Q_LEAD \\n(.v
+. if r #QUOTE_AUTOLEAD_DEFAULT .LS \\n[#DOC_LEAD]u
+. nr #Q_LEAD \\n[.v]
. \}
. if \\n[#ENDNOTE] \{\
. PT_SIZE \\n[#EN_PS]u\\*[$QUOTE_SIZE_CHANGE]
-. ie !r#EN_Q_AUTOLEAD \{ .LS \\n[#EN_Q_LEAD]u \}
+. ie !r #EN_Q_AUTOLEAD .LS \\n[#EN_Q_LEAD]u
. el \{\
. AUTOLEAD \\n[#EN_Q_AUTOLEAD]
-. nr #EN_Q_LEAD \\n(.v
+. if r #ENDNOTE_QUOTE_AUTOLEAD_DEFAULT .LS \\n[#DOC_LEAD]u
+. nr #EN_Q_LEAD \\n[.v]
. \}
. \}
-. nr #Q_LEAD_REAL \\n(.v
+. nr #Q_LEAD_REAL \\n[.v]
. LEFT
. if \\n[#QUOTE_COLOR]=1 \{\
. nf
@@ -11569,27 +11048,26 @@ y\\R'#DESCENDER \\n[.cdp]'
. if \\n[#LINENUMBERS]=2 \{\
. ie \\n[#QUOTE_LN]=1 \{\
. if '\\*[$Q_LN_GUTTER]'' .ds $Q_LN_GUTTER \\*[$LN_GUTTER]
-. nm \\n(ln "" \\*[$Q_LN_GUTTER] -3-\\*[$Q_LN_GUTTER]
+. nm \\n[ln] "" \\*[$Q_LN_GUTTER] -3-\\*[$Q_LN_GUTTER]
. \}
. el \{\
-. if !\\n[#SILENT_QUOTE_LN] \{ .NUMBER_LINES OFF \}
+. if !\\n[#SILENT_QUOTE_LN] .NUMBER_LINES OFF
. \}
. \}
-. nr #Q_TOP \\n(nl
+. nr #Q_TOP \\n[nl]
. if \\n[#PRINT_STYLE]=1 \{\
-. if \\n[#UNDERLINE_QUOTES] \{\
-. FT I
-. \}
+. if \\n[#UNDERLINE_QUOTES] .FT I
. \}
. \}
-. el \{ .DO_QUOTE \}
+. el .DO_QUOTE
.END
\#
-\#
\# CODE
\# ----
\# *Arguments:
-\# <none [ BR | BREAK | SPREAD ]> | <anything [ BR | BREAK | SPREAD ]>
+\# <none> [ BR | BREAK | SPREAD ]
+\# or
+\# <anything> [ BR | BREAK | SPREAD ]
\# *Function:
\# Takes care of administrivia associated with setting code snippets.
\#
@@ -11610,7 +11088,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. ie '\\$1'' \{\
. ie \\n[#PRINT_STYLE]=1 \{\
. CODE_FAMILY C
-. ie \\n[#CODE_FT]=1 \{ .ft \\*[$CODE_FT] \}
+. ie \\n[#CODE_FT]=1 .ft \\*[$CODE_FT]
. el \{\
. CODE_FONT R
. ft R
@@ -11624,12 +11102,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. \}
. el \{\
-. ie \\n[#CODE_FAM]=1 \{ .fam \\*[$CODE_FAM] \}
+. ie \\n[#CODE_FAM]=1 .fam \\*[$CODE_FAM]
. el \{\
. CODE_FAMILY C
. fam \\*[$CODE_FAM]
. \}
-. ie \\n[#CODE_FT]=1 \{ .ft \\*[$CODE_FT] \}
+. ie \\n[#CODE_FT]=1 .ft \\*[$CODE_FT]
. el \{\
. CODE_FONT R
. ft \\*[CODE_FT]
@@ -11639,7 +11117,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. char ' \[aq]
. if !\\n[#CODE_SIZE_ADJ]=0 \{\
-. ps \\n[#PT_SIZE]u*\\n[#CODE_SIZE_ADJ]u/100u
+. ps \\n[#PT_SIZE]u*\\n[#CODE_SIZE_ADJ]u/100u
. \}
. if \\n[#RESTORE_SQ]=1 \{\
. nr #SQ_WAS_ON 1
@@ -11650,9 +11128,9 @@ y\\R'#DESCENDER \\n[.cdp]'
. el \{\
. fam
. ft
-. ps
+. if !\\n[#CODE_SIZE_ADJ]=0 .ps
. rchar '
-. gcolor
+. if \\n[#CODE_COLOR]=1 .gcolor
. if \\n[#RESTORE_UNDERLINE]=1 \{\
. rr #RESTORE_UNDERLINE
. UNDERLINE_QUOTES
@@ -11661,12 +11139,12 @@ y\\R'#DESCENDER \\n[.cdp]'
. rr #SQ_WAS_ON
. SMARTQUOTES
. \}
-. if \\n[#QUOTE] \{ .RLD 1v \}
+. if \\n[#QUOTE] .RLD 1v
. \}
. if \\n[#NUM_ARGS]=2 \{\
-. if '\\$2'BR' \{ .br \}
-. if '\\$2'BREAK' \{ .br \}
-. if '\\$2'SPREAK' \{ .brp \}
+. if '\\$2'BR' .br
+. if '\\$2'BREAK' .br
+. if '\\$2'SPREAK' .brp
. \}
.END
\#
@@ -11706,7 +11184,6 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #CODE_SIZE_ADJ \\$1
.END
\#
-\#
\# ---Blockquotes---
\#
\# BLOCKQUOTE
@@ -11728,69 +11205,64 @@ y\\R'#DESCENDER \\n[.cdp]'
. br
. if \\n[#LINENUMBERS]=1 \{\
. nr #LINENUMBERS 2
-. nr #NEXT_LN \\n(ln
+. nr #NEXT_LN \\n[ln]
. nm
. \}
. ie '\\$1'' \{\
. ev BLOCKQUOTE
+. evc 0
. if \\n[#LINENUMBERS]=2 \{\
-. if \\n[#SILENT_BQUOTE_LN]=1 \{ .nm \\n[#NEXT_LN] 1000 -4 \}
+. if \\n[#SILENT_BQUOTE_LN]=1 .nm \\n[#NEXT_LN] 1000 -4
. \}
. nr #IN_DIVER 1
. nr #QUOTE 2
. nr #PP_STYLE 2
. nr #Q_PP 0
. di B_QUOTE
-. ie r#Q_OFFSET_VALUE \{\
-. ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
-. \}
-. el \{ .ll \\n[#L_LENGTH]u-(\\*[$Q_OFFSET_VALUE]*2u) \}
+. ie !'\\*[$Q_OFFSET_VALUE]'' .ll \\n[#L_LENGTH]u-(\\*[$Q_OFFSET_VALUE]*2u)
+. el .ll \\n[#L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
. if \\n[#ENDNOTE] \{\
. if \\n[#EN_NUMBERS_ALIGN_RIGHT] \{\
-. ie r#Q_OFFSET_VALUE \{\
-. ll \\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\n[#EN_PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
-. \}
-. el \{\
-. ll \\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\*[$Q_OFFSET_VALUE]*2u)
-. \}
+. ie r#Q_OFFSET_VALUE \
+. ll \
+\\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\n[#EN_PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
+. el \
+. ll \
+\\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\*[$Q_OFFSET_VALUE]*2u)
. \}
. if \\n[#EN_NUMBERS_ALIGN_LEFT] \{\
-. ie r#Q_OFFSET_VALUE \{\
+. ie r#Q_OFFSET_VALUE \
. ll \\n[#L_LENGTH]u-(\\n[#EN_PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
-. \}
-. el \{\
+. el \
. ll \\n[#L_LENGTH]u-(\\*[$Q_OFFSET_VALUE]u*2u)
-. \}
. \}
. \}
-. ta \\n(.lu
+. ta \\n[.l]u
. CHECK_INDENT
. if \\n[#COLUMNS] \{\
-. ie r#Q_OFFSET_VALUE \{\
-. ll \\n[#COL_L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
-. \}
-. el \{\
+. ie r#Q_OFFSET_VALUE \
+. ll \
+\\n[#COL_L_LENGTH]u-(\\n[#PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
+. el \
. ll \\n[#COL_L_LENGTH]u-(\\*[$Q_OFFSET_VALUE]*2u)
-. \}
. if \\n[#ENDNOTE] \{\
. if \\n[#EN_NUMBERS_ALIGN_RIGHT] \{\
-. ie r#Q_OFFSET_VALUE \{\
-. ll \\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\n[#EN_PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
-. \}
-. el \{\
-. ll \\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\*[$Q_OFFSET_VALUE]*2u)
-. \}
+. ie r#Q_OFFSET_VALUE \
+. ll \
+\\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\n[#EN_PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
+. el \
+. ll \
+\\n[#RESET_L_LENGTH]u-\\n[#EN_TEXT_INDENT]u-(\\*[$Q_OFFSET_VALUE]*2u)
. \}
. if \\n[#EN_NUMBERS_ALIGN_LEFT] \{\
-. ie r#Q_OFFSET_VALUE \{\
-. ll \\n[#COL_L_LENGTH]u-(\\n[#EN_PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
-. \}
-. el \{\
+. ie r#Q_OFFSET_VALUE \
+. ll \
+\\n[#COL_L_LENGTH]u-(\\n[#EN_PP_INDENT]u*(\\n[#Q_OFFSET_VALUE]u*2u))
+. el \
. ll \\n[#COL_L_LENGTH]u-(\\*[$Q_OFFSET_VALUE]*2u)
-. \}
. \}
. \}
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. if \\n[#PRINT_STYLE]=1 \{\
. TYPEWRITER
@@ -11802,20 +11274,22 @@ y\\R'#DESCENDER \\n[.cdp]'
. FAMILY \\*[$BQUOTE_FAM]
. FT \\*[$BQUOTE_FT]
. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$BQUOTE_SIZE_CHANGE]
-. ie !\\n[#BQ_AUTOLEAD] \{ .LS \\n[#BQ_LEAD]u \}
+. ie !r #BQ_AUTOLEAD .LS \\n[#BQ_LEAD]u
. el \{\
. AUTOLEAD \\n[#BQ_AUTOLEAD]
-. nr #BQ_LEAD \\n(.v
+. if r #BLOCKQUOTE_AUTOLEAD_DEFAULT .LS \\n[#DOC_LEAD]u
+. nr #BQ_LEAD \\n[.v]
. \}
. if \\n[#ENDNOTE] \{\
. PT_SIZE \\n[#EN_PS]u\\*[$BQUOTE_SIZE_CHANGE]
-. ie !r#EN_BQ_AUTOLEAD \{ .LS \\n[#EN_BQ_LEAD]u \}
+. ie !r#EN_BQ_AUTOLEAD .LS \\n[#EN_BQ_LEAD]u
. el \{\
. AUTOLEAD \\n[#EN_BQ_AUTOLEAD]
-. nr #EN_BQ_LEAD \\n(.v
+. if r #ENDNOTE_BLOCKQUOTE_AUTOLEAD_DEFAULT .LS \\n[#DOC_LEAD]u
+. nr #EN_BQ_LEAD \\n[.v]
. \}
. \}
-. nr #Q_LEAD_REAL \\n(.v
+. nr #Q_LEAD_REAL \\n[.v]
. if \\n[#BQUOTE_COLOR]=1 \{\
. nf
\m[\\*[$BQUOTE_COLOR]]
@@ -11829,30 +11303,29 @@ y\\R'#DESCENDER \\n[.cdp]'
. if \\n[#LINENUMBERS]=2 \{\
. ie \\n[#BQUOTE_LN]=1 \{\
. if '\\*[$BQ_LN_GUTTER]'' .ds $BQ_LN_GUTTER \\*[$LN_GUTTER]
-. nm \\n(ln "" \\*[$BQ_LN_GUTTER] -3-\\*[$BQ_LN_GUTTER]
+. nm \\n[ln] "" \\*[$BQ_LN_GUTTER] -3-\\*[$BQ_LN_GUTTER]
. \}
. el \{\
-. if !\\n[#SILENT_BQUOTE_LN] \{ .NUMBER_LINES OFF \}
+. if !\\n[#SILENT_BQUOTE_LN] .NUMBER_LINES OFF
. \}
. \}
-. nr #Q_TOP \\n(nl
+. nr #Q_TOP \\n[nl]
. if \\n[#INDENT_FIRST_PARAS] \{\
. ie !\\n[#ENDNOTE] \{\
-. if \\n[#PRINT_STYLE]=1 \{ .ti \\n[#PP_INDENT]u/2u \}
-. if \\n[#PRINT_STYLE]=2 \{ .ti \\n[#PP_INDENT]u/2u \}
+. if \\n[#PRINT_STYLE]=1 .ti \\n[#PP_INDENT]u/2u
+. if \\n[#PRINT_STYLE]=2 .ti \\n[#PP_INDENT]u/2u
. \}
. el \{\
. if \\n[#INDENT_FIRSTS]=1 \{\
-. if \\n[#PRINT_STYLE]=1 \{ .ti \\n[#EN_PP_INDENT]u/2u \}
-. if \\n[#PRINT_STYLE]=2 \{ .ti \\n[#EN_PP_INDENT]u/2u \}
+. if \\n[#PRINT_STYLE]=1 .ti \\n[#EN_PP_INDENT]u/2u
+. if \\n[#PRINT_STYLE]=2 .ti \\n[#EN_PP_INDENT]u/2u
. \}
. \}
. \}
. \}
-. el \{ .DO_QUOTE \}
+. el .DO_QUOTE
.END
\#
-\#
\# DO QUOTE
\# --------
\# *Arguments:
@@ -11886,91 +11359,98 @@ y\\R'#DESCENDER \\n[.cdp]'
. nr #DONE_ONCE 0 1
. REMOVE_INDENT
. ev
-. nr #Q_DEPTH (\\n[#DIVER_DEPTH]-\\n[#Q_LEAD_REAL])+\\n[#LEAD]
+. nr #Q_DEPTH (\\n[#DIVER_DEPTH]-\\n[#Q_LEAD_REAL])
. nr #Q_LEAD_DIFF \\n[#LEAD]-\\n[#Q_LEAD_REAL]
-. SILENT
-. br
-. nf
-. nr #CURRENT_V_POS \\n(nl+\\n[#Q_LEAD_DIFF]+(\\n[#DIVER_DEPTH]-\\n[#Q_DEPTH_REAL])
-. SHIM
-. SILENT OFF
-. nr #Q_SPACE_ADJ \\n[#SHIM]/2
-. nr #TRAP \\n(.t-1
+. if !\\n[.v]=\\n[#Q_LEAD_REAL] \{\
+. SILENT
+. br
+. nf
+. nr #CURRENT_V_POS \
+\\n[nl]+\\n[#Q_LEAD_DIFF]+(\\n[#DIVER_DEPTH]-\\n[#Q_DEPTH_REAL])
+. SHIM
+. SILENT OFF
+. nr #Q_SPACE_ADJ \\n[#SHIM]/2
+. nr #TRAP \\n[.t]-1
+. \}
. if \\n[#ENDNOTE] \{\
. nr #RESET_QUOTE_SPACING \\n[#FULLSPACE_QUOTES]
. ALWAYS_FULLSPACE_QUOTES
. \}
. if \\n[#PRINT_STYLE]=1 \{\
-. if \\n[#START]=1 \{ . \}
+. if \\n[#START]=1 .
. if \\n[#START]=0 \{\
-. if !\\n[#LINEBREAK] \{ .ALD \\n[#DOC_LEAD]u \}
+. if !\\n[#LINEBREAK] .ALD \\n[#DOC_LEAD]u
. \}
. if \\n[#HEAD] \{\
-. if \\n[#HEAD]=1 \{ .RLD \\n[#DOC_LEAD]u \}
+. if \\n[#HEAD]=1 .RLD \\n[#DOC_LEAD]u
. \}
. \}
. if \\n[#PRINT_STYLE]=2 \{\
. ie \\n[#PP_SPACE] \{\
-. ie \\n[#HEAD]>0 \{ . \}
+. ie \\n[#HEAD] .
. el \{\
-. ie \\n[#START] \{ . \}
-. el \{ .ALD \\n[#DOC_LEAD]u \}
+. ie \\n[#START] .
+. el .ALD \\n[#DOC_LEAD]u/2u
. \}
. \}
. el \{\
. ie \\n[#Q_DEPTH]<(\\n[#TRAP_DISTANCE]-1) \{\
-. ie (\\n[#TRAP_DISTANCE]-1)-\\n[#Q_DEPTH]<\\n[#DOC_LEAD] \{\
+. ie ((\\n[#TRAP_DISTANCE]-1)-\\n[#Q_DEPTH])<\\n[#DOC_LEAD] \
. Q_NOFIT
-. \}
. el \{\
-. Q_FITS
+. ie (\\n[#TRAP_DISTANCE]-\\n[#DOC_LEAD])<\\n[#DOC_LEAD] .Q_NOFIT
+. el \{\
+. ie (\\n[#Q_DEPTH]+\\n[.v])=(\\n[#TRAP_DISTANCE]-1) .Q_NOFIT
+. el .Q_FITS
+. \}
. \}
. \}
+. el .Q_NOFIT
+. \}
+. if \\n[#LINEBREAK] \{\
+. ie !\\n[@TOP] .RLD \\n[#DOC_LEAD]u
. el \{\
-. Q_NOFIT
+. nop
+. sp |\\n[#T_MARGIN]u-\\n[#BQ_LEAD]u
. \}
. \}
. \}
-. ie r#Q_OFFSET_VALUE \{\
+. ie !'\\*[$Q_OFFSET_VALUE]'' .nr #Q_OFFSET \\n[#L_MARGIN]+\\*[$Q_OFFSET_VALUE]
+. el \
. nr #Q_OFFSET \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
-. \}
-. el \{ .nr #Q_OFFSET \\n[#L_MARGIN]+\\*[$Q_OFFSET_VALUE] \}
. if \\n[#COLUMNS] \{\
-. ie r#Q_OFFSET_VALUE \{\
-. nr #Q_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
-. \}
-. el \{ .nr #Q_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+\\*[$Q_OFFSET_VALUE] \}
+. ie r#Q_OFFSET_VALUE \
+. nr #Q_OFFSET \
+\\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
+. el .nr #Q_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+\\*[$Q_OFFSET_VALUE]
. \}
-. if !\\n[#ENDNOTE] \{ .po \\n[#Q_OFFSET]u \}
+. if !\\n[#ENDNOTE] .po \\n[#Q_OFFSET]u
. if \\n[#ENDNOTE] \{\
-. ie r#Q_OFFSET_VALUE \{ .in +\\n[#EN_PP_INDENT]u*\\n[#Q_OFFSET_VALUE]u \}
-. el \{ .in +\\*[$Q_OFFSET_VALUE] \}
+. ie \\n[#Q_OFFSET_VALUE] .in +\\n[#EN_PP_INDENT]u*\\n[#Q_OFFSET_VALUE]u
+. el .in +\\*[$Q_OFFSET_VALUE]
. \}
. ie \\n[#START]=1 \{\
-. ie !\\n[#Q_LEAD_DIFF]<0 \{ .ALD \\n[#Q_SPACE_ADJ]u \}
-. el \{ .RLD 0-\\n[#Q_LEAD_DIFF]u \}
+. ie !\\n[#Q_LEAD_DIFF]<0 .ALD \\n[#Q_SPACE_ADJ]u
+. el .RLD 0-\\n[#Q_LEAD_DIFF]u
. \}
. el \{\
-. if \\n[#PRINT_STYLE]=2 \{ .ALD \\n[#Q_SPACE_ADJ]u \}
+. if \\n[#PRINT_STYLE]=2 \{\
+. if !\\n[.v]=\\n[#Q_LEAD] .ALD \\n[#Q_SPACE_ADJ]u
+. \}
. \}
. if \\n[#QUOTE]=1 \{\
. nf
. P_QUOTE
-. if !\\n[#START] \{ .rr #QUOTE \}
+. br
+. if !\\n[#START] .rr #QUOTE
. \}
. if \\n[#QUOTE]=2 \{\
. nf
. B_QUOTE
-. \}
-. if \\n[#UNDERLINE_ON] \{\
-. vpt 0
-. sp -1v
-. UNDERLINE OFF
-. vpt
+. br
. \}
. if \\n[#PRINT_STYLE]=1 \{\
-. ALD \\n[#DOC_LEAD]u
-. if !\\n[.v]=\\n[#DOC_LEAD] \{ .SHIM \}
+. if !\\n[.v]=\\n[#DOC_LEAD] .SHIM
. \}
. if \\n[#PRINT_STYLE]=2 \{\
. ie \\n[#START] \{\
@@ -11983,7 +11463,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. \}
. el \{\
-. ie \\n[#PP_SPACE] \{ . \}
+. ie \\n[#PP_SPACE] .
. el \{\
. ie \\n[#HEAD]=1 \{\
. ALD \\n[#DOC_LEAD]u
@@ -11991,95 +11471,95 @@ y\\R'#DESCENDER \\n[.cdp]'
. \}
. el \{\
. ie \\n[#FULLSPACE_QUOTES] \{\
-. ie \\n[#ENDNOTE] \{ .ALD \\n[#EN_LEAD]u \}
-. el \{ .ALD \\n[#DOC_LEAD]u \}
+. ie \\n[#ENDNOTE] .ALD \\n[#EN_LEAD]u
+. el .ALD \\n[#DOC_LEAD]u
. \}
-. el \{ .ALD (\\n[#DOC_LEAD]u/2u) \}
+. el .ALD (\\n[#DOC_LEAD]/2)u
. ie \\n[#Q_FITS] \{\
-. ie \\n[#Q_TOP]=\\n[#PAGE_TOP] \{\
+. ie (\\n[#Q_TOP]=\\n[#PAGE_TOP]):(\\n[@TOP]=1) \{\
. nr #Q_AT_TOP 1
. nr #DELAY_SHIM 1
. \}
-. el \{ .SHIM \}
+. el \{\
+. if !\\n[.v]=\\n[#Q_LEAD_REAL] .SHIM
+. \}
. \}
. el \{\
. SHIM
.\" Make sure that Q_LEAD_DIFF is not added to the first line of
.\" normal text at the top of any page following output of a quote
.\" whose last line falls on B_MARGIN of the previous page.
-. if \\n(nl=(\\n[#T_MARGIN]-\\n[#DOC_LEAD]+\\n[#Q_LEAD_DIFF]) \{\
-. PRINT \&
-. br
-. sp -1v-\\n[#Q_LEAD_DIFF]u
+. if \\n[#Q_LEAD_DIFF] \{\
+. if \\n[nl]=(\\n[#T_MARGIN]-\\n[#DOC_LEAD]+\\n[#Q_LEAD_DIFF]) \{\
+. PRINT \&
+. br
+. sp -1v-\\n[#Q_LEAD_DIFF]u
+. nr #Q_LEAD_DIFF_CHECK 1
+. \}
. \}
. \}
. \}
. \}
. \}
. \}
+. rr #Q_SPACE_ADJ
. if \\n[#LINENUMBERS]=2 \{\
. nr #LINENUMBERS 1
. if !\\n[#ENDNOTE] \{\
-. ie \\n[#RESTORE_LN_NUM]=1 \{ .nm \\n[#NEXT_LN] \}
-. el \{ .nm +0 \}
+. ie \\n[#RESTORE_LN_NUM]=1 .nm \\n[#NEXT_LN]
+. el .nm +0
. \}
. \}
-. if \\n[#ENDNOTE] \{ .nr #FULLSPACE_QUOTES \\n[#RESET_QUOTE_SPACING] \}
-. if r#HEAD \{ .rr #HEAD \}
-. if r#EPIGRAPH \{ .rr #EPIGRAPH \}
+. if \\n[#ENDNOTE] .nr #FULLSPACE_QUOTES \\n[#RESET_QUOTE_SPACING]
+. if r #HEAD .rr #HEAD
+. if r #EPIGRAPH .rr #EPIGRAPH
. rr #Q_PP
. rr #LINEBREAK
. nr #PP_STYLE 1
. nr #END_QUOTE 1
-. if !\\n[#ENDNOTE] \{ .po \\n[#L_MARGIN]u \}
-. if \\n[#ENDNOTE] \{\
-. in \\n[#EN_TEXT_INDENT]u
-. \}
+. if !\\n[#ENDNOTE] .po \\n[#L_MARGIN]u
+. if \\n[#ENDNOTE] .in \\n[#EN_TEXT_INDENT]u
. if \\n[#COLUMNS] \{\
. if !\\n[#ENDNOTE] \{\
. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u
-. nr #L_MARGIN \\n(.o
-. \}
-. if \\n[#ENDNOTE] \{\
-. in \\n[#EN_TEXT_INDENT]u
+. nr #L_MARGIN \\n[.o]
. \}
+. if \\n[#ENDNOTE] .in \\n[#EN_TEXT_INDENT]u
. \}
-. ie !\\n[#ENDNOTE] \{\
-. QUAD \\*[$DOC_QUAD]
-. \}
-. el \{\
-. QUAD \\*[EN_QUAD]
-. \}
-. if r#DELAY_SHIM \{\
+. ie !\\n[#ENDNOTE] .QUAD \\*[$DOC_QUAD]
+. el .QUAD \\*[EN_QUAD]
+. if r #DELAY_SHIM \{\
. SHIM
. rr #DELAY_SHIM
. \}
+. if \\n[#PRINT_STYLE]=1 \{\
+. if \\n[#UNDERLINE_QUOTES] .FT R
+. \}
+. nr #QUOTE_4_HD 1
.END
\#
-\#
\# Utility macros for DO_QUOTE
\# ---------------------------
\#
.MAC Q_FITS END
. nr #Q_FITS 1
-. ie \\n[#HEAD]=1 \{\
-. ALD \\n[#Q_LEAD_DIFF]u
-. \}
+. ie \\n[#HEAD]=1 .ALD \\n[#Q_LEAD_DIFF]u
. el \{\
-. ie \\n[#START] \{ . \}
+. ie \\n[#START] .
. el \{\
. ie \\n[#FULLSPACE_QUOTES] \{\
-. ie \\n[#ENDNOTE] \{ .ALD \\n[#EN_LEAD]u+\\n[#Q_LEAD_DIFF]u \}
-. el \{ .ALD \\n[#DOC_LEAD]u+\\n[#Q_LEAD_DIFF]u \}
+. ie \\n[#ENDNOTE] .ALD \\n[#EN_LEAD]u+\\n[#Q_LEAD_DIFF]u
+. el .ALD \\n[#DOC_LEAD]u+\\n[#Q_LEAD_DIFF]u
. \}
. el \{\
-.\" This seems to be the only way to get the baseline of quotes that start
-.\" at the top of the page to fall on the first line of the "grid" (i.e on
-.\" the first valid baseline of the page).
+.\" This seems to be the only way to get the baseline of quotes that
+.\" start at the top of the page to fall on the first line of the
+.\" grid (ie. on the first valid baseline of the page).
. ie \\n[#Q_TOP]=\\n[#PAGE_TOP] \{\
. if \\n[#QUOTE]=1 \{\
. rn P_QUOTE Q_TEMP
. di P_QUOTE
+. nf
. vs \\n[#Q_LEAD]u
. PRINT \&
. sp -1v+\\n[#Q_LEAD_DIFF]u
@@ -12089,6 +11569,7 @@ y\\R'#DESCENDER \\n[.cdp]'
. if \\n[#QUOTE]=2 \{\
. rn B_QUOTE Q_TEMP
. di B_QUOTE
+. nf
. vs \\n[#BQ_LEAD]u
. PRINT \&
. sp -1v+\\n[#Q_LEAD_DIFF]u
@@ -12098,131 +11579,50 @@ y\\R'#DESCENDER \\n[.cdp]'
. rm Q_TEMP
. \}
. el \{\
-. ALD (\\n[#DOC_LEAD]u/2u)+\\n[#Q_LEAD_DIFF]u
+. ALD (\\n[#DOC_LEAD]u/2u)+\\n[#Q_SPACE_ADJ]u
. \}
. \}
. \}
-. if \\n[#DIVER_FN]=2 \{ .rr #DIVER_FN \}
+. if \\n[#DIVER_FN]=2 .rr #DIVER_FN
. \}
.END
\#
.MAC Q_NOFIT END
. rr #Q_FITS
. ie r#HEAD \{\
-. if \\n[#HEAD]=1 \{ . \}
+. if \\n[#HEAD]=1 .
. \}
. el \{\
+. if \\n[#Q_DEPTH]=0 \{\
+. if \\n[.ns] .rs
+. \}
. ie \\n[#FULLSPACE_QUOTES] \{\
-. ie \\n[#ENDNOTE] \{ .ALD \\n[#EN_LEAD]u+\\n[#Q_LEAD_DIFF]u \}
-. el \{ .ALD \\n[#DOC_LEAD]u+\\n[#Q_LEAD_DIFF]u \}
+. ie \\n[#ENDNOTE] .ALD \\n[#EN_LEAD]u+\\n[#Q_LEAD_DIFF]u
+. el .ALD \\n[#DOC_LEAD]u+\\n[#Q_LEAD_DIFF]u
+. \}
+. el \{\
+. ALD \\n[#DOC_LEAD]u+\\n[#Q_LEAD_DIFF]
+. if \\n[@TOP] .rs
. \}
-. el \{ .ALD (\\n[#DOC_LEAD]u/2u)+\\n[#Q_LEAD_DIFF]u \}
. nr #Q_PARTIAL_DEPTH 0 \\n[#Q_LEAD_REAL]
. while \\n+[#Q_PARTIAL_DEPTH]<(\\n[#TRAP_DISTANCE]-1) \{\
.
-.\}
+. \}
. nr #Q_PARTIAL_DEPTH -\\n[#Q_LEAD_REAL]
-. nr #Q_SPACE_ADJ (\\n[#TRAP_DISTANCE]-1)-\\n[#Q_PARTIAL_DEPTH]+\\n[#Q_LEAD_DIFF]u
+. nr #Q_SPACE_ADJ \
+(\\n[#TRAP_DISTANCE]-1)-\\n[#Q_PARTIAL_DEPTH]+\\n[#Q_LEAD_DIFF]u
+. if \\n[#FN_COUNT]>0 .nr #Q_SPACE_ADJ (\\n[#Q_SPACE_ADJ] / 2u)
.\" Hack to deal with the fact that even though the above routine
.\" makes the bottom line of the quote fall exactly on the bottom
.\" margin when traps are disabled, it refuses to do so when traps
.\" are on. The difference by which it's off is #Q_LEAD_DIFF
.\" (the +\\n[#Q_LEAD_DIFF] at the end of the line, above). Hack
.\" solution: temporarily lower the FOOTER trap position.
-. nr #SAVED_FOOTER_POS \\n[#VARIABLE_FOOTER_POS]
-. ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+.25v
-. \}
-.END
-\#
-\# ====================================================================
-\#
-\# BREAK QUOTE
-\# -----------
-\# *Arguments:
-\# <none>
-\# *Function:
-\# Ends the diversion P_QUOTE or B_QUOTE, breaks to a new
-\# page, and reinvokes BLOCKQUOTE.
-\# *Notes:
-\# Because quotes go into a diversion before they're output,
-\# footnotes in quotes that cross pages behave erratically. The footnote
-\# isn't processed until the diversion ends, hence the footnote
-\# marker in the quote isn't always correct for the new page (it's
-\# picked up from the old one). BREAK_QUOTE is a workaround for
-\# this problem.
-\#
-.MAC BREAK_QUOTE END
-. br
-. di
-. nr #BROKEN_QUOTE 1
-. REMOVE_INDENT
-. ev
-. nr #Q_DEPTH \\n[#DIVER_DEPTH]+\\n[#LEAD]
-. if \\n[#PRINT_STYLE]=1 \{\
-. if !\\n[#LINEBREAK] \{ .ALD \\n[#DOC_LEAD]u \}
-. if \\n[#HEAD] \{\
-. if \\n[#HEAD]=1 \{ .RLD \\n[#DOC_LEAD]u \}
-. \}
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. ie \\n[#PP_SPACE] \{\
-. ie \\n[#HEAD]=1 \{ . \}
-. el \{\
-. if !\\n[#LINEBREAK] \{ .ALD \\n[#DOC_LEAD]u \}
-. \}
-. \}
-. el \{\
-. rr #Q_FITS
-. ie r#HEAD \{\
-. if \\n[#HEAD]=1 \{ . \}
-. \}
-. el \{ .ALD \\n[#DOC_LEAD]u \}
-. \}
-. \}
-. ie r#Q_OFFSET_VALUE \{\
-. nr #Q_OFFSET \\n[#L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
-. \}
-. el \{\
-. nr #Q_OFFSET \\n[#L_MARGIN]+\\*[$Q_OFFSET_VALUE]
-. \}
-. if \\n[#COLUMNS] \{\
-. ie r#Q_OFFSET_VALUE \{\
-. nr #Q_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+(\\n[#PP_INDENT]*\\n[#Q_OFFSET_VALUE])
-. \}
-. el \{\
-. nr #Q_OFFSET \\n[#COL_\\n[#COL_NUM]_L_MARGIN]+\\*[$Q_OFFSET_VALUE]
+. if !\\n[#Q_DEPTH]=0 \{\
+. nr #SAVED_FOOTER_POS \\n[#VARIABLE_FOOTER_POS]
+. ch FOOTER \\n[#VARIABLE_FOOTER_POS]u+.25v
. \}
. \}
-. po \\n[#Q_OFFSET]u
-. if \\n[#QUOTE]=1 \{\
-. nf
-. P_QUOTE
-. \}
-. if \\n[#QUOTE]=2 \{\
-. nf
-. B_QUOTE
-. \}
-. if r#HEAD \{ .rr #HEAD \}
-. if r#EPIGRAPH \{ .rr #EPIGRAPH \}
-. rr #Q_PP
-. rr #LINEBREAK
-. nr #PP_STYLE 1
-. nr #END_QUOTE 1
-. if \\n[#PRINT_STYLE]=1 \{\
-. if \\n[#UNDERLINE_QUOTES] \{\
-. ev 1
-. UNDERLINE OFF
-. ev
-. \}
-. \}
-. po \\n[#L_MARGIN]u
-. if \\n[#COLUMNS] \{\
-. po \\n[#COL_\\n[#COL_NUM]_L_MARGIN]u
-. nr #L_MARGIN \\n(.o
-. \}
-. QUAD \\*[$DOC_QUAD]
-. sp |\\n[#PAGE_LENGTH]u \" To trip footer/header
-. BLOCKQUOTE
.END
\#
\# ====================================================================
@@ -12239,15 +11639,17 @@ y\\R'#DESCENDER \\n[.cdp]'
\# Default is on.
\#
.MAC PAGINATE END
-. ie '\\$1'' \{ .nr #PAGINATE 1 \}
-. el \{ .nr #PAGINATE 0 \}
+. ie '\\$1'' .nr #PAGINATE 1
+. el \{\
+. nr #PAGINATE 0
+. rr #PAGE_NUM_V_POS
+. \}
. if \\n[#HF_OFF]=1 \{\
. rr #PAGINATION_STATE
. rr #HF_OFF
. \}
.END
\#
-\#
\# SUSPEND PAGINATION (before ENDNOTES)
\# ------------------
\# *Argument:
@@ -12273,11 +11675,10 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
.MAC RESTORE_PAGINATION END
. rr #SUSPEND_PAGINATION
-. if \\n[#PAGE_NUM_V_POS]=1 \{ .PAGINATE \}
-. if \\n[#PAGE_NUM_V_POS]=2 \{ .nr #DEFER_PAGINATION 1 \}
+. if \\n[#PAGE_NUM_V_POS]=1 .PAGINATE
+. if \\n[#PAGE_NUM_V_POS]=2 .nr #DEFER_PAGINATION 1
.END
\#
-\#
\# PAGE NUMBER FORMAT
\# ------------------
\# *Arguments:
@@ -12287,29 +11688,28 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
.MAC PAGENUM_STYLE END
. nr #PAGENUM_STYLE_SET 1
-. if '\\$1'DIGIT' \{\
+. if '\\$1'DIGIT' \{\
. ds $PAGENUM_STYLE \\$1
. af #PAGENUMBER 1
. \}
-. if '\\$1'ROMAN' \{\
+. if '\\$1'ROMAN' \{\
. ds $PAGENUM_STYLE \\$1
. af #PAGENUMBER I
. \}
-. if '\\$1'roman' \{\
+. if '\\$1'roman' \{\
. ds $PAGENUM_STYLE \\$1
. af #PAGENUMBER i
. \}
-. if '\\$1'ALPHA' \{\
+. if '\\$1'ALPHA' \{\
. ds $PAGENUM_STYLE \\$1
. af #PAGENUMBER A
. \}
-. if '\\$1'alpha' \{\
+. if '\\$1'alpha' \{\
. ds $PAGENUM_STYLE \\$1
. af #PAGENUMBER a
. \}
.END
\#
-\#
\# HYPHENS AROUND PAGE NUMBERS
\# ---------------------------
\# *Arguments:
@@ -12322,11 +11722,10 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
.MAC PAGENUM_HYPHENS END
. nr #PAGE_NUM_HYPHENS_SET 1
-. ie '\\$1'' \{ .nr #PAGE_NUM_HYPHENS 1 \}
-. el \{ .rr #PAGE_NUM_HYPHENS \}
+. ie '\\$1'' .nr #PAGE_NUM_HYPHENS 1
+. el .rr #PAGE_NUM_HYPHENS
.END
\#
-\#
\# PAGENUMBER POSITION
\# -------------------
\# *Arguments:
@@ -12339,23 +11738,34 @@ y\\R'#DESCENDER \\n[.cdp]'
\#
.MAC PAGENUM_POS END
. nr #PAGE_NUM_POS_SET 1
-. if '\\$1'TOP' \{ .nr #PAGE_NUM_V_POS 1 \}
-. if '\\$1'BOTTOM' \{ .nr #PAGE_NUM_V_POS 2 \}
-. if '\\$2'LEFT' \{ .nr #PAGE_NUM_H_POS 1 \}
-. if '\\$2'CENTER' \{ .nr #PAGE_NUM_H_POS 2 \}
-. if '\\$2'CENTRE' \{ .nr #PAGE_NUM_H_POS 2 \}
-. if '\\$2'RIGHT' \{ .nr #PAGE_NUM_H_POS 3 \}
+. if '\\$1'TOP' .nr #PAGE_NUM_V_POS 1
+. if '\\$1'BOTTOM' .nr #PAGE_NUM_V_POS 2
+. if '\\$2'LEFT' .nr #PAGE_NUM_H_POS 1
+. if '\\$2'CENTER' .nr #PAGE_NUM_H_POS 2
+. if '\\$2'CENTRE' .nr #PAGE_NUM_H_POS 2
+. if '\\$2'RIGHT' .nr #PAGE_NUM_H_POS 3
.END
\#
-\#
.MAC PN_WITH_HYPHENS END
. nr #HYPHEN_ADJ \\n[#CAP_HEIGHT]/12
. ds $HYPHEN \v'-\En[#HYPHEN_ADJ]u'-\v'\En[#HYPHEN_ADJ]u'
-. PRINT \m[\\*[$PAGENUM_COLOR]]\\*[$HYPHEN]\|\\n[#PAGENUMBER]\|\\*[$HYPHEN]
+. ds $PN_FOR_KN \\n[#PAGENUMBER]
+.\" Check for initial or terminal 1's or 7's, and apply a little kerning
+. substring $PN_FOR_KN 0 0 \" 1st digit
+. if '\\*[$PN_FOR_KN]'1' .ds $PRE_HY_KN \*[BU3]
+. if '\\*[$PN_FOR_KN]'7' .ds $PRE_HY_KN \*[BU3]
+. ds $PN_FOR_KN \\n[#PAGENUMBER]
+. substring $PN_FOR_KN -1 -1 \" last digit
+. if '\\*[$PN_FOR_KN]'1' .ds $POST_HY_KN \*[BU3]
+. if '\\*[$PN_FOR_KN]'7' .ds $POST_HY_KN \*[BU3]
+. PRINT \
+\m[\\*[$PAGENUM_COLOR]]\
+\\*[$HYPHEN]\|\\*[$PRE_HY_KN]\\n[#PAGENUMBER]\\*[$POST_HY_KN]\|\\*[$HYPHEN]
. br
+. rm $PRE_HY_KERN
+. rm $POST_HY_KERN
.END
\#
-\#
\# PRINT PAGE NUMBER
\# -----------------
\# *Arguments:
@@ -12366,38 +11776,35 @@ y\\R'#DESCENDER \\n[.cdp]'
.MAC PRINT_PAGE_NUMBER END
. ev PAGENUMBER
. nf
-. na
. po \\n[#DOC_L_MARGIN]u
. ll \\n[#DOC_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. FAMILY \\*[$PAGE_NUM_FAM]
. FT \\*[$PAGE_NUM_FT]
. PT_SIZE \\n[#DOC_PT_SIZE]u\\*[$PAGE_NUM_SIZE_CHANGE]
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. \}
-. if \\n[#PAGE_NUM_V_POS]=1 \{ .vs 0 \}
+. if \\n[#PRINT_STYLE]=1 .TYPEWRITER
+. if \\n[#PAGE_NUM_V_POS]=1 .vs 0
. if o \{\
-. ie \\n[#PAGE_NUM_H_POS]=1 \{ .LEFT \}
-. el \{ .RIGHT \}
+. ie \\n[#PAGE_NUM_H_POS]=1 .LEFT
+. el .RIGHT
. \}
. if e \{\
-. ie \\n[#PAGE_NUM_H_POS]=1 \{ .RIGHT \}
-. el \{ .LEFT \}
+. ie \\n[#PAGE_NUM_H_POS]=1 .RIGHT
+. el .LEFT
. \}
-. if \\n[#PAGE_NUM_H_POS]=2 \{ .CENTER \}
+. if \\n[#PAGE_NUM_H_POS]=2 .CENTER
. if \\n[#RECTO_VERSO]=0 \{\
-. if \\n[#PAGE_NUM_H_POS]=1 \{ .LEFT \}
-. if \\n[#PAGE_NUM_H_POS]=2 \{ .CENTER \}
-. if \\n[#PAGE_NUM_H_POS]=3 \{ .RIGHT \}
+. if \\n[#PAGE_NUM_H_POS]=1 .LEFT
+. if \\n[#PAGE_NUM_H_POS]=2 .CENTER
+. if \\n[#PAGE_NUM_H_POS]=3 .RIGHT
. \}
. nr #PAGENUMBER \\n%+\\n[#PAGE_NUM_ADJ]
. if \\n[#EN_FIRST_PAGE] \{\
-. if \\n[#EN_FIRST_PN] \{ .PAGENUMBER \\n[#EN_FIRST_PN] \}
+. if \\n[#EN_FIRST_PN] .PAGENUMBER \\n[#EN_FIRST_PN]
. rr #EN_FIRST_PAGE
. \}
. if \\n[#BIB_FIRST_PAGE] \{\
-. if \\n[#BIB_FIRST_PN] \{ .PAGENUMBER \\n[#BIB_FIRST_PN] \}
+. if \\n[#BIB_FIRST_PN] .PAGENUMBER \\n[#BIB_FIRST_PN]
. rr #BIB_FIRST_PAGE
. \}
. if \\n[#TOC_FIRST_PAGE] \{\
@@ -12405,16 +11812,15 @@ y\\R'#DESCENDER \\n[.cdp]'
. rr #TOC_FIRST_PAGE
. \}
. ie \\n[#DRAFT_WITH_PAGENUM] \{\
-. ie '\\*[$REVISION]'' \{\
+. ie '\\*[$REVISION]'' \
. PRINT "\\*[$DRAFT_STRING]\\*[$DRAFT] / \\n[#PAGENUMBER]"
-. \}
. el \{\
-. ie '\\*[$DRAFT]'' \{\
+. ie '\\*[$DRAFT]'' \
. PRINT "\\*[$REVISION_STRING] \\*[$REVISION] / \\n[#PAGENUMBER]"
-. \}
-. el \{\
-. PRINT "\\*[$DRAFT_STRING]\\*[$DRAFT], \\*[$REVISION_STRING] \\*[$REVISION] / \\n[#PAGENUMBER]"
-. \}
+. el \
+. PRINT \
+"\\*[$DRAFT_STRING]\\*[$DRAFT], \\*[$REVISION_STRING] \\*[$REVISION] / \
+\\n[#PAGENUMBER]"
. \}
. \}
. el \{\
@@ -12437,14 +11843,12 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. di
. PN_WITH_HYPHENS
. \}
-. if '\\*[$PAGENUM_STYLE]'roman' \{\
+. if '\\*[$PAGENUM_STYLE]'roman' \
+. PRINT \m[\\*[$PAGENUM_COLOR]]-\|\\n[#PAGENUMBER]\|-
+. if '\\*[$PAGENUM_STYLE]'alpha' \
. PRINT \m[\\*[$PAGENUM_COLOR]]-\|\\n[#PAGENUMBER]\|-
-. \}
-. if '\\*[$PAGENUM_STYLE]'alpha' \{\
-. PRINT "\m[\\*[$PAGENUM_COLOR]]-\|\\n[#PAGENUMBER]\|-"
-. \}
. \}
-. el \{ .PRINT "\m[\\*[$PAGENUM_COLOR]]\\n[#PAGENUMBER]" \}
+. el .PRINT \m[\\*[$PAGENUM_COLOR]]\\n[#PAGENUMBER]
. \}
. ev
. nr #DIVER_DEPTH 0
@@ -12457,8 +11861,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# Mom's footnote handling is baroque, to say the least. There are
\# redundancies in a number of the macros involved, as well as some
\# registers that probably don't get used anymore. The baggage is left
-\# in in case some new footnote oddity/challenge gets thrown my way.
-\#
+\# in in case some new footnote oddity/challenge gets thrown at her.
+\#
\# The macros are heavily commented.
\#
\# FOOTNOTE AUTOLEAD
@@ -12474,7 +11878,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #FN_AUTOLEAD \\$1
.END
\#
-\#
\# FOOTNOTE MARKERS
\# ----------------
\# *Arguments:
@@ -12485,11 +11888,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# Default is on.
\#
.MAC FOOTNOTE_MARKERS END
-. ie '\\$1'' \{ .nr #FN_MARKERS 1 \}
-. el \{ .nr #FN_MARKERS 0 \}
+. ie '\\$1'' .nr #FN_MARKERS 1
+. el .nr #FN_MARKERS 0
.END
\#
-\#
\# FOOTNOTE MARKER STYLE
\# ---------------------
\# *Arguments:
@@ -12508,17 +11910,17 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. tm1 "[mom]: Your current FOOTNOTE_MARKER STYLE is LINE.
. tm1 " You cannot change footnote marker style without
. tm1 " first breaking to a new page with NEWPAGE.
-. tm1 " Ignoring request FOOTNOTE_MARKER_STYLE STAR at line \\n(.c.
+. tm1 " Ignoring request FOOTNOTE_MARKER_STYLE STAR at line \\n[.c].
. return
. \}
. \}
. if \\n[#RUN_ON]=1 \{\
-. tm1 "[mom]: FOOTNOTE_MARKER_STYLE STAR at line \\n(.c is incompatible
+. tm1 "[mom]: FOOTNOTE_MARKER_STYLE STAR at line \\n[.c] is incompatible
. tm1 " with RUN_ON footnotes. Ignoring request.
. return
. \}
. nr #FN_MARKER_STYLE 1
-. if \\n[#NEWPAGE]=1 \{ .rr #NEWPAGE \}
+. if \\n[#NEWPAGE]=1 .rr #NEWPAGE
. FOOTNOTE_MARKERS
. \}
. if '\\$1'NUMBER' \{\
@@ -12527,31 +11929,30 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. tm1 "[mom]: Your current FOOTNOTE_MARKER STYLE is NUMBER.
. tm1 " You cannot change footnote marker style without
. tm1 " first breaking to a new page with NEWPAGE.
-. tm1 " Ignoring request FOOTNOTE_MARKER_STYLE NUMBER at line \\n(.c.
+. tm1 " Ignoring request FOOTNOTE_MARKER_STYLE NUMBER at line \\n[.c].
. return
. \}
. \}
. if \\n[#RUN_ON]=1 \{\
-. tm1 "[mom]: FOOTNOTE_MARKER_STYLE NUMBER at line \\n(.c is incompatible
+. tm1 "[mom]: FOOTNOTE_MARKER_STYLE NUMBER at line \\n[.c] is incompatible
. tm1 " with RUN_ON footnotes. Ignoring request.
. return
. \}
. nr #FN_MARKER_STYLE 2
. shift
-. if '\\$1'NO_SUPERSCRIPT' \{ .nr #NO_SUPERSCRIPT 1 \}
-. if \\n[#NEWPAGE]=1 \{ .rr #NEWPAGE \}
+. if '\\$1'NO_SUPERSCRIPT' .nr #NO_SUPERSCRIPT 1
+. if \\n[#NEWPAGE]=1 .rr #NEWPAGE
. FOOTNOTE_MARKERS
. \}
. if '\\$1'LINE' \{\
. nr #FN_MARKER_STYLE 3
. FOOTNOTE_MARKERS OFF
. if !\\n[#FN_LN_SEP] \{\
-. if !\\n[#FN_LN_BRACKETS] \{ .FOOTNOTE_LINENUMBER_BRACKETS SQUARE \}
+. if !\\n[#FN_LN_BRACKETS] .FOOTNOTE_LINENUMBER_BRACKETS SQUARE
. \}
. \}
.END
\#
-\#
\# FOOTNOTE NUMBER PLACEHOLDERS
\# ----------------------------
\# *Argument:
@@ -12566,16 +11967,14 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.MAC FOOTNOTE_NUMBER_PLACEHOLDERS END
. nr #FN_NUMBER_PLACEHOLDERS \\$1
.END
-\#
-\#
+\#
\# FOOTNOTE LINENUMBER MARK
\# ------------------------
\# *Function:
\# This string, when called inline, stores the current output line
\# number in register #FN_MARK for use with FOOTNOTE.
\#
-.ds FN_MARK \R'#FN_MARK \En(ln'
-\#
+.ds FN_MARK \R'#FN_MARK \En[ln]'
\#
\# FOOTNOTE LINENUMBER SEPARATOR
\# -----------------------------
@@ -12594,7 +11993,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ds $FN_LN_SEP "\\$1
.END
\#
-\#
\# FOOTNOTE LINENUMBER BRACKETS
\# ----------------------------
\# *Argument:
@@ -12633,7 +12031,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
.END
\#
-\#
\# RESET FOOTNOTE NUMBER
\# ---------------------
\# *Arguments:
@@ -12644,11 +12041,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# numbered footnotes on every page start at 1.
\#
.MAC RESET_FOOTNOTE_NUMBER END
-. ie '\\$1'' \{ .nr #FN_NUMBER 0 1 \}
-. el \{ .nr #RESET_FN_NUMBER 1 \}
+. ie '\\$1'' .nr #FN_NUMBER 0 1
+. el .nr #RESET_FN_NUMBER 1
.END
\#
-\#
\# FOOTNOTE RULE LENGTH
\# --------------------
\# *Arguments:
@@ -12663,7 +12059,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #FN_RULE_LENGTH (\\$1)
.END
\#
-\#
\# FOOTNOTE_RULE_ADJ
\# -----------------
\# *Arguments:
@@ -12679,7 +12074,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #FN_RULE_ADJ (\\$1)
.END
\#
-\#
\# FOOTNOTE RULE
\# -------------
\# *Arguments:
@@ -12695,7 +12089,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\#
.MAC FOOTNOTE_RULE END
. ie '\\$0'PRINT_FOOTNOTE_RULE' \{\
-. if \\n[#FN_RULE]=0 \{ .RLD 1v \}
+. if \\n[#FN_RULE]=0 .RLD 1v
. RLD 1v
. LEFT
\v'-\\n[#FN_RULE_ADJ]u-\\n[#FN_RULE_WEIGHT_ADJ]u'\
@@ -12707,12 +12101,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. QUAD \\*[$FN_QUAD]
. \}
. el \{\
-. ie '\\$1'' \{ .nr #FN_RULE 1 \}
-. el \{ .nr #FN_RULE 0 \}
+. ie '\\$1'' .nr #FN_RULE 1
+. el .nr #FN_RULE 0
. \}
.END
\#
-\#
\# FOOTNOTE SPACING
\# ----------------
\# *Arguments:
@@ -12724,10 +12117,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\#
.MAC FOOTNOTE_SPACING END
. ie \B'\\$1' .ds $FN_SPACE \\$1
-. el \{ .rm $FN_SPACE \}
+. el .rm $FN_SPACE
.END
\#
-\#
\# RUN ON FOOTNOTES
\# ----------------
\# *Arguments:
@@ -12738,20 +12130,20 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.MAC FOOTNOTES_RUN_ON END
. ie '\\$1'' \{\
. if \\n[#FN_COUNT]>0 \{\
-. tm1 "[mom]: Switching to run-on footnotes at line \\n(.c will cause
+. tm1 "[mom]: Switching to run-on footnotes at line \\n[.c] will cause
. tm1 " you to loose footnotes already formatted for this page.
. tm1 " Ignoring request FOOTNOTES_RUN_ON.
. rr #RUN_ON
. return
. \}
. nr #RUN_ON 1
-. if \\n[#FN_MARKER_STYLE]=1 \{ .RUNON_WARNING \}
-. if \\n[#FN_MARKER_STYLE]=2 \{ .RUNON_WARNING \}
+. if \\n[#FN_MARKER_STYLE]=1 .RUNON_WARNING
+. if \\n[#FN_MARKER_STYLE]=2 .RUNON_WARNING
. \}
. el \{\
. if \\n[#FN_COUNT]>0 \{\
. if \\n[#RUN_ON]=1 \{\
-. tm1 "[mom]: Switching off run-on footnotes at line \\n(.c will cause
+. tm1 "[mom]: Switching off run-on footnotes at line \\n[.c] will cause
. tm1 " you to loose footnotes already formatted for this page.
. tm1 " Ignoring request FOOTNOTES_RUN_ON \\$1.
. return
@@ -12761,17 +12153,16 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
.END
\#
-\#
.MAC RUNON_WARNING END
. if \\n[#FN_MARKER_STYLE]=1 \{\
-. tm1 "[mom]: The footnote marker style active at line \\n(.c is STAR,
+. tm1 "[mom]: The footnote marker style active at line \\n[.c] is STAR,
. tm1 " which is incompatible with run-on footnotes. Please change
. tm1 " the footnote marker style to LINE. Continuing to process,
. tm1 " but ignoring request FOOTNOTES_RUN_ON.
. rr #RUN_ON
. \}
. if \\n[#FN_MARKER_STYLE]=2 \{\
-. tm1 "[mom]: The footnote marker style active at line \\n(.c is NUMBER,
+. tm1 "[mom]: The footnote marker style active at line \\n[.c] is NUMBER,
. tm1 " which is incompatible with run-on footnotes. Please change
. tm1 " the footnote marker style to LINE. Continuing to process,
. tm1 " but ignoring request FOOTNOTES_RUN_ON.
@@ -12807,31 +12198,31 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if !\\n[#LINENUMBERS] \{\
. tm1 "[mom]: Line numbering must be enabled with NUMBER_LINES when
. tm1 " FOOTNOTE_MARKER_STYLE is LINE.
-. ab Aborting on FOOTNOTE at line \\n(.c.
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
-. if \\n[#FN_MARK]=0 \{ .nr #FN_MARK \\n(ln \}
-. nr #FN_MARK_2 \\n(ln
-. if '\\n(.z'P_QUOTE' \{\
+. if \\n[#FN_MARK]=0 .nr #FN_MARK \\n[ln]
+. nr #FN_MARK_2 \\n[ln]
+. if '\\n[.z]'P_QUOTE' \{\
. nr #FN_MARK -1
. nr #FN_MARK_2 -1
. \}
. if \\n[#IN_DIVER]=1 \{\
-. if '\\n(.z'P_QUOTE' \{\
+. if '\\n[.z]'P_QUOTE' \{\
. if !\\n[#QUOTE_LN]=1 \{\
. if !\\n[#SILENT_QUOTE_LN]=1 \{\
. tm1 "[mom]: You have requested a line-numbered footnote inside a
-. tm1 " QUOTE at line \\n(.c, but line-numbering has not been enabled
+. tm1 " QUOTE at line \\n[.c], but line-numbering has not been enabled
. tm1 " for QUOTES. Printing footnote with label "0".
. rr #FN_MARK
. rr #FN_MARK_2
. \}
. \}
. \}
-. if '\\n(.z'B_QUOTE' \{\
+. if '\\n[.z]'B_QUOTE' \{\
. if !\\n[#BQUOTE_LN]=1 \{\
. if !\\n[#SILENT_BQUOTE_LN]=1 \{\
. tm1 "[mom]: You have requested a line-numbered footnote inside a
-. tm1 " BLOCKQUOTE at line \\n(.c, but line-numbering has not been enabled
+. tm1 " BLOCKQUOTE at line \\n[.c], but line-numbering has not been enabled
. tm1 " for BLOCKQUOTES. Printing footnote with label "0".
. rr #FN_MARK
. rr #FN_MARK_2
@@ -12843,34 +12234,31 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.\" Begin processing footnotes that occur inside QUOTE, BLOCKQUOTE
.\" or EPIGRAPH.
. if \\n[#IN_DIVER]=1 \{\
-. nr #PAGE_POS \\n(nl+\\n(.d+\\n[#DOC_LEAD]
+. nr #PAGE_POS \\n[nl]+\\n[.d]+\\n[#DOC_LEAD]
. nr #FOOTER_POS \\n[#PAGE_LENGTH]+(\\n[#VARIABLE_FOOTER_POS]-1)
. nr #SPACE_TO_FOOTER \\n[#FOOTER_POS]-\\n[#PAGE_POS]
.\" Are we on a "defer" line? If so, defer the text of the footnote.
-. ie \\n[#SPACE_TO_FOOTER]=\\n[#DOC_LEAD]:\\n[#SPACE_TO_FOOTER]=0 \{\
+. ie \\n[#SPACE_TO_FOOTER]=\\n[#DOC_LEAD]:\\n[#SPACE_TO_FOOTER]=0 \
. nr #DIVER_FN 2 \" treat like a normal deferred footnote
-. \}
-. el \{\
+. el \
. nr #DIVER_FN 2 \" treat like a normal footnote
-. \}
-. if \\n[#PAGE_POS]>\\n[#FOOTER_POS] \{\
+. if \\n[#PAGE_POS]>\\n[#FOOTER_POS] \
. nr #DIVER_FN 1 \" move this footnote
-. \}
.\" Test for situation where, because a final line of QUOTE, BLOCKQUOTE
.\" or EPIGRAPH isn't yet adjusted at this point, the last word on the
.\" line may *seem* to belong to the final line of the page, but will,
.\" in fact, become the first word of the subsequent page. In such
.\" circumstances, we want the the footnote to be treated as a "moved"
.\" diversion footnote.
-. if \\n(.k>\\n(.l \{ .nr #DIVER_FN 1 \}
-. if r#DIVER_FN \{\
-. if !\\n[#DIVER_FN]=2 \{ .\\n+[#DONE_ONCE] \}
+. if \\n[.k]>\\n[.l] .nr #DIVER_FN 1
+. if r #DIVER_FN \{\
+. if !\\n[#DIVER_FN]=2 .\\n+[#DONE_ONCE]
.\" A footnote inside a diversion will become the 1st footnote on the
.\" following page/column.
-. if \\n[#DIVER_FN]=1 \{ .DIVER_FN_1_PRE \}
+. if \\n[#DIVER_FN]=1 .DIVER_FN_1_PRE
.\" A footnote inside a diversion that should be treated like a
.\" normal footnote (including defers.)
-. if \\n[#DIVER_FN]=2 \{ .DIVER_FN_2_PRE \}
+. if \\n[#DIVER_FN]=2 .DIVER_FN_2_PRE
. \}
. nr #SAVED_FN_COUNT \\n[#FN_COUNT]+1
. nr #SAVED_FN_COUNT_FOR_COLS \\n[#FN_COUNT_FOR_COLS]+1
@@ -12882,15 +12270,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.\" isn't yet adjusted at this point, the last word on the line may
.\" *seem* to belong to the final line of the page, but will, in
.\" fact, become the first word of the subsequent page. In such
-.\" circumstances, we want the the footnote marker in running text to
+.\" circumstances, we want the footnote marker in running text to
.\" be the correct one for the 1st footnote on the page.
-. if \\n(.k>\\n(.l \{\
-. if (\\n(nl+\\n[#DOC_LEAD])>(\\n[#PAGE_LENGTH]+\\n[#VARIABLE_FOOTER_POS]) \{\
+. if \\n[.k]>\\n[.l] \{\
+. if (\\n[nl]+\\n[#DOC_LEAD])>(\\n[#PAGE_LENGTH]+\\n[#VARIABLE_FOOTER_POS]) \{\
. ie \\n[#COLUMNS]=1 \{\
. if \\n[#COL_NUM]=\\n[#NUM_COLS] \{\
-. if \\n[#FN_MARKER_STYLE]=1 \{\
-. nr #FN_COUNT_FOR_COLS 0 1
-. \}
+. if \\n[#FN_MARKER_STYLE]=1 .nr #FN_COUNT_FOR_COLS 0 1
. if \\n[#FN_MARKER_STYLE]=2 \{\
. if \\n[#RESET_FN_NUMBER] \{\
. nr #FN_NUMBER 0 1
@@ -12900,9 +12286,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. \}
. el \{\
-. if \\n[#FN_MARKER_STYLE]=1 \{\
-. nr #FN_COUNT 0 1
-. \}
+. if \\n[#FN_MARKER_STYLE]=1 .nr #FN_COUNT 0 1
. if \\n[#FN_MARKER_STYLE]=2 \{\
. if \\n[#RESET_FN_NUMBER] \{\
. nr #FN_NUMBER 0 1
@@ -12914,8 +12298,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. if \\n[#FN_MARKERS] \{\
.\" Housekeeping
-. if \\n[#CONDENSE] \{ \*[CONDX]\c \}
-. if \\n[#EXTEND] \{ \*[EXTX]\c \}
+. if \\n[#CONDENSE] \*[CONDX]\c
+. if \\n[#EXTEND] \*[EXTX]\c
.\" Add footnote markers to running text...
. if !\\n[#NO_FN_MARKER] \{\
.\" ...but not if TERMINATE has not been called
@@ -12928,34 +12312,38 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.\" above footnotes (in addition to keeping track of the footnote
.\" count in non-columnar docs).
. ie \\n[#COLUMNS]=1 \{\
-. if \\n[#FN_COUNT_FOR_COLS]=0 \{ .PRINT \*[BU2]*\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=1 \{ .PRINT \*[BU1]\(dg\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=2 \{ .PRINT \(dd\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=3 \{ .PRINT \*[BU2]**\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=4 \{ .PRINT \*[BU1]\(dg\(dg\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=5 \{ .PRINT \(dd\(dd\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=6 \{ .PRINT \*[BU2]***\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=7 \{ .PRINT \*[BU1]\(dg\(dg\(dg\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=8 \{ .PRINT \(dd\(dd\(dd\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=9 \{ .PRINT \*[BU2]****\c \}
+. if \\n[#FN_COUNT_FOR_COLS]=0 .PRINT \*[BU2]*\c
+. if \\n[#FN_COUNT_FOR_COLS]=1 .PRINT \*[BU1]\[dg]\c
+. if \\n[#FN_COUNT_FOR_COLS]=2 .PRINT \[dd]\c
+. if \\n[#FN_COUNT_FOR_COLS]=3 .PRINT \*[BU2]**\c
+. if \\n[#FN_COUNT_FOR_COLS]=4 .PRINT \*[BU1]\[dg]\[dg]\c
+. if \\n[#FN_COUNT_FOR_COLS]=5 .PRINT \[dd]\[dd]\c
+. if \\n[#FN_COUNT_FOR_COLS]=6 .PRINT \*[BU2]***\c
+. if \\n[#FN_COUNT_FOR_COLS]=7 .PRINT \*[BU1]\[dg]\[dg]\[dg]\c
+. if \\n[#FN_COUNT_FOR_COLS]=8 .PRINT \[dd]\[dd]\[dd]\c
+. if \\n[#FN_COUNT_FOR_COLS]=9 .PRINT \*[BU2]****\c
. \}
. el \{\
-. if \\n[#FN_COUNT]=0 \{ .PRINT \*[BU2]*\c \}
-. if \\n[#FN_COUNT]=1 \{ .PRINT \*[BU1]\(dg\c \}
-. if \\n[#FN_COUNT]=2 \{ .PRINT \(dd\c \}
-. if \\n[#FN_COUNT]=3 \{ .PRINT \*[BU2]**\c \}
-. if \\n[#FN_COUNT]=4 \{ .PRINT \*[BU1]\(dg\(dg\c \}
-. if \\n[#FN_COUNT]=5 \{ .PRINT \(dd\(dd\c \}
-. if \\n[#FN_COUNT]=6 \{ .PRINT \*[BU2]***\c \}
-. if \\n[#FN_COUNT]=7 \{ .PRINT \*[BU1]\(dg\(dg\(dg\c \}
-. if \\n[#FN_COUNT]=8 \{ .PRINT \(dd\(dd\(dd\c \}
-. if \\n[#FN_COUNT]=9 \{ .PRINT \*[BU2]****\c \}
+. if \\n[#FN_COUNT]=0 .PRINT \*[BU2]*\c
+. if \\n[#FN_COUNT]=1 .PRINT \*[BU1]\[dg]\c
+. if \\n[#FN_COUNT]=2 .PRINT \[dd]\c
+. if \\n[#FN_COUNT]=3 .PRINT \*[BU2]**\c
+. if \\n[#FN_COUNT]=4 .PRINT \*[BU1]\[dg]\[dg]\c
+. if \\n[#FN_COUNT]=5 .PRINT \[dd]\[dd]\c
+. if \\n[#FN_COUNT]=6 .PRINT \*[BU2]***\c
+. if \\n[#FN_COUNT]=7 .PRINT \*[BU1]\[dg]\[dg]\[dg]\c
+. if \\n[#FN_COUNT]=8 .PRINT \[dd]\[dd]\[dd]\c
+. if \\n[#FN_COUNT]=9 .PRINT \*[BU2]****\c
. \}
. \}
.\" Marker style superscript numbers
. if \\n[#FN_MARKER_STYLE]=2 \{\
-. if \\n[#PRINT_STYLE]=1 \{ .PRINT "\s-2\v'-\\n[#DOC_LEAD]u/5u'\\n+[#FN_NUMBER]\v'+\\n[#DOC_LEAD]u/5u'\s+2\c" \}
-. if \\n[#PRINT_STYLE]=2 \{ .PRINT "\*[SUP]\\n+[#FN_NUMBER]\*[SUPX]\c" \}
+. if \\n[#PRINT_STYLE]=1 \
+. PRINT \
+"\s-2\v'-\\n[#DOC_LEAD]u/5u'\\n+[#FN_NUMBER]\v'+\\n[#DOC_LEAD]u/5u'\s+2\c"
+. if \\n[#PRINT_STYLE]=2 \
+. PRINT \
+"\*[SUP]\\n+[#FN_NUMBER]\*[SUPX]\c"
. \}
. \}
. \}
@@ -12966,35 +12354,33 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.\" on the page and the bottom margin. It's used to determine whether
.\" or not the footnote will overflow, and how many lines of
.\" footnotes will fit on the page if some have to overflow.
-. ie \\n[#DIVER_FN]=2 \{\
+. ie \\n[#DIVER_FN]=2 \
. nr #SPACE_REMAINING (\\n[#PAGE_LENGTH]-\\n[#B_MARGIN])-(\\n[#PAGE_POS])
-. \}
-. el \{\
-. nr #SPACE_REMAINING (\\n[#PAGE_LENGTH]-\\n[#B_MARGIN])-\\n(nl
-. \}
+. el \
+. nr #SPACE_REMAINING (\\n[#PAGE_LENGTH]-\\n[#B_MARGIN])-\\n[nl]
. if \\n[#FROM_DIVERT_FN]=1 \{\
. nr #SPACE_REMAINING \\n[#PAGE_LENGTH]-\\n[#B_MARGIN]
. rr #FROM_DIVERT_FN
. \}
. nr #PP_STYLE_PREV \\n[#PP_STYLE]
. nr #PP_STYLE 2
-. if \\n[#INDENT_FIRST_PARAS] \{ .nr #INDENT_FIRSTS 1 \}
+. if \\n[#INDENT_FIRST_PARAS] .nr #INDENT_FIRSTS 1
. INDENT_FIRST_PARAS
.\" Prepare FOOTNOTE to receive footnote text.
. ev FOOTNOTES
. ll \\n[#DOC_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. if \\n[#COLUMNS]=1 \{\
. ll \\n[#COL_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
-. if \\n[#FN_R_INDENT] \{\
+. if \\n[#FN_R_INDENT] \{\
. ll -\\n[#FN_R_INDENT]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. if \\n[#FN_BR_INDENT] \{\
. ll -\\n[#FN_BR_INDENT]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. FAMILY \\*[$FN_FAM]
. FT \\*[$FN_FT]
@@ -13003,8 +12389,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. QUAD \\*[$FN_QUAD]
. if \\n[#PRINT_STYLE]=1 \{\
. TYPEWRITER
-. ie \\n[#SINGLE_SPACE] \{ .vs \\n[#ORIGINAL_DOC_LEAD]u \}
-. el \{ .vs \\n[#ORIGINAL_DOC_LEAD]u/2u \}
+. ie \\n[#SINGLE_SPACE] .vs \\n[#ORIGINAL_DOC_LEAD]u
+. el .vs \\n[#ORIGINAL_DOC_LEAD]u/2u
. QUAD LEFT
. HY OFF
. \}
@@ -13016,14 +12402,14 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. di RUNON_FN_IN_DIVER
. nr #RUNON_FN_IN_DIVER 1
. \}
-. el \{ .di FN_IN_DIVER \}
+. el .di FN_IN_DIVER
. \}
. el \{\
. ie \\n[#RUN_ON] \{\
. da RUNON_FN_IN_DIVER
. nr #RUNON_FN_IN_DIVER 1
. \}
-. el \{ .da FN_IN_DIVER \}
+. el .da FN_IN_DIVER
. \}
. \\n+[#DONE_ONCE]
. \}
@@ -13032,7 +12418,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. da RUNON_FOOTNOTES
. nr #RUNON_FOOTNOTES 1
. \}
-. el \{ .da FOOTNOTES \}
+. el .da FOOTNOTES
. \}
. if \\n[#FOOTNOTE_COLOR]=1 \{\
. TRAP OFF
@@ -13042,7 +12428,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. fi
. TRAP
. \}
-. if \\n[#EPIGRAPH] \{ .nr #FN_FOR_EPI 1 \}
+. if \\n[#EPIGRAPH] .nr #FN_FOR_EPI 1
.\" When a deferred footnote is also the 1st footnote on the page,
.\" and when the page it's output on also has footnotes, some
.\" whitespace is needed between the deferred footnote and the
@@ -13057,8 +12443,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.\" ...and not if the footnote count the last time we checked for
.\" a defer situation inside a diversion is greater than 1.
. if !\\n[#SAVED_DIVER_FN_COUNT]>1 \{\
-. if \\n[#FN_MARKER_STYLE]=1 \{ .ALD 1v \}
-. if \\n[#RESET_FN_NUMBER] \{ .ALD 1v \}
+. if \\n[#FN_MARKER_STYLE]=1 .ALD 1v
+. if \\n[#RESET_FN_NUMBER] .ALD 1v
. nr #DEFER_SPACE_ADDED 1
. \}
. \}
@@ -13081,16 +12467,16 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if !\\n[#DONT_RULE_ME]=1 \{\
. if !\\n[#FN_DEPTH] \{\
. if \\n[#PRINT_STYLE]=1 \{\
-. if !\\n[#RUN_ON] \{ .sp \\n[#DOC_LEAD]u \}
+. if !\\n[#RUN_ON] .sp \\n[#DOC_LEAD]u
. \}
. ie \\n[#FN_RULE]=1 \{\
. if !\\n[#RUN_ON] \{\
-. if \\n[#SINGLE_SPACE] \{ .sp \\n[#DOC_LEAD]u \}
+. if \\n[#SINGLE_SPACE] .sp \\n[#DOC_LEAD]u
. PRINT_FOOTNOTE_RULE
-. if !'\\*[$FN_SPACE]'' \{ .sp -\\*[$FN_SPACE] \}
+. if !'\\*[$FN_SPACE]'' .sp -\\*[$FN_SPACE]
. \}
. \}
-. el \{ .sp 1v \}
+. el .sp 1v
. nr #RULED 1
. \}
. \}
@@ -13115,28 +12501,28 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#FN_MARKER_STYLE]=1 \{\
. ie \\n[#COLUMNS]=1 \{\
. \\n+[#FN_COUNT_FOR_COLS]
-. if \\n[#FN_COUNT_FOR_COLS]=1 \{ .PRINT *\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=2 \{ .PRINT \(dg\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=3 \{ .PRINT \(dd\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=4 \{ .PRINT **\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=5 \{ .PRINT \(dg\(dg\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=6 \{ .PRINT \(dd\(dd\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=7 \{ .PRINT ***\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=8 \{ .PRINT \(dg\(dg\(dg\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=9 \{ .PRINT \(dd\(dd\(dd\c \}
-. if \\n[#FN_COUNT_FOR_COLS]=10 \{ .PRINT ****\c \}
+. if \\n[#FN_COUNT_FOR_COLS]=1 .PRINT *\c
+. if \\n[#FN_COUNT_FOR_COLS]=2 .PRINT \[dg]\c
+. if \\n[#FN_COUNT_FOR_COLS]=3 .PRINT \[dd]\c
+. if \\n[#FN_COUNT_FOR_COLS]=4 .PRINT **\c
+. if \\n[#FN_COUNT_FOR_COLS]=5 .PRINT \[dg]\[dg]\c
+. if \\n[#FN_COUNT_FOR_COLS]=6 .PRINT \[dd]\[dd]\c
+. if \\n[#FN_COUNT_FOR_COLS]=7 .PRINT ***\c
+. if \\n[#FN_COUNT_FOR_COLS]=8 .PRINT \[dg]\[dg]\[dg]\c
+. if \\n[#FN_COUNT_FOR_COLS]=9 .PRINT \[dd]\[dd]\[dd]\c
+. if \\n[#FN_COUNT_FOR_COLS]=10 .PRINT ****\c
. \}
. el \{\
-. if \\n[#FN_COUNT]=1 \{ .PRINT *\c \}
-. if \\n[#FN_COUNT]=2 \{ .PRINT \(dg\c \}
-. if \\n[#FN_COUNT]=3 \{ .PRINT \(dd\c \}
-. if \\n[#FN_COUNT]=4 \{ .PRINT **\c \}
-. if \\n[#FN_COUNT]=5 \{ .PRINT \(dg\(dg\c \}
-. if \\n[#FN_COUNT]=6 \{ .PRINT \(dd\(dd\c \}
-. if \\n[#FN_COUNT]=7 \{ .PRINT ***\c \}
-. if \\n[#FN_COUNT]=8 \{ .PRINT \(dg\(dg\(dg\c \}
-. if \\n[#FN_COUNT]=9 \{ .PRINT \(dd\(dd\(dd\c \}
-. if \\n[#FN_COUNT]=10 \{ .PRINT ****\c \}
+. if \\n[#FN_COUNT]=1 .PRINT *\c
+. if \\n[#FN_COUNT]=2 .PRINT \[dg]\c
+. if \\n[#FN_COUNT]=3 .PRINT \[dd]\c
+. if \\n[#FN_COUNT]=4 .PRINT **\c
+. if \\n[#FN_COUNT]=5 .PRINT \[dg]\[dg]\c
+. if \\n[#FN_COUNT]=6 .PRINT \[dd]\[dd]\c
+. if \\n[#FN_COUNT]=7 .PRINT ***\c
+. if \\n[#FN_COUNT]=8 .PRINT \[dg]\[dg]\[dg]\c
+. if \\n[#FN_COUNT]=9 .PRINT \[dd]\[dd]\[dd]\c
+. if \\n[#FN_COUNT]=10 .PRINT ****\c
. \}
. \}
. if \\n[#FN_MARKER_STYLE]=2 \{\
@@ -13151,29 +12537,25 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. if \\n[#PRINT_STYLE]=1 \{\
. ie \\n[#NO_SUPERSCRIPT] \{\
-. ie \\n[#FN_NUMBER_LENGTH]<\\n[#FN_NUMBER_PLACEHOLDERS] \{\
+. ie \\n[#FN_NUMBER_LENGTH]<\\n[#FN_NUMBER_PLACEHOLDERS] \
. PRINT "\0(\\n[#FN_NUMBER])\|\c"
-. \}
-. el \{\
+. el \
. PRINT "(\\n[#FN_NUMBER])\|\c"
-. \}
. \}
. el \{\
-. ie \\n[#FN_NUMBER_LENGTH]<\\n[#FN_NUMBER_PLACEHOLDERS] \{\
-. PRINT "\s-2\v'-\\n[.v]u/5u'\0\\n[#FN_NUMBER]\|\v'+\\n[.v]u/5u'\s+2\|\c"
-. \}
-. el \{\
-. PRINT "\s-2\v'-\\n[.v]u/5u'\\n[#FN_NUMBER]\|\v'+\\n[.v]u/5u'\s+2\|\c"
-. \}
+. ie \\n[#FN_NUMBER_LENGTH]<\\n[#FN_NUMBER_PLACEHOLDERS] \
+. PRINT \
+"\s-2\v'-\\n[.v]u/5u'\0\\n[#FN_NUMBER]\|\v'+\\n[.v]u/5u'\s+2\|\c"
+. el \
+. PRINT \
+"\s-2\v'-\\n[.v]u/5u'\\n[#FN_NUMBER]\|\v'+\\n[.v]u/5u'\s+2\|\c"
. \}
. \}
. if \\n[#PRINT_STYLE]=2 \{\
-. ie \\n[#FN_NUMBER_LENGTH]<\\n[#FN_NUMBER_PLACEHOLDERS] \{\
+. ie \\n[#FN_NUMBER_LENGTH]<\\n[#FN_NUMBER_PLACEHOLDERS] \
. PRINT "\*[SUP]\0\\n[#FN_NUMBER]\*[SUPX]\*[FU 3]\c"
-. \}
-. el \{\
+. el \
. PRINT "\*[SUP]\\n[#FN_NUMBER]\*[SUPX]\*[FU 3]\c"
-. \}
. \}
. \}
. \}
@@ -13184,9 +12566,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#FN_MARKER_STYLE]=3 \{\
. if \\n[#FN_SPACE]>0 \{\
. if !\\n[#RUN_ON]=1 \{\
-. if \\n[#FN_COUNT]>0 \{\
-. ALD \\n[#FN_SPACE]u
-. \}
+. if \\n[#FN_COUNT]>0 .ALD \\n[#FN_SPACE]u
. \}
. \}
. if \\n[#REF]=1 \{\
@@ -13196,24 +12576,24 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. ie \\n[#FN_LN_BRACKETS]=1 \{\
. ds $FN_LINENUMBER \v'-.085m'\\*[$FN_OPEN_BRACKET]\v'.085m'
-. ie \\n[#FN_MARK_2]=\\n[#FN_MARK] \{\
-. as $FN_LINENUMBER \\n[#FN_MARK]\v'-.085m'\\*[$FN_CLOSE_BRACKET]\v'.085m'\h'.25m'
-. \}
-. el \{\
-. as $FN_LINENUMBER \\n[#FN_MARK]\v'-.1m'-\v'.1m'\\n[#FN_MARK_2]\v'-.085m'\\*[$FN_CLOSE_BRACKET]\v'.085m'\h'.25m'
-. \}
+. ie \\n[#FN_MARK_2]=\\n[#FN_MARK] \
+. as $FN_LINENUMBER \
+\\n[#FN_MARK]\v'-.085m'\\*[$FN_CLOSE_BRACKET]\v'.085m'\h'.25m'
+. el \
+. as $FN_LINENUMBER \
+\\n[#FN_MARK]\v'-.1m'-\v'.1m'\\n[#FN_MARK_2]\v'-.085m'\
+\\*[$FN_CLOSE_BRACKET]\v'.085m'\h'.25m'
. \}
. el \{\
-. ie \\n[#FN_MARK_2]=\\n[#FN_MARK] \{\
+. ie \\n[#FN_MARK_2]=\\n[#FN_MARK] \
. ds $FN_LINENUMBER \\n[#FN_MARK]\\*[$FN_LN_SEP]
-. \}
-. el \{\
-. ds $FN_LINENUMBER \\n[#FN_MARK]\v'-.1m'-\v'.1m'\\n[#FN_MARK_2]\\*[$FN_LN_SEP]
+. el \
+. ds $FN_LINENUMBER \
+\\n[#FN_MARK]\v'-.1m'-\v'.1m'\\n[#FN_MARK_2]\\*[$FN_LN_SEP]
. \}
. \}
-. if !\\n[#NO_FN_MARKER] \{\
+. if !\\n[#NO_FN_MARKER] \
. PRINT \\*[$FN_LINENUMBER]\c
-. \}
. rm $FN_LINENUMBER
. nr #FN_MARK 0
. \}
@@ -13223,20 +12603,20 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.\" If INDENT arg is passed to FOOTNOTE, calculate the indent...
. ie '\\$1'INDENT' \{\
. ev FOOTNOTES
-. if '\\$2'L' \{ .in (\\$3) \}
-. if '\\$2'LEFT' \{ .in (\\$3) \}
-. if '\\$2'R' \{ .nr #FN_R_INDENT (\\$3) \}
-. if '\\$2'RIGHT' \{ .nr #FN_R_INDENT (\\$3) \}
+. if '\\$2'L' .in (\\$3)
+. if '\\$2'LEFT' .in (\\$3)
+. if '\\$2'R' .nr #FN_R_INDENT (\\$3)
+. if '\\$2'RIGHT' .nr #FN_R_INDENT (\\$3)
. if '\\$2'B' \{\
. nr #FN_BL_INDENT (\\$3)
-. ie '\\$4'' \{ .nr #FN_BR_INDENT \\n[#FN_BL_INDENT] \}
-. el \{ .nr #FN_BR_INDENT (\\$4) \}
+. ie '\\$4'' .nr #FN_BR_INDENT \\n[#FN_BL_INDENT]
+. el .nr #FN_BR_INDENT (\\$4)
. in \\n[#FN_BL_INDENT]u
. \}
. if '\\$2'BOTH' \{\
. nr #FN_BL_INDENT (\\$3)
-. ie '\\$4'' \{ .nr #FN_BR_INDENT \\n[#FN_BL_INDENT] \}
-. el \{ .nr #FN_BR_INDENT (\\$4) \}
+. ie '\\$4'' .nr #FN_BR_INDENT \\n[#FN_BL_INDENT]
+. el .nr #FN_BR_INDENT (\\$4)
. in \\n[#FN_BL_INDENT]u
. \}
. ev
@@ -13250,8 +12630,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.\" footnote but it's really an overflow).
. if \\n[#DIVERTED] \{\
. if \\n[#PREV_FN_DEFERRED]=1 \{\
-. if \\n[#FN_MARKER_STYLE]=1 \{ .ALD \\n[#FN_LEAD]u \}
-. if \\n[#RESET_FN_NUMBER] \{ .ALD \\n[#FN_LEAD]u \}
+. if \\n[#FN_MARKER_STYLE]=1 .ALD \\n[#FN_LEAD]u
+. if \\n[#RESET_FN_NUMBER] .ALD \\n[#FN_LEAD]u
. nr #PREV_FN_DEFERRED 2
. \}
. \}
@@ -13272,21 +12652,19 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
.\" Restore sentence spacing
. if \\n[#PRINT_STYLE]=2 \{\
-. if d $RESTORE_SS_VAR \{ .SS \\*[$RESTORE_SS_VAR] \}
+. if d $RESTORE_SS_VAR .SS \\*[$RESTORE_SS_VAR]
. rm $RESTORE_SS_VAR
. \}
. rr #FN_R_INDENT
. rr #FN_BR_INDENT
. nr #PP_STYLE \\n[#PP_STYLE_PREV]
-. if !\\n[#INDENT_FIRSTS] \{ .INDENT_FIRST_PARAS OFF \}
+. if !\\n[#INDENT_FIRSTS] .INDENT_FIRST_PARAS OFF
. rr #INDENT_FIRSTS
.\" Calculate footnote depth, but not if #COUNTERS_RESET (created in
.\" DIVER_FN_1_PRE) to instruct FOOTNOTES to skip this step for now
.\" (it's taken care of when FN_IN_DIVER is output into FOOTNOTES in
.\" PROCESS_FN_IN_DIVER).
-. ie r#COUNTERS_RESET \{\
-. rr #COUNTERS_RESET
-. \}
+. ie r#COUNTERS_RESET .rr #COUNTERS_RESET
. el \{\
. nr #GET_DEPTH 1
.\" If the footnote is the 1st on the page and it falls too close
@@ -13316,17 +12694,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #FN_DEPTH +\\n[#DIVER_DEPTH]
.\" Special handling for run-on footnotes
. if \\n[#RUN_ON]=1 \{\
-. if \\n[#RUNON_FOOTNOTES] \{\
-. unformat RUNON_FOOTNOTES
-. \}
-. if \\n[#RUNON_FN_IN_DIVER] \{\
-. unformat RUNON_FN_IN_DIVER
-. \}
+. if \\n[#RUNON_FOOTNOTES] .unformat RUNON_FOOTNOTES
+. if \\n[#RUNON_FN_IN_DIVER] .unformat RUNON_FN_IN_DIVER
. ev FOOTNOTES
.\" Recreate FOOTNOTES with rule followed by text of unformatted
.\" run-on footnotes.
. di FOOTNOTES
-. ie \\n[#FN_RULE]=0 \{ .RLD 1v \}
+. ie \\n[#FN_RULE]=0 .RLD 1v
. el \{\
\v'-\\n[#FN_RULE_ADJ]u-\\n[#FN_RULE_WEIGHT_ADJ]u'\
\D't \\n[#FN_RULE_WEIGHT]'\
@@ -13358,14 +12732,12 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#FN_COUNT]=2 \{\
. ie \\n[#COLUMNS] \{\
. if !\\n[#FROM_FOOTER] \{\
-. if \\n[#FN_DEFER]=1 \{ .nr #FN_DEFER_SPACE 1 \}
-. if \\n[#FN_COUNT_FOR_COLS]>=1 \{ .rr #FN_DEFER_SPACE \}
-. if \\n[#FROM_HEADER] \{ .nr #FN_DEFER_SPACE 1 \}
+. if \\n[#FN_DEFER]=1 .nr #FN_DEFER_SPACE 1
+. if \\n[#FN_COUNT_FOR_COLS]>=1 .rr #FN_DEFER_SPACE
+. if \\n[#FROM_HEADER] .nr #FN_DEFER_SPACE 1
. \}
. \}
-. el \{\
-. nr #FN_DEFER_SPACE 1
-. \}
+. el .nr #FN_DEFER_SPACE 1
. \}
. rr #FN_DEFER
. \}
@@ -13376,7 +12748,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #FN_LINES 0 1
. while (\\n+[#FN_LINES]*\\n[#FN_LEAD])<\\n[#SPACE_REMAINING] \{\
. nr #FN_DEPTH (\\n[#FN_LINES]*\\n[#FN_LEAD])
-.\}
+. \}
. nr #VFP_DIFF \\n[#FN_DEPTH]-\\n[#SAVED_FN_DEPTH_1]
. nr #OVERFLOW 1
.\" Very occasionally, #VFP_DIFF, on a 1st footnote that isn't to
@@ -13407,38 +12779,32 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ie \\n[#FROM_FOOTER] \{\
. ie \\n[#FN_COUNT_FOR_COLS]>1 \{\
. nr #FN_DEPTH -\\n[#FN_DEPTH]
-. if \\n[#DIVERTED]=1 \{ .nr #DIVERTED 3 \}
+. if \\n[#DIVERTED]=1 .nr #DIVERTED 3
. if !\\n[#PREV_FN_DEFERRED]=1 \{\
. nr #FN_DEPTH -\\n[#VFP_DIFF]
. \}
. \}
. el \{\
. nr #VARIABLE_FOOTER_POS -\\n[#FN_DEPTH]
-. if \\n[#DIVERTED]=1 \{ .nr #DIVERTED 3 \}
+. if \\n[#DIVERTED]=1 .nr #DIVERTED 3
. \}
. \}
-. el \{\
-. nr #VARIABLE_FOOTER_POS -(\\n[#FN_DEPTH])
-. \}
-. \}
-. el \{\
-. nr #VARIABLE_FOOTER_POS -(\\n[#FN_DEPTH])
+. el .nr #VARIABLE_FOOTER_POS -(\\n[#FN_DEPTH])
. \}
+. el .nr #VARIABLE_FOOTER_POS -(\\n[#FN_DEPTH])
. \}
-. el \{ .nr #VARIABLE_FOOTER_POS -(\\n[#FN_DEPTH]) \}
+. el .nr #VARIABLE_FOOTER_POS -(\\n[#FN_DEPTH])
. \}
. el \{\
. nr #VARIABLE_FOOTER_POS -\\n[#VFP_DIFF]
-. if \\n[#DIVERTED]=1 \{ .nr #DIVERTED 3 \}
+. if \\n[#DIVERTED]=1 .nr #DIVERTED 3
. if !\\n[#PREV_FN_DEFERRED]=1 \{\
. ie \\n[#COLUMNS]=1 \{\
. if !\\n[#FROM_FOOTER] \{\
.
. \}
. \}
-. el \{\
-. nr #FN_DEPTH -\\n[#VFP_DIFF]
-. \}
+. el .nr #FN_DEPTH -\\n[#VFP_DIFF]
. \}
. if \\n[#DIVERTED]=3 \{\
. if !\\n[#PREV_FN_DEFERRED] \{\
@@ -13461,12 +12827,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. \}
. \}
-.\" Not sure what I was thinking with this next line. As is, it
-.\" moves the already established VFP trap for footnote 1 higher up
-.\" the page, resulting in a VFP that's higher on the page than the
-.\" current page position. Leaving it in anyway, commented out, in
-.\" case the logic and the conditions under which it should
-.\" apply reveal themselves.
. nr #FN_DEPTH \\n[#SAVED_FN_DEPTH_1]+\\n[#VFP_DIFF]
. \}
. el \{\
@@ -13496,13 +12856,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. \}
. ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
-.\" See VFP_CHECK for an explanation of the next lines.
-.\" The trap has to be removed, prior to setting it, each time
-.\" FOOTNOTE is run.
-. if \\n[#PRINT_STYLE]=2 \{\
-. ch VFP_CHECK
-. wh \\n[#VARIABLE_FOOTER_POS]u-\\n[#DOC_LEAD]u VFP_CHECK
-. \}
.\" If we have a footnote whose text has to be deferred to the next
.\" page, reset the FOOTER trap to its original location.
. if \\n[#FN_DEFER] \{\
@@ -13513,8 +12866,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #NO_FN_MARKER 0
. \}
. if \\n[#NUM_ARGS]=2 \{\
-. if '\\$2'BREAK' \{ .BR \}
-. if '\\$2'BR' \{ .BR \}
+. if '\\$2'BREAK' .BR
+. if '\\$2'BR' .BR
. \}
.END
\#
@@ -13537,25 +12890,21 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#FN_DEFER] \{\
. if \\n[#SAVED_DIVER_FN_COUNT]=1 \{\
. ie \\n[#COLUMNS]=1 \{\
-. if \\n[#COL_NUM]=\\n[#NUM_COLS] \{ .nr #FN_DEFER_SPACE 1 \}
-. \}
-. el \{\
-. nr #FN_DEFER_SPACE 1
+. if \\n[#COL_NUM]=\\n[#NUM_COLS] .nr #FN_DEFER_SPACE 1
. \}
+. el .nr #FN_DEFER_SPACE 1
. \}
. \}
. if \\n[#FN_MARKER_STYLE]=1 \{\
-. if \\n[#FN_COUNT]>0 \{ .nr #FN_COUNT 0 1 \}
+. if \\n[#FN_COUNT]>0 .nr #FN_COUNT 0 1
. if \\n[#COLUMNS]=1 \{\
-. if \\n[#COL_NUM]=\\n[#NUM_COLS] \{\
-. nr #FN_COUNT_FOR_COLS 0 1
-. \}
+. if \\n[#COL_NUM]=\\n[#NUM_COLS] .nr #FN_COUNT_FOR_COLS 0 1
. \}
. \}
. if \\n[#FN_MARKER_STYLE]=2 \{\
. if \\n[#RESET_FN_NUMBER]=1 \{\
. ie \\n[#COLUMNS]=1 \{\
-. if \\n[#COL_NUM]=\\n[#NUM_COLS] \{ .nr #FN_NUMBER 0 1 \}
+. if \\n[#COL_NUM]=\\n[#NUM_COLS] .nr #FN_NUMBER 0 1
. \}
. el \{\
. nr #FN_NUMBER 0 1
@@ -13581,32 +12930,22 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.MAC DIVER_FN_2_POST END
. if \\n[#DONE_ONCE]=1 \{\
. if \\n[#FN_MARKER_STYLE]=1 \{\
-. if \\n[#FN_COUNT]=0 \{\
-. nr #DONT_RULE_ME 1
-. \}
-. if \\n[#FN_COUNT]>0 \{\
-. nr #FN_COUNT 0 1
-. \}
+. if \\n[#FN_COUNT]=0 .nr #DONT_RULE_ME 1
+. if \\n[#FN_COUNT]>0 .nr #FN_COUNT 0 1
. if \\n[#COLUMNS]=1 \{\
-. if \\n[#COL_NUM]=\\n[#NUM_COLS] \{ .nr #FN_COUNT_FOR_COLS 0 1 \}
+. if \\n[#COL_NUM]=\\n[#NUM_COLS] .nr #FN_COUNT_FOR_COLS 0 1
. if !\\n[#COL_NUM]=\\n[#NUM_COLS] \{\
. \}
. \}
. \}
. if \\n[#FN_MARKER_STYLE]=2 \{\
-. if \\n[#FN_COUNT]=0 \{\
-. nr #DONT_RULE_ME 1
-. \}
-. if \\n[#FN_COUNT]>0 \{\
-. nr #FN_COUNT 0 1
-. \}
+. if \\n[#FN_COUNT]=0 .nr #DONT_RULE_ME 1
+. if \\n[#FN_COUNT]>0 .nr #FN_COUNT 0 1
. if \\n[#RESET_FN_NUMBER]=1 \{\
. ie \\n[#COLUMNS]=1 \{\
-. if \\n[#COL_NUM]=\\n[#NUM_COLS] \{ .nr #FN_NUMBER 0 1 \}
-. \}
-. el \{\
-. nr #FN_NUMBER 0 1
+. if \\n[#COL_NUM]=\\n[#NUM_COLS] .nr #FN_NUMBER 0 1
. \}
+. el .nr #FN_NUMBER 0 1
. \}
. \}
. \}
@@ -13614,49 +12953,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\#
\# The main macros that handle footnote processing.
\# -----------------------------------------------
-\# Sometimes, #VARIABLE_FOOTER_POS sets FOOTER at a location that gives
-\# the impression another line of running text could fit on the page.
-\# VFP_CHECK is always set to the line just above the one where FOOTER
-\# will be sprung, and checks for this condition. If it exists, FOOTER
-\# is set one line lower on the page, thus squeezing in an extra line
-\# of running text. This is a judgment call on my part, but seems to
-\# work well. If there are problems (e.g. footnotes really do look
-\# jammed), the user should probably adjust FOOTNOTE_AUTOLEAD and/or
-\# FOOTNOTE_RULE_ADJ.
-\#
-\# The macro has to be run in its own environment, otherwise the first
-\# word of the last line before the footnotes gets chopped.
-\#
-.MAC VFP_CHECK END
-. ev VFP_CHECK
-.\" The trap also has to be removed each time VFP_CHECK is run
-. if \\n[#PRINT_STYLE]=2 \{\
-. ch VFP_CHECK
-. SIZESPECS
-. ie !\\n[#IN_DIVER] \{ .nr #PAGE_POS \\n(nl \}
-. el \{ .nr #PAGE_POS \\n(nl+\\n(.d+(\\n[#DOC_LEAD]) \}
-. nr #FOOTER_POS \\n[#PAGE_LENGTH]+(\\n[#VARIABLE_FOOTER_POS])
-. nr #SPACE_TO_FOOTER \\n[#FOOTER_POS]-\\n[#PAGE_POS]
-. nr #FN_GAP \\n[#SPACE_TO_FOOTER]%\\n[#DOC_LEAD]
-. if !\\n[#FN_GAP]<0 \{\
-. if \\n[#FN_GAP]<\\n[#DOC_LEAD] \{\
-. ie (\\n[#PAGE_POS]+(\\n[#FN_DEPTH]+\\n[#FN_GAP]))>(\\n[#VISUAL_B_MARGIN]) \{\
-. nr #VARIABLE_FOOTER_POS 0+\\n[#VARIABLE_FOOTER_POS]
-. \}
-. el \{\
-. ie \\n[#DOC_LEAD]-\\n[#FN_GAP]<\\n[#DESCENDER] \{\
-. nr #VARIABLE_FOOTER_POS +\\n[#DOC_LEAD]
-. ch FOOTER \\n[#VARIABLE_FOOTER_POS]u
-. \}
-. el \{\
-. nr #VARIABLE_FOOTER_POS 0+\\n[#VARIABLE_FOOTER_POS]
-. \}
-. \}
-. \}
-. \}
-. \}
-. ev
-.END
\#
\# FN_OVERFLOW_TRAP starts off "underneath" FOOTER, but is revealed
\# as #VARIABLE_FOOTER_POSITION changes the position of FOOTER.
@@ -13673,9 +12969,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ie \\n[#COLUMNS]=1 \{\
. if \\n[#FROM_FOOTER] \{\
. if \\n[#PREV_FN_DEFERRED] \{\
-. if !\\n[#COL_NUM]=\\n[#NUM_COLS] \{\
+. if !\\n[#COL_NUM]=\\n[#NUM_COLS] \
. rr #PREV_FN_DEFERRED
-. \}
. \}
. \}
. if !\\n[#FROM_FOOTER] \{\
@@ -13711,17 +13006,15 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\#
.MAC PROCESS_FN_LEFTOVER END
. if \\n[#PREV_FN_DEFERRED]=2 \{\
-. if \\n[#FN_COUNT_AT_FOOTER]>1 \{ .rr #PREV_FN_DEFERRED \}
+. if \\n[#FN_COUNT_AT_FOOTER]>1 .rr #PREV_FN_DEFERRED
. \}
. if !\\n[#FN_DEFER] \{\
. nr #FN_COUNT 0 1
. nr #FN_DEPTH 0
. nr #VARIABLE_FOOTER_POS 0-\\n[#B_MARGIN]
. \}
-. if r#FN_DEFER \{\
-. if \\n[#FN_DEFER]=1 \{\
-. nr #VARIABLE_FOOTER_POS -\\n[#FN_DEPTH]
-. \}
+. if r #FN_DEFER \{\
+. if \\n[#FN_DEFER]=1 .nr #VARIABLE_FOOTER_POS -\\n[#FN_DEPTH]
. if \\n[#FN_DEFER]=2 \{\
. nr #FN_DEPTH 0
. nr #VARIABLE_FOOTER_POS 0-\\n[#B_MARGIN]
@@ -13737,24 +13030,22 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ie \\n[#COLUMNS]=1 \{\
. if \\n[#COL_NUM]=\\n[#NUM_COLS] \{\
. if !\\n[#FROM_FOOTER] \{\
-. if \\n[#FN_COUNT_FOR_COLS]=1 \{ .nr #PREV_FN_DEFERRED 1 \}
+. if \\n[#FN_COUNT_FOR_COLS]=1 .nr #PREV_FN_DEFERRED 1
. \}
. \}
. \}
-. el \{ .nr #PREV_FN_DEFERRED 1 \}
+. el .nr #PREV_FN_DEFERRED 1
. \}
. if !\\n[#FN_DEFER] \{\
-. if \\n[#FN_OVERFLOW_DEPTH] \{\
-. DIVERT_FN_LEFTOVER
-. \}
+. if \\n[#FN_OVERFLOW_DEPTH] .DIVERT_FN_LEFTOVER
. \}
. ie \\n[#COLUMNS]=1 \{\
. if \\n[#COL_NUM]>1 \{\
-. if \\n[#COL_NUM]=\\n[#NUM_COLS] \{ .nr #FN_COUNT 0 1 \}
+. if \\n[#COL_NUM]=\\n[#NUM_COLS] .nr #FN_COUNT 0 1
. \}
. \}
-. el \{ .nr #FN_COUNT 0 1 \}
-. if \\n[#DIVER_FN]=2 \{ .rr #DIVER_FN \}
+. el .nr #FN_COUNT 0 1
+. if \\n[#DIVER_FN]=2 .rr #DIVER_FN
. rr #FROM_DIVERT_FN
.END
\#
@@ -13790,11 +13081,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #SPACE_REMAINING 0
. ch FOOTER -\\n[#B_MARGIN]u
. nr #NO_FN_MARKER 1
-. if !\\n[#RESET_FN_COUNTERS]=2 \{\
-. rr #RESET_FN_COUNTERS
-. \}
+. if !\\n[#RESET_FN_COUNTERS]=2 .rr #RESET_FN_COUNTERS
. FOOTNOTE
-. if \\n[#FN_OVERFLOW_DEPTH] \{ .nf \}
+. if \\n[#FN_OVERFLOW_DEPTH] .nf
. ie dRUNON_FN_IN_DIVER \{\
. RUNON_FN_IN_DIVER
. rm RUNON_FN_IN_DIVER
@@ -13817,7 +13106,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# you, and you want to adjust the spacing between any two endnotes (as
\# they're output), make the spacing adjustments (.ALD/.RLD) at the
\# *end* of endnotes (i.e. just before .ENDNOTE OFF), not at the top.
-\#
+\#
\# Endnotes must be output manually with .ENDNOTES. This allows user
\# the flexibility to output endnotes at the end of each collated
\# document, or to output them at the end of the entire document.
@@ -13849,7 +13138,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #EN_PS (p;\\$1)
.END
\#
-\#
\# ENDNOTES, BIBLIOGRAPHY and TOC LEADING
\# --------------------------------------
\# *Argument:
@@ -13864,17 +13152,15 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\#
.MAC _LEAD END
. if '\\$0'BIBLIOGRAPHY_LEAD' .ds $SECTION BIB
-. if '\\$0'ENDNOTE_LEAD' .ds $SECTION EN
-. if '\\$0'TOC_LEAD' .ds $SECTION TOC
+. if '\\$0'ENDNOTE_LEAD' .ds $SECTION EN
+. if '\\$0'TOC_LEAD' .ds $SECTION TOC
. ds $\\*[$SECTION]_LEAD \\$1
. ds $ADJUST_\\*[$SECTION]_LEAD \\$2
-. if !\\n[#OK_PROCESS_LEAD] \{\
-. return
-. \}
+. if !\\n[#OK_PROCESS_LEAD] .return
. nr #\\*[$SECTION]_LEAD (p;\\$1)
. rr #ADJ_\\*[$SECTION]_LEAD
. if '\\$2'ADJUST' \{\
-. nr #ORIG_DOC_LEAD \\n[#DOC_LEAD]
+. nr #ORIG_DOC_LEAD \\n[#UNADJUSTED_DOC_LEAD]
. nr #RESTORE_ADJ_DOC_LEAD \\n[#ADJ_DOC_LEAD]
. nr #ADJ_DOC_LEAD 1
. nr #ADJ_\\*[$SECTION]_LEAD 1
@@ -13903,10 +13189,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\#
.MAC ENDNOTE_SPACING END
. ie \B'\\$1' .ds $EN_SPACE \\$1
-. el \{ .rm $EN_SPACE \}
+. el .rm $EN_SPACE
.END
\#
-\#
\# ENDNOTES_HDRFTR_CENTER
\# ----------------------
\# *Argument:
@@ -13920,11 +13205,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# Default is OFF
\#
.MAC ENDNOTES_HDRFTR_CENTER END
-. ie '\\$1'' \{ .nr #EN_HDRFTR_CENTER 1 \}
-. el \{ .rr #EN_HDRFTR_CENTER \}
+. ie '\\$1'' .nr #EN_HDRFTR_CENTER 1
+. el .rr #EN_HDRFTR_CENTER
.END
\#
-\#
\# ENDNOTE STRING
\# --------------
\# *Argument:
@@ -13938,12 +13222,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ds $EN_STRING \\$1
.END
\#
-\#
.MAC ENDNOTE_STRING_ADVANCE END
. nr #EN_STRING_ADVANCE (\\$1)
.END
\#
-\#
\# ENDNOTE STRING CAPS
\# -------------------
\# *Arguments:
@@ -13960,11 +13242,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# Default is on.
\#
.MAC ENDNOTE_STRING_CAPS END
-. ie '\\$1'' \{ .nr #EN_STRING_CAPS 1 \}
-. el \{ .rr #EN_STRING_CAPS \}
+. ie '\\$1'' .nr #EN_STRING_CAPS 1
+. el .nr #EN_STRING_CAPS 0
.END
\#
-\#
\# ENDNOTE TITLE
\# -------------
\# *Argument:
@@ -13978,7 +13259,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ds $EN_TITLE \\$1
.END
\#
-\#
\# ENDNOTE MARKER STYLE
\# --------------------
\# *Arguments:
@@ -13991,25 +13271,23 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# Default is NUMBER.
\#
.MAC ENDNOTE_MARKER_STYLE END
-. if '\\$1'NUMBER' \{ .nr #EN_MARKER_STYLE 1 \}
+. if '\\$1'NUMBER' .nr #EN_MARKER_STYLE 1
. if '\\$1'LINE' \{\
. nr #EN_MARKER_STYLE 2
. if !\\n[#EN_LN_SEP] \{\
-. if !\\n[#EN_LN_BRACKETS] \{ .ENDNOTE_LINENUMBER_BRACKETS SQUARE \}
+. if !\\n[#EN_LN_BRACKETS] .ENDNOTE_LINENUMBER_BRACKETS SQUARE
. \}
. \}
-. if '\\$1'SUPERSCRIPT' \{ .nr #EN_MARKER_STYLE 3 \}
+. if '\\$1'SUPERSCRIPT' .nr #EN_MARKER_STYLE 3
.END
\#
-\#
\# ENDNOTE LINENUMBER MARK
\# -----------------------
\# *Function:
\# This string, when called inline, stores the current output line
\# number in register #EN_MARK for use with ENDNOTE.
\#
-.ds EN_MARK \R'#EN_MARK \En(ln'
-\#
+.ds EN_MARK \R'#EN_MARK \En[ln]'
\#
\# ENDNOTE LINENUMBER SEPARATOR
\# ----------------------------
@@ -14028,7 +13306,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ds $EN_LN_SEP "\\$1
.END
\#
-\#
\# ENDNOTE LINENUMBER BRACKETS
\# ---------------------------
\# *Argument:
@@ -14066,7 +13343,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
.END
\#
-\#
\# ENDNOTE LINENUMBER GAP
\# ----------------------
\# *Argument:
@@ -14079,7 +13355,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #EN_LN_GAP (u;\\$1)
.END
\#
-\#
\# ENDNOTE NUMBERS ALIGNMENT
\# -------------------------
\# *Argument:
@@ -14102,7 +13377,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #EN_NUMBER_PLACEHOLDERS \\$2
.END
\#
-\#
\# ENDNOTE PARAGRAPH INDENT
\# ------------------------
\# *Argument:
@@ -14118,7 +13392,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #EN_PP_INDENT (\\$1)
.END
\#
-\#
\# TURN OFF COLUMN MODE FOR ENDNOTES
\# ---------------------------------
\# *Argument:
@@ -14130,11 +13403,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# documents in columns. Default is to set endnotes in columns.
\#
.MAC ENDNOTES_NO_COLUMNS END
-. ie '\\$1'' \{ .nr #EN_NO_COLS 1 \}
-. el \{ .rr #EN_NO_COLS \}
+. ie '\\$1'' .nr #EN_NO_COLS 1
+. el .rr #EN_NO_COLS
.END
\#
-\#
\# NO FIRST PAGE NUMBER ON ENDNOTES FIRST PAGE
\# -------------------------------------------
\# *Argument:
@@ -14148,11 +13420,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# endnotes page when footers are on.
\#
.MAC ENDNOTES_NO_FIRST_PAGENUM END
-. ie '\\$1'' \{ .nr #EN_NO_FIRST_PN 1 \}
-. el \{ .rr #EN_NO_FIRST_PN \}
+. ie '\\$1'' .nr #EN_NO_FIRST_PN 1
+. el .rr #EN_NO_FIRST_PN
.END
\#
-\#
\# PAGE HEADERS ON ENDNOTES PAGES
\# ------------------------------
\# *Argument:
@@ -14168,7 +13439,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# page header on the first page as well.
\#
.MAC ENDNOTES_ALLOWS_HEADERS END
-. ie '\\$1'' \{ .nr #EN_ALLOWS_HEADERS 1 \}
+. ie '\\$1'' .nr #EN_ALLOWS_HEADERS 1
. el \{\
. ie '\\$1'ALL' \{\
. nr #EN_ALLOWS_HEADERS 1
@@ -14181,7 +13452,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
.END
\#
-\#
\# ENDNOTES PAGES PAGE NUMBERING STYLE
\# -----------------------------------
\# *Argument:
@@ -14199,7 +13469,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ds $EN_PN_STYLE \\$1
.END
\#
-\#
\# FIRST PAGE NUMBER FOR ENDNOTES
\# ------------------------------
\# *Argument:
@@ -14256,7 +13525,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
.END
\#
-\#
\# ENDNOTE PARAGRAPH SPACE
\# -----------------------
\# *Argument:
@@ -14267,11 +13535,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# Like PARA_SPACE. Default is not to space endnote paras.
\#
.MAC ENDNOTE_PARA_SPACE END
-. ie '\\$1'' \{ .nr #EN_PP_SPACE 1 \}
-. el \{ .rr #EN_PP_SPACE \}
+. ie '\\$1'' .nr #EN_PP_SPACE 1
+. el .rr #EN_PP_SPACE
.END
\#
-\#
\# ENDNOTE
\# -------
\# *Argument:
@@ -14287,8 +13554,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ie '\\$1'' \{\
. nr #ENDNOTE 1
. ie !\\n[#EN_MARKER_STYLE]=2 \{\
-. if \\n[#CONDENSE] \{ .nop \*[CONDX]\c \}
-. if \\n[#EXTEND] \{ .nop \*[EXTX]\c \}
+. if \\n[#CONDENSE] .nop \*[CONDX]\c
+. if \\n[#EXTEND] .nop \*[EXTX]\c
. if \\n[#UNDERLINE_ON] \{\
. nr #UNDERLINE_WAS_ON 1
. UNDERLINE OFF
@@ -14300,22 +13567,21 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
.\" Vertical raise amount here is more than when the same string is printed in
.\" the endnotes so bottom of number aligns with top of bowl.
-. PRINT "\s-2\v'-\\n[#DOC_LEAD]u/5u'\\n+[#EN_NUMBER]\v'+\\n[#DOC_LEAD]u/5u'\s+2\c"
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-. PRINT \*[SUP]\\n+[#EN_NUMBER]\*[SUPX]\c
+. PRINT \
+"\s-2\v'-\\n[#DOC_LEAD]u/5u'\\n+[#EN_NUMBER]\v'+\\n[#DOC_LEAD]u/5u'\s+2\c"
. \}
+. if \\n[#PRINT_STYLE]=2 .PRINT \*[SUP]\\n+[#EN_NUMBER]\*[SUPX]\c
. \}
. el \{\
-. ie r#EN_NUMBER \{ .nr #EN_NUMBER \\n[#EN_NUMBER]+1 \}
-. el \{ .nr #EN_NUMBER 1 1 \}
+. ie r#EN_NUMBER .nr #EN_NUMBER \\n[#EN_NUMBER]+1
+. el .nr #EN_NUMBER 1 1
. if !\\n[#LINENUMBERS] \{\
. tm1 "[mom]: Line numbering must be enabled with NUMBER_LINES when
. tm1 " ENDNOTE_MARKER_STYLE is LINE.
-. ab Aborting on ENDNOTE at line \\n(.c.
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
-. if \\n[#EN_MARK]=0 \{ .nr #EN_MARK \\n(ln \}
-. nr #EN_MARK_2 \\n(ln
+. if \\n[#EN_MARK]=0 .nr #EN_MARK \\n[ln]
+. nr #EN_MARK_2 \\n[ln]
. if '\\n[.z]'P_QUOTE' \{\
. nr #EN_MARK -1
. nr #EN_MARK_2 -1
@@ -14323,24 +13589,22 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. nr #PP_STYLE_PREV \\n[#PP_STYLE]
. nr #PP_STYLE 1
-. if \\n[#INDENT_FIRST_PARAS] \{ .nr #INDENT_FIRSTS 1 \}
+. if \\n[#INDENT_FIRST_PARAS] .nr #INDENT_FIRSTS 1
. INDENT_FIRST_PARAS
. ev EN
. da END_NOTES
. LL \\n[#DOC_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. if \\n[#COLUMNS] \{\
-. ie \\n[#EN_NO_COLS] \{ .LL \\n[#DOC_L_LENGTH]u \}
-. el \{ .LL \\n[#COL_L_LENGTH]u \}
-. ta \\n(.lu
+. ie \\n[#EN_NO_COLS] .LL \\n[#DOC_L_LENGTH]u
+. el .LL \\n[#COL_L_LENGTH]u
+. ta \\n[.l]u
. \}
. ENDNOTE_LEAD \\*[$EN_LEAD] \\*[$ADJUST_EN_LEAD]
. vs \\n[#EN_LEAD]u
.\" Print page header title
. if \\n[#EN_NUMBER]=1 \{\
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. \}
+. if \\n[#PRINT_STYLE]=1 .TYPEWRITER
. if \\n[#PRINT_STYLE]=2 \{\
. FAMILY \\*[$EN_TITLE_FAM]
. FT \\*[$EN_TITLE_FT]
@@ -14348,21 +13612,19 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. sp
. if !'\\*[$EN_TITLE]'' \{\
-. if '\\*[$EN_TITLE_QUAD]'L' \{ .LEFT \}
-. if '\\*[$EN_TITLE_QUAD]'LEFT' \{ .LEFT \}
-. if '\\*[$EN_TITLE_QUAD]'C' \{ .CENTER \}
-. if '\\*[$EN_TITLE_QUAD]'CENTER' \{ .CENTER \}
-. if '\\*[$EN_TITLE_QUAD]'CENTRE' \{ .CENTER \}
-. if '\\*[$EN_TITLE_QUAD]'R' \{ .RIGHT \}
-. if '\\*[$EN_TITLE_QUAD]'RIGHT' \{ .RIGHT \}
+. if '\\*[$EN_TITLE_QUAD]'L' .LEFT
+. if '\\*[$EN_TITLE_QUAD]'LEFT' .LEFT
+. if '\\*[$EN_TITLE_QUAD]'C' .CENTER
+. if '\\*[$EN_TITLE_QUAD]'CENTER' .CENTER
+. if '\\*[$EN_TITLE_QUAD]'CENTRE' .CENTER
+. if '\\*[$EN_TITLE_QUAD]'R' .RIGHT
+. if '\\*[$EN_TITLE_QUAD]'RIGHT' .RIGHT
. ie \\n[#EN_TITLE_UNDERLINE] \{\
. nr #FROM_EN_TITLE 1
. UNDERSCORE "\\*[$EN_TITLE]"
. rr #FROM_EN_TITLE
. \}
-. el \{\
-. PRINT "\\*[$EN_TITLE]"
-. \}
+. el .PRINT "\\*[$EN_TITLE]"
. \}
. \}
.\" Get indent from endnotes point size; convert string to reg in
@@ -14371,12 +13633,12 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #REF_EN_INDENT (u;\\*[$REF_EN_INDENT])
. if \\n[#PRINT_STYLE]=1 \{\
. TYPEWRITER
-. if \\n[#EN_NUMBER]=1 \{ .sp \}
-. if \\n[#EN_MARKER_STYLE]=3 \{ .PT_SIZE -2 \}
+. if \\n[#EN_NUMBER]=1 .sp
+. if \\n[#EN_MARKER_STYLE]=3 .PT_SIZE -2
. \}
. if \\n[#PRINT_STYLE]=2 \{\
. if \\n[#EN_NUMBER]=1 \{\
-. if !'\\*[$EN_TITLE]'' \{ .sp \}
+. if !'\\*[$EN_TITLE]'' .sp
. \}
. if \\n[#EN_MARKER_STYLE]=1 \{\
. FAMILY \\*[$EN_NUMBER_FAM]
@@ -14398,44 +13660,44 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#EN_MARKER_STYLE]=2 \{\
. ie \\n[#EN_LN_BRACKETS]=1 \{\
. ds $EN_LINENUMBER \v'-.085m'\\*[$EN_OPEN_BRACKET]\v'.085m'
-. ie \\n[#EN_MARK_2]=\\n[#EN_MARK] \{\
-. as $EN_LINENUMBER \\n[#EN_MARK]\v'-.085m'\\*[$EN_CLOSE_BRACKET]\v'.085m'\"
-. \}
-. el \{\
-. as $EN_LINENUMBER \\n[#EN_MARK]\v'-.1m'-\v'.1m'\\n[#EN_MARK_2]\v'-.085m'\\*[$EN_CLOSE_BRACKET]\v'.085m'\"
-. \}
+. ie \\n[#EN_MARK_2]=\\n[#EN_MARK] .as $EN_LINENUMBER \
+\\n[#EN_MARK]\v'-.085m'\\*[$EN_CLOSE_BRACKET]\v'.085m'\"
+. el .as $EN_LINENUMBER \
+\\n[#EN_MARK]\v'-.1m'-\v'.1m'\\n[#EN_MARK_2]\v'-.085m'\
+\\*[$EN_CLOSE_BRACKET]\v'.085m'\"
. \}
. el \{\
-. ie \\n[#EN_MARK_2]=\\n[#EN_MARK] \{\
-. ds $EN_LINENUMBER \\n[#EN_MARK]\\*[$EN_LN_SEP]
-. \}
-. el \{\
-. ds $EN_LINENUMBER \\n[#EN_MARK]\v'-.1m'-\v'.1m'\\n[#EN_MARK_2]\\*[$EN_LN_SEP]
-. \}
+. ie \\n[#EN_MARK_2]=\\n[#EN_MARK] \
+. ds $EN_LINENUMBER \
+\\n[#EN_MARK]\\*[$EN_LN_SEP]
+. el \
+. ds $EN_LINENUMBER \
+\\n[#EN_MARK]\v'-.1m'-\v'.1m'\\n[#EN_MARK_2]\\*[$EN_LN_SEP]
. \}
. nr #EN_MARK 0
. \}
\!. TRAP OFF
-. ie \\n[#EN_NUMBERS_ALIGN_RIGHT] \{ .RIGHT \}
-. el \{ .LEFT \}
-. if \\n[#EN_MARKER_STYLE]=1 \{\
+. ie \\n[#EN_NUMBERS_ALIGN_RIGHT] .RIGHT
+. el .LEFT
+. if \\n[#EN_MARKER_STYLE]=1 \
. nr #EN_NUMBER_L_LENGTH \w'\0'*\\n[#EN_NUMBER_PLACEHOLDERS]+\w'.'
-. \}
. if \\n[#EN_MARKER_STYLE]=2 \{\
-. ie \\n[#EN_LN_BRACKETS]=1 \{ .nr #EN_NUMBER_L_LENGTH (\w'\0'*(\\n[#EN_NUMBER_PLACEHOLDERS]*2))+\w'-[]' \}
-. el \{ .nr #EN_NUMBER_L_LENGTH (\w'\0'*(\\n[#EN_NUMBER_PLACEHOLDERS]*2))+\w'-\\*[$EN_LN_SEP]' \}
+. ie \\n[#EN_LN_BRACKETS]=1 .nr #EN_NUMBER_L_LENGTH \
+(\w'\0'*(\\n[#EN_NUMBER_PLACEHOLDERS]*2))+\w'-[]'
+. el .nr #EN_NUMBER_L_LENGTH \
+(\w'\0'*(\\n[#EN_NUMBER_PLACEHOLDERS]*2))+\w'-\\*[$EN_LN_SEP]'
. RIGHT
. \}
. if \\n[#EN_MARKER_STYLE]=3 \{\
-. nr #EN_NUMBER_L_LENGTH \w'\0'*\\n[#EN_NUMBER_PLACEHOLDERS]
+. nr #EN_NUMBER_L_LENGTH \
+\w'\0'*\\n[#EN_NUMBER_PLACEHOLDERS]+.15m
. RIGHT
. \}
-. ie \\n[#REF]=1 \{\
+. ie \\n[#REF]=1 \
. ll \\n[#EN_NUMBER_L_LENGTH]u+\\n[#REF_EN_INDENT]u
-. \}
-. el \{ .ll \\n[#EN_NUMBER_L_LENGTH]u \}
+. el .ll \\n[#EN_NUMBER_L_LENGTH]u
. if \\n[#EN_MARKER_STYLE]=1 \{\
-. if \\n[#REF]=1 \{ .ti \\n[#REF_EN_INDENT]u \}
+. if \\n[#REF]=1 .ti \\n[#REF_EN_INDENT]u
. nop \En[#EN_NUMBER].
. \}
. if \\n[#EN_MARKER_STYLE]=2 \{\
@@ -14447,27 +13709,34 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ie \\n[#PRINT_STYLE]=1 \{\
.\" Vertical raise amount here is less than when the same string is printed in
.\" the body of the text because number precedes a cap.
-. nop \s-2\v'-\\n[#DOC_LEAD]u/7u'\\n[#EN_NUMBER]\|\v'+\\n[#DOC_LEAD]u/7u'\s+2
+. nop \
+\s-2\v'-\\n[#DOC_LEAD]u/7u'\\n[#EN_NUMBER]\|\v'+\\n[#DOC_LEAD]u/7u'\s+2
. \}
-. el \{ .nop \E*[SUP]\\n[#EN_NUMBER]\E*[SUPX] \}
+. el .nop \E*[SUP]\\n[#EN_NUMBER]\E*[SUPX]\h'.15m'
. \}
. EOL
\!. TRAP OFF
. ll
. nr #EN_FIGURE_SPACE \w'\0'
. if \\n[#EN_MARKER_STYLE]=1 \{\
-. ie \\n[#REF]=1 \{ .ti \\n[#EN_NUMBER_L_LENGTH]u+\\n[#REF_EN_INDENT]u+\\n[#EN_FIGURE_SPACE]u \}
-. el \{ .in \\n[#EN_NUMBER_L_LENGTH]u+\\n[#EN_FIGURE_SPACE]u \}
+. ie \\n[#REF]=1 .ti \
+\\n[#EN_NUMBER_L_LENGTH]u+\\n[#REF_EN_INDENT]u+\\n[#EN_FIGURE_SPACE]u
+. el .in \
+\\n[#EN_NUMBER_L_LENGTH]u+\\n[#EN_FIGURE_SPACE]u
. \}
. if \\n[#EN_MARKER_STYLE]=2 \{\
-. ie \\n[#REF]=1 \{ .ti \\n[#EN_NUMBER_L_LENGTH]u+\\n[#REF_EN_INDENT]u+\\n[#EN_LN_GAP]u \}
-. el \{ .ti \\n[#EN_NUMBER_L_LENGTH]u+\\n[#EN_LN_GAP]u \}
+. ie \\n[#REF]=1 .ti \
+\\n[#EN_NUMBER_L_LENGTH]u+\\n[#REF_EN_INDENT]u+\\n[#EN_LN_GAP]u
+. el .ti \
+\\n[#EN_NUMBER_L_LENGTH]u+\\n[#EN_LN_GAP]u
. \}
. if \\n[#EN_MARKER_STYLE]=3 \{\
-. ie \\n[#REF]=1 \{ .ti \\n[#EN_NUMBER_L_LENGTH]u+\\n[#REF_EN_INDENT]u+\w'\|'u \}
-. el \{ .in \\n[#EN_NUMBER_L_LENGTH]u \}
+. ie \\n[#REF]=1 .ti \
+\\n[#EN_NUMBER_L_LENGTH]u+\\n[#REF_EN_INDENT]u+\w'\|'u
+. el .in \
+\\n[#EN_NUMBER_L_LENGTH]u
. \}
-. nr #EN_TEXT_INDENT \\n(.i
+. nr #EN_TEXT_INDENT \\n[.i]
. QUAD \\*[$EN_QUAD]
\!. TRAP
. if \\n[#PRINT_STYLE]=1 \{\
@@ -14480,8 +13749,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. \}
. el \{\
-\!. ie \\n[#EN_NUMBER]=\\\\n[#LAST_EN] \{ .vpt 0 \}
-\!. el \{ .br \}
+\!. ie \\n[#EN_NUMBER]=\\\\n[#LAST_EN] .vpt 0
+\!. el .br
. ALD \\*[$EN_SPACE]
. in 0
. if \\n[#EN_MARKER_STYLE]=2 \{\
@@ -14490,13 +13759,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. da
.\" Restore sentence spacing
. if \\n[#PRINT_STYLE]=2 \{\
-. if d$RESTORE_SS_VAR \{ .SS \\*[$RESTORE_SS_VAR] \}
+. if d$RESTORE_SS_VAR .SS \\*[$RESTORE_SS_VAR]
. rm $RESTORE_SS_VAR
. \}
. ev
-.\" Restore lead -- need
+.\" Restore lead -- need
. nr #PP_STYLE \\n[#PP_STYLE_PREV]
-. if !\\n[#INDENT_FIRSTS] \{ .INDENT_FIRST_PARAS OFF \}
+. if !\\n[#INDENT_FIRSTS] .INDENT_FIRST_PARAS OFF
. rr #INDENT_FIRSTS
. rr #ENDNOTE
. if \\n[#UNDERLINE_WAS_ON] \{\
@@ -14509,12 +13778,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. \}
. if \\n[#NUM_ARGS]=2 \{\
-. if '\\$2'BREAK' \{ .BR \}
-. if '\\$2'BR' \{ .BR \}
+. if '\\$2'BREAK' .BR
+. if '\\$2'BR' .BR
. \}
.END
\#
-\#
\# ENDNOTES
\# --------
\# *Arguments:
@@ -14535,27 +13803,28 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #LINENUMBERS 2
. \}
. if \\n[#HEADERS_ON]=1 \{\
-. if !\\n[#EN_ALLOWS_HEADERS_ALL] \{ .HEADERS OFF \}
+. if !\\n[#EN_ALLOWS_HEADERS_ALL] .HEADERS OFF
. \}
. if \\n[#HEADER_STATE]=1 \{\
-. ie \\n[#EN_HDRFTR_CENTER]=1 \{ . \}
-. el \{ .rm $HDRFTR_CENTER \}
+. ie \\n[#EN_HDRFTR_CENTER]=1 .
+. el .rm $HDRFTR_CENTER
. \}
. ie !\\n[#SUSPEND_PAGINATION] \{\
. if \\n[#PAGINATE]=1 \{\
. if \\n[#PAGE_NUM_V_POS]=1 \{\
. PAGENUM_STYLE \\*[$EN_PN_STYLE]
-. if \\n[#EN_FIRST_PN] \{ .PAGENUMBER \\n[#EN_FIRST_PN]-1 \}
-. if r#EN_NO_FIRST_PN \{ .nr #PAGINATE 0 \}
+. if \\n[#EN_FIRST_PN] .PAGENUMBER \\n[#EN_FIRST_PN]-1
+. if r #EN_NO_FIRST_PN .nr #PAGINATE 0
. \}
. \}
. \}
. el \{\
-. ie \\n[#PAGE_NUM_V_POS]=2 \{ .nr #PAGINATE 1 \}
-. el \{ .nr #PAGINATE 0 \}
+. ie \\n[#PAGE_NUM_V_POS]=2 .nr #PAGINATE 1
+. el .nr #PAGINATE 0
. \}
. if \\n[#FOOTERS_ON]=1 \{\
-. if !'\\*[$HDRFTR_CENTER_OLD]'' .ds $HDRFTR_CENTER \\*[$HDRFTR_CENTER_OLD]
+. if !'\\*[$HDRFTR_CENTER_OLD]'' \
+. ds $HDRFTR_CENTER \\*[$HDRFTR_CENTER_OLD]
. \}
. NEWPAGE
. if \\n[#FOOTERS_ON]=1 \{\
@@ -14565,82 +13834,46 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. ie !\\n[#SUSPEND_PAGINATION] \{\
. if \\n[#PAGE_NUM_V_POS]=1 \{\
-. if r#EN_NO_FIRST_PN \{\
-. if \\n[#PAGINATION_STATE]=1 \{\
-. nr #PAGINATE 1
-. \}
+. if r #EN_NO_FIRST_PN \{\
+. if \\n[#PAGINATION_STATE]=1 .nr #PAGINATE 1
. \}
. \}
. \}
. el \{\
-. if \\n[#PAGE_NUM_V_POS]=2 \{ .nr #PAGINATE 0 \}
+. if \\n[#PAGE_NUM_V_POS]=2 .nr #PAGINATE 0
. \}
. rr #PAGINATION_STATE
. PAGENUM_STYLE \\*[$EN_PN_STYLE]
-. if \\n[#EN_FIRST_PN] \{ .PAGENUMBER \\n[#EN_FIRST_PN] \}
+. if \\n[#EN_FIRST_PN] .PAGENUMBER \\n[#EN_FIRST_PN]
. if \\n[#HEADER_STATE]=1 \{\
-. if \\n[#EN_ALLOWS_HEADERS] \{ .HEADERS \}
+. if \\n[#EN_ALLOWS_HEADERS] .HEADERS
. \}
.\" Collect endnotes title string for TOC
. nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
. af #TOC_ENTRY_PN \\g[#PAGENUMBER]
. ds $TOC_TITLE_ITEM \\*[$EN_STRING]\\|
-. ev TOC_EV
-. da TOC_ENTRIES
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-\!. FAMILY \\*[$TOC_TITLE_FAM]
-\!. FT \\*[$TOC_TITLE_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE_CHANGE]
-. \}
-\!. TRAP OFF
-\!. PAD_MARKER ^
-. ie \\n[#PRINT_STYLE]=1 \{\
-\!. PAD "\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN_TYPEWRITE]"
-. \}
-. el \{\
-\!. PAD "\\h'\\n[#TOC_TITLE_INDENT]u'\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN]"
-. \}
-\!. PAD_MARKER #
-\!. EOL
-\!. ST 100 L
-\!. ST 101 R
-. if \\n[#PRINT_STYLE]=2 \{\
-\!. FAMILY \\*[$TOC_PN_FAM]
-\!. FT \\*[$TOC_PN_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
-. \}
-\!. TAB 100
-\!. PRINT \\*[LEADER]
-\!. TN
-\!. TRAP
-\!. PRINT \\n[#TOC_ENTRY_PN]
-\!. TQ
-. di
-. ev
+. PDF_BOOKMARK 1 \\*[$EN_STRING]
+. TITLE_TO_TOC
.\" End collection of endnotes title string for TOC
.\" Process endnotes
-. if \\n[#PRINT_STYLE]=1 \{ .vs \\n[#EN_LEAD]u \}
+. if \\n[#PRINT_STYLE]=1 .vs \\n[#EN_LEAD]u
. if \\n[#PRINT_STYLE]=2 \{\
. if \\n[#EN_NO_COLS] \{\
-. if \\n[#COLUMNS] \{ .nr #COLUMNS_WERE_ON 1 \}
+. if \\n[#COLUMNS] .nr #COLUMNS_WERE_ON 1
. nr #COLUMNS 0
. \}
. nr #RESTORE_DOC_LEAD \\n[#DOC_LEAD]
-. ie \\n[#ADJ_EN_LEAD] \{\
-. nr #DOC_LEAD \\n[#EN_LEAD]
-. \}
-. el \{ .DOC_LEAD \\n[#EN_LEAD]u \}
+. ie \\n[#ADJ_EN_LEAD] .nr #DOC_LEAD \\n[#EN_LEAD]
+. el .DOC_LEAD \\n[#EN_LEAD]u
. \}
. PRINT \&
-. ie r#EN_STRING_ADVANCE \{ .sp |\\n[#EN_STRING_ADVANCE]u \}
-. el \{ .sp |\\n[#T_MARGIN]u \}
+. ie r#EN_STRING_ADVANCE .sp |\\n[#EN_STRING_ADVANCE]u
+. el .sp |\\n[#T_MARGIN]u
. mk ec
. if \\n[#SLANT_ON] \{\
\*[SLANTX]\c
. \}
+. sp
. ev ENDNOTES
. if !'\\*[$EN_STRING]'' \{\
. if \\n[#PRINT_STYLE]=1 \{\
@@ -14649,71 +13882,66 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. if \\n[#PRINT_STYLE]=2 \{\
. LL \\n[#DOC_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. if \\n[#COLUMNS] \{\
-. ie \\n[#EN_NO_COLS] \{ .LL \\n[#DOC_L_LENGTH]u \}
-. el \{ .LL \\n[#COL_L_LENGTH]u \}
-. ta \\n(.lu
+. ie \\n[#EN_NO_COLS] .LL \\n[#DOC_L_LENGTH]u
+. el .LL \\n[#COL_L_LENGTH]u
+. ta \\n[.l]u
. \}
. FAMILY \\*[$EN_STRING_FAM]
. FT \\*[$EN_STRING_FT]
. PT_SIZE \\n[#EN_PS]u\\*[$EN_STRING_SIZE_CHANGE]
. vs \\n[#EN_LEAD]u
+. if \\n[#ENDNOTE_STRING_COLOR]=1 \{\
+. TRAP OFF
+. COLOR \\*[$ENDNOTE_STRING_COLOR]
+. EOL
+. TRAP
+. \}
. \}
-. if '\\*[$EN_STRING_QUAD]'L' \{ .LEFT \}
-. if '\\*[$EN_STRING_QUAD]'LEFT' \{ .LEFT \}
-. if '\\*[$EN_STRING_QUAD]'C' \{ .CENTER \}
-. if '\\*[$EN_STRING_QUAD]'CENTER' \{ .CENTER \}
-. if '\\*[$EN_STRING_QUAD]'CENTRE' \{ .CENTER \}
-. if '\\*[$EN_STRING_QUAD]'R' \{ .RIGHT \}
-. if '\\*[$EN_STRING_QUAD]'RIGHT' \{ .RIGHT \}
+. if '\\*[$EN_STRING_QUAD]'L' .LEFT
+. if '\\*[$EN_STRING_QUAD]'LEFT' .LEFT
+. if '\\*[$EN_STRING_QUAD]'C' .CENTER
+. if '\\*[$EN_STRING_QUAD]'CENTER' .CENTER
+. if '\\*[$EN_STRING_QUAD]'CENTRE' .CENTER
+. if '\\*[$EN_STRING_QUAD]'R' .RIGHT
+. if '\\*[$EN_STRING_QUAD]'RIGHT' .RIGHT
. EOL
-. if \\n[#EN_STRING_CAPS] \{ .CAPS \}
+. if \\n[#EN_STRING_CAPS] .CAPS
. ie \\n[#EN_STRING_UNDERLINE] \{\
. nr #FROM_EN_STRING 1
-. ie \\n[#EN_STRING_UNDERLINE]=2 \{\
+. ie \\n[#EN_STRING_UNDERLINE]=2 \
. UNDERSCORE2 \\*[$EN_UNDERLINE_GAP] \\*[$EN_RULE_GAP] "\\*[$EN_STRING]"
. \}
-. el \{\
-. UNDERSCORE "\\*[$EN_STRING]"
-. \}
+. el .UNDERSCORE "\\*[$EN_STRING]"
. rr #FROM_EN_STRING
. \}
-. el \{\
-. PRINT "\\*[$EN_STRING]
-. \}
+. el .PRINT "\\*[$EN_STRING]
. \}
. CAPS OFF
. if \\n[#PRINT_STYLE]=1 \{\
-. ie \\n[#SINGLE_SPACE]=1 \{\
-. sp
-. \}
+. ie \\n[#SINGLE_SPACE]=1 .sp
. el \{\
-. ie \\n[#EN_SINGLESPACE]=1 \{\
-. sp
-. \}
-. el \{\
-.
-. \}
+. ie \\n[#EN_SINGLESPACE]=1 .sp
+. el .
. \}
. \}
-. if \\n[#PRINT_STYLE]=2 \{ .ALD \\n[#EN_LEAD]u \}
+. if \\n[#PRINT_STYLE]=2 .ALD \\n[#EN_LEAD]u
. QUAD \\*[$EN_QUAD]
. chop END_NOTES
. nf
. END_NOTES
. ev
. rm END_NOTES
-. if \\n[#PRINT_STYLE]=1 \{ .vs \\n[#DOC_LEAD]u \}
+. if \\n[#PRINT_STYLE]=1 .vs \\n[#DOC_LEAD]u
. if \\n[#PRINT_STYLE]=2 \{\
-. ie \\n[#ADJ_EN_LEAD] \{\
+. ie \\n[#ADJ_EN_LEAD] \
. nr #DOC_LEAD \\n[#RESTORE_DOC_LEAD]
-. \}
-. el \{ .DOC_LEAD \\n[#RESTORE_DOC_LEAD]u \}
+. el .DOC_LEAD \\n[#RESTORE_DOC_LEAD]u
. rr #RESTORE_DOC_LEAD
. \}
-. if \\n[#COLUMNS_WERE_ON] \{ .nr #COLUMNS 1 \}
-. if \\n[#HEADER_STATE]=1 \{ .HEADERS \}
+. if \\n[#COLUMNS_WERE_ON] .nr #COLUMNS 1
+. if \\n[#HEADER_STATE]=1 .HEADERS
. if \\n[#LINENUMBERS]=2 \{\
. NUMBER_LINES RESUME
. nr #LINENUMBERS 1
@@ -14732,17 +13960,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# up the endnotes page and outputs the formatted diversion.
\# BIBLIOGRAPHY sets up the bibliography page, then awaits refer
\# commands.
-\#
+\#
\# All of the bibliography control macros have their exact
-\# counterparts in the endnotes control macros. It was tempting to do
-\# fancy stuff with aliases to avoid the repetition, but for reasons
-\# of my own sanity, and for the benefit of anyone wanting to play
-\# around with the bibliography control macros, I decided to keep them
-\# separate.
-\#
-\# Because the bibliography control macros all have endnotes
-\# equivalents, refer to the appropriate, similar endnote macro for
-\# Arguments, Function and Notes.
+\# counterparts in the endnotes control macros. See, therefore,
+\# Arguments, Functions, and Notes in the Endnotes section.
\#
\# Bibliography control macros
\#
@@ -14751,8 +13972,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.END
\#
.MAC BIBLIOGRAPHY_HDRFTR_CENTER END
-. ie '\\$1'' \{ .nr #BIB_HDRFTR_CENTER 1 \}
-. el \{ .rr #BIB_HDRFTR_CENTER \}
+. ie '\\$1'' .nr #BIB_HDRFTR_CENTER 1
+. el .rr #BIB_HDRFTR_CENTER
.END
\#
.MAC BIBLIOGRAPHY_STRING END
@@ -14764,22 +13985,22 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.END
\#
.MAC BIBLIOGRAPHY_STRING_CAPS END
-. ie '\\$1'' \{ .nr #BIB_STRING_CAPS 1 \}
-. el \{ .nr #BIB_STRING_CAPS 0 \}
+. ie '\\$1'' .nr #BIB_STRING_CAPS 1
+. el .nr #BIB_STRING_CAPS 0
.END
\#
.MAC BIBLIOGRAPHY_NO_COLUMNS END
-. ie '\\$1'' \{ .nr #BIB_NO_COLS 1 \}
-. el \{ .rr #BIB_NO_COLS \}
+. ie '\\$1'' .nr #BIB_NO_COLS 1
+. el .rr #BIB_NO_COLS
.END
\#
.MAC BIBLIOGRAPHY_NO_FIRST_PAGENUM END
-. ie '\\$1'' \{ .nr #BIB_NO_FIRST_PN 1 \}
-. el \{ .rr #BIB_NO_FIRST_PN \}
+. ie '\\$1'' .nr #BIB_NO_FIRST_PN 1
+. el .rr #BIB_NO_FIRST_PN
.END
\#
.MAC BIBLIOGRAPHY_ALLOWS_HEADERS END
-. ie '\\$1'' \{ .nr #BIB_ALLOWS_HEADERS 1 \}
+. ie '\\$1'' .nr #BIB_ALLOWS_HEADERS 1
. el \{\
. ie '\\$1'ALL' \{\
. nr #BIB_ALLOWS_HEADERS 1
@@ -14831,7 +14052,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
.END
\#
-\#
\# Style for outputting collected bibliographic references
\# -------------------------------------------------------
\# *Argument:
@@ -14856,7 +14076,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ie '\\$3'' .ds $BIB_LIST_PREFIX
. el .ds $BIB_LIST_PREFIX \\$3
. \}
-. el \{ .nr #BIB_LIST 0 \}
+. el .nr #BIB_LIST 0
.END
\#
\# Spacing between items in bibliographies
@@ -14880,9 +14100,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. substring $BIB_SPACE 0 0
. nr #BIB_SPACE \\n[#BIB_LEAD]*\\*[$BIB_SPACE]
. \}
-. el \{\
-. nr #BIB_SPACE (\\$1)
-. \}
+. el .nr #BIB_SPACE (\\$1)
.END
\#
\# Set up bibliography page
@@ -14907,27 +14125,28 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #LINENUMBERS 2
. \}
. if \\n[#HEADERS_ON]=1 \{\
-. if !\\n[#BIB_ALLOWS_HEADERS_ALL] \{ .HEADERS OFF \}
+. if !\\n[#BIB_ALLOWS_HEADERS_ALL] .HEADERS OFF
. \}
. if \\n[#HEADER_STATE]=1 \{\
-. ie \\n[#BIB_HDRFTR_CENTER]=1 \{ . \}
-. el \{ .rm $HDRFTR_CENTER \}
+. ie \\n[#BIB_HDRFTR_CENTER]=1 .
+. el .rm $HDRFTR_CENTER
. \}
. ie !\\n[#SUSPEND_PAGINATION] \{\
. if \\n[#PAGINATE]=1 \{\
. if \\n[#PAGE_NUM_V_POS]=1 \{\
. PAGENUM_STYLE \\*[$BIB_PN_STYLE]
-. if \\n[#BIB_FIRST_PN] \{ .PAGENUMBER \\n[#BIB_FIRST_PN]-1 \}
-. if r#BIB_NO_FIRST_PN \{ .nr #PAGINATE 0 \}
+. if \\n[#BIB_FIRST_PN] .PAGENUMBER \\n[#BIB_FIRST_PN]-1
+. if r #BIB_NO_FIRST_PN .nr #PAGINATE 0
. \}
. \}
. \}
. el \{\
-. ie \\n[#PAGE_NUM_V_POS]=2 \{ .nr #PAGINATE 1 \}
-. el \{ .nr #PAGINATE 0 \}
+. ie \\n[#PAGE_NUM_V_POS]=2 .nr #PAGINATE 1
+. el .nr #PAGINATE 0
. \}
. if \\n[#FOOTERS_ON]=1 \{\
-. if !'\\*[$HDRFTR_CENTER_OLD]'' .ds $HDRFTR_CENTER \\*[$HDRFTR_CENTER_OLD]
+. if !'\\*[$HDRFTR_CENTER_OLD]'' \
+. ds $HDRFTR_CENTER \\*[$HDRFTR_CENTER_OLD]
. \}
. BIBLIOGRAPHY_LEAD \\*[$BIB_LEAD] \\*[$ADJUST_BIB_LEAD]
. DOC_LEAD \\n[#BIB_LEAD]u
@@ -14939,7 +14158,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. ie !\\n[#SUSPEND_PAGINATION] \{\
. if \\n[#PAGE_NUM_V_POS]=1 \{\
-. if r#BIB_NO_FIRST_PN \{\
+. if r #BIB_NO_FIRST_PN \{\
. if \\n[#PAGINATION_STATE]=1 \{\
. nr #PAGINATE 1
. \}
@@ -14947,74 +14166,40 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. \}
. el \{\
-. if \\n[#PAGE_NUM_V_POS]=2 \{ .nr #PAGINATE 0 \}
+. if \\n[#PAGE_NUM_V_POS]=2 .nr #PAGINATE 0
. \}
. rr #PAGINATION_STATE
. PAGENUM_STYLE \\*[$BIB_PN_STYLE]
-. if \\n[#BIB_FIRST_PN] \{ .PAGENUMBER \\n[#BIB_FIRST_PN] \}
+. if \\n[#BIB_FIRST_PN] .PAGENUMBER \\n[#BIB_FIRST_PN]
. if \\n[#HEADER_STATE]=1 \{\
-. if \\n[#BIB_ALLOWS_HEADERS] \{ .HEADERS \}
+. if \\n[#BIB_ALLOWS_HEADERS] .HEADERS
. \}
.\" Collect bibliography title string for TOC
. nr #TOC_ENTRY_PN \\n%+\\n[#PAGE_NUM_ADJ]
. af #TOC_ENTRY_PN \\g[#PAGENUMBER]
. ds $TOC_TITLE_ITEM \\*[$BIB_STRING]\\|
-. ev TOC_EV
-. da TOC_ENTRIES
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. \}
-. if \\n[#PRINT_STYLE]=2 \{\
-\!. FAMILY \\*[$TOC_TITLE_FAM]
-\!. FT \\*[$TOC_TITLE_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE_CHANGE]
-. \}
-\!. TRAP OFF
-\!. PAD_MARKER ^
-. ie \\n[#PRINT_STYLE]=1 \{\
-\!. PAD "\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN_TYPEWRITE]"
-. \}
-. el \{\
-\!. PAD "\\h'\\n[#TOC_TITLE_INDENT]u'\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN]"
-. \}
-\!. PAD_MARKER #
-\!. EOL
-\!. ST 100 L
-\!. ST 101 R
-. if \\n[#PRINT_STYLE]=2 \{\
-\!. FAMILY \\*[$TOC_PN_FAM]
-\!. FT \\*[$TOC_PN_FT]
-\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
-. \}
-\!. TAB 100
-\!. PRINT \\*[LEADER]
-\!. TN
-\!. TRAP
-\!. PRINT \\n[#TOC_ENTRY_PN]
-\!. TQ
-. di
-. ev
+. PDF_BOOKMARK 1 \\*[$BIB_STRING]
+. TITLE_TO_TOC
.\" End collection of bibliography title string for TOC
.\" Process bibliography
-. if \\n[#PRINT_STYLE]=1 \{ .vs \\n[#BIB_LEAD]u \}
+. if \\n[#PRINT_STYLE]=1 .vs \\n[#BIB_LEAD]u
. if \\n[#PRINT_STYLE]=2 \{\
. if \\n[#BIB_NO_COLS] \{\
-. if \\n[#COLUMNS] \{ .nr #COLUMNS_WERE_ON 1 \}
+. if \\n[#COLUMNS] .nr #COLUMNS_WERE_ON 1
. nr #COLUMNS 0
. \}
. nr #RESTORE_DOC_LEAD \\n[#DOC_LEAD]
-. ie \\n[#ADJ_BIB_LEAD] \{\
-. nr #DOC_LEAD \\n[#BIB_LEAD]
-. \}
-. el \{ .DOC_LEAD \\n[#BIB_LEAD]u \}
+. ie \\n[#ADJ_BIB_LEAD] .nr #DOC_LEAD \\n[#BIB_LEAD]
+. el .DOC_LEAD \\n[#BIB_LEAD]u
. \}
. PRINT \&
-. ie r#BIB_STRING_ADVANCE \{ .sp |\\n[#BIB_STRING_ADVANCE]u \}
-. el \{ .sp |\\n[#T_MARGIN]u \}
+. ie r#BIB_STRING_ADVANCE .sp |\\n[#BIB_STRING_ADVANCE]u
+. el .sp |\\n[#T_MARGIN]u
. mk ec
. if \\n[#SLANT_ON] \{\
\*[SLANTX]\c
. \}
+. sp
. if !'\\*[$BIB_STRING]'' \{\
. if \\n[#PRINT_STYLE]=1 \{\
. TYPEWRITER
@@ -15022,81 +14207,64 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. if \\n[#PRINT_STYLE]=2 \{\
. LL \\n[#DOC_L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
. if \\n[#COLUMNS] \{\
-. ie \\n[#BIB_NO_COLS] \{ .LL \\n[#DOC_L_LENGTH]u \}
-. el \{ .LL \\n[#COL_L_LENGTH]u \}
-. ta \\n(.lu
+. ie \\n[#BIB_NO_COLS] .LL \\n[#DOC_L_LENGTH]u
+. el .LL \\n[#COL_L_LENGTH]u
+. ta \\n[.l]u
. \}
. FAMILY \\*[$BIB_STRING_FAM]
. FT \\*[$BIB_STRING_FT]
. PT_SIZE \\n[#BIB_PS]u\\*[$BIB_STRING_SIZE_CHANGE]
. vs \\n[#BIB_LEAD]u
. \}
-. if '\\*[$BIB_STRING_QUAD]'L' \{ .LEFT \}
-. if '\\*[$BIB_STRING_QUAD]'LEFT' \{ .LEFT \}
-. if '\\*[$BIB_STRING_QUAD]'C' \{ .CENTER \}
-. if '\\*[$BIB_STRING_QUAD]'CENTER' \{ .CENTER \}
-. if '\\*[$BIB_STRING_QUAD]'CENTRE' \{ .CENTER \}
-. if '\\*[$BIB_STRING_QUAD]'R' \{ .RIGHT \}
-. if '\\*[$BIB_STRING_QUAD]'RIGHT' \{ .RIGHT \}
+. if '\\*[$BIB_STRING_QUAD]'L' .LEFT
+. if '\\*[$BIB_STRING_QUAD]'LEFT' .LEFT
+. if '\\*[$BIB_STRING_QUAD]'C' .CENTER
+. if '\\*[$BIB_STRING_QUAD]'CENTER' .CENTER
+. if '\\*[$BIB_STRING_QUAD]'CENTRE' .CENTER
+. if '\\*[$BIB_STRING_QUAD]'R' .RIGHT
+. if '\\*[$BIB_STRING_QUAD]'RIGHT' .RIGHT
. EOL
-. if \\n[#BIB_STRING_CAPS] \{ .CAPS \}
+. if \\n[#BIB_STRING_CAPS] .CAPS
. ie \\n[#BIB_STRING_UNDERLINE] \{\
. nr #FROM_BIB_STRING 1
-. ie \\n[#BIB_STRING_UNDERLINE]=2 \{\
+. ie \\n[#BIB_STRING_UNDERLINE]=2 \
. UNDERSCORE2 "\\*[$BIB_STRING]"
-. \}
-. el \{\
+. el \
. UNDERSCORE "\\*[$BIB_STRING]"
-. \}
. rr #FROM_BIB_STRING
. \}
-. el \{\
-. PRINT "\\*[$BIB_STRING]"
-. \}
+. el .PRINT "\\*[$BIB_STRING]"
. \}
. CAPS OFF
. FAMILY \\*[$BIB_FAMILY]
. FT \\*[$BIB_FT]
. PT_SIZE -\\*[$BIB_STRING_SIZE_CHANGE]
. if \\n[#PRINT_STYLE]=1 \{\
-. ie \\n[#SINGLE_SPACE]=1 \{\
-. ALD \\n[#BIB_LEAD]*3u
-. \}
+. ie \\n[#SINGLE_SPACE]=1 .ALD \\n[#BIB_LEAD]*3u
. el \{\
-. ie \\n[#BIB_SINGLESPACE]=1 \{\
-. ALD \\n[#BIB_LEAD]u*3u
-. \}
-. el \{\
-. ALD \\n[#BIB_LEAD]u
-. \}
+. ie \\n[#BIB_SINGLESPACE]=1 .ALD \\n[#BIB_LEAD]u*3u
+. el .ALD \\n[#BIB_LEAD]u
. \}
. \}
-. if \\n[#PRINT_STYLE]=2 \{ .ALD \\n[#BIB_LEAD]u*2u \}
+. if \\n[#PRINT_STYLE]=2 .ALD \\n[#BIB_LEAD]u*2u
. QUAD \\*[$BIB_QUAD]
. if \\n[#PRINT_STYLE]=1 \{\
-. ie \\n[#SINGLE_SPACE]=1 \{\
-. vs \\n[#BIB_LEAD]u
-. \}
+. ie \\n[#SINGLE_SPACE]=1 .vs \\n[#BIB_LEAD]u
. el \{\
-. ie \\n[#BIB_SINGLESPACE]=1 \{\
-. vs \\n[#BIB_LEAD]u
-. \}
-. el \{\
-. vs \\n[#BIB_LEAD]u
-. \}
+. ie \\n[#BIB_SINGLESPACE]=1 .vs \\n[#BIB_LEAD]u
+. el .vs \\n[#BIB_LEAD]u
. \}
. \}
. if \\n[#PRINT_STYLE]=2 \{\
-. ie \\n[#ADJ_BIB_LEAD] \{\
+. ie \\n[#ADJ_BIB_LEAD] \
. nr #DOC_LEAD \\n[#RESTORE_DOC_LEAD]
-. \}
-. el \{ .DOC_LEAD \\n[#RESTORE_DOC_LEAD]u \}
+. el .DOC_LEAD \\n[#RESTORE_DOC_LEAD]u
. rr #RESTORE_DOC_LEAD
. \}
-. if \\n[#COLUMNS_WERE_ON] \{ .nr #COLUMNS 1 \}
-. if \\n[#HEADER_STATE]=1 \{ .HEADERS \}
+. if \\n[#COLUMNS_WERE_ON] .nr #COLUMNS 1
+. if \\n[#HEADER_STATE]=1 .HEADERS
. if \\n[#LINENUMBERS]=2 \{\
. NUMBER_LINES RESUME
. nr #LINENUMBERS 1
@@ -15120,41 +14288,174 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\#
\# Strings to allocate space for leaders and entry page numbers
\#
-.ds $TOC_PN \\*[ST100]\\F[\\*[$TOC_PN_FAM]]\\f[\\*[$TOC_PN_FT]]\\s[\\n[#TOC_PS]u]^\\*[ST100X]\\*[ST101]\\s[\\*[$TOC_PN_SIZE_CHANGE]]\\|\\h'\\w'0'u*\\n[#TOC_PN_PADDING]u'\*[ST101X]
-.ds $TOC_PN_TYPEWRITE \\*[ST100]^\\*[ST100X]\\*[ST101]\\|\\h'\\w'0'u*\\n[#TOC_PN_PADDING]u'\\*[ST101X]
+.ds $TOC_PN \\*[ST100]\F[\\*[$TOC_PN_FAM]]\f[\\*[$TOC_PN_FT]]\
+\s[\\n[#TOC_PS]u]^\\*[ST100X]\\*[ST101]\s[\\*[$TOC_PN_SIZE_CHANGE]]\|\
+\h'\w'0'u*\\n[#TOC_PN_PADDING]u'\*[ST101X]
\#
-\# TOC ENTRIES PAGE NUMBERS PADDING
-\# --------------------------------
-\# *Argument:
-\# <number of placeholders for toc entries page numbers>
-\# *Function:
-\# Creates or modifies register #TOC_PN_PADDING.
-\# *Notes:
-\# "Placeholders" is the maximum number of digits in a page
-\# number numeral.
+.ds $TOC_PN_TYPEWRITE \\*[ST100]^\\*[ST100X]\\*[ST101]\|\
+\h'\w'0'u*\\n[#TOC_PN_PADDING]u'\\*[ST101X]
\#
-\# Default is 3.
+\# TOC collector
\#
-.MAC TOC_PADDING END
-. nr #TOC_PN_PADDING \\$1
+.MAC TITLE_TO_TOC END
+. if !'\\n[.ev]'TOC_EV' .ev TOC_EV
+. nr #TOC_CH_NUM_INDENT \w'\\*[$TOC_CH_NUM]'
+. da TOC_ENTRIES
+\!. ie \\\\n[#SKIP_ENTRY]=1 \{\
+. rr #SKIP_ENTRY
+\!. \}
+\!. el \{\
+. br
+. if \\n[#PRINT_STYLE]=1 \{\
+\!. fam \\*[$TYPEWRITER_FAM]
+\!. ft R
+\!. ps \\*[$TYPEWRITER_PS]
+. ds _TYPEWRITE _TYPEWRITE
+. \}
+. if \\n[#PRINT_STYLE]=2 \{\
+. ie '\\$0'HD_TO_TOC' \{\
+\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_HEAD_\\n[#LEVEL]_SIZE]
+. \}
+. el \{\
+\!. FAMILY \\*[$TOC_TITLE_FAM]
+\!. FT \\*[$TOC_TITLE_FT]
+\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE]
+. \}
+. \}
+. if \\n[#PRINT_STYLE]=2 \{\
+. rm _TYPEWRITE
+. if \\n[#SPACE_TOC_ITEMS] \{\
+. if \\n[#POST_TOP]=1 \{\
+. ie !\\n[#LEVEL]=\\n[#LAST_LEVEL] \{\
+. ie \\n[#LEVEL]>\\n[#LAST_LEVEL] \!.sp .2v
+. el \!.sp .4v
+. \}
+. el \{\
+. if \\n[#COLLATED_DOC] \
+. if '\\$0'TITLE_TO_TOC' \!.sp .4v
+. \}
+. \}
+. \}
+. \}
+\!. ne 1
+\!. PAD_MARKER ^
+. if !'\\$0'HD_TO_TOC' \{\
+\!. if \\n[#TOC_TITLE_CAPS]=1 .CAPS
+. \}
+. if '\\$0'HD_TO_TOC' \{\
+. nr #POST_TOP 1
+\!. if \\n[#TOC_HEAD_\\n[#LEVEL]_CAPS]=1 .CAPS
+. \}
+\!. vpt 0
+. ie '\\$0'HD_TO_TOC' \{\
+\!. PAD \
+"\\f[\\*[$TOC_HEAD_\\n[#LEVEL]_FAM]\
+\\*[$TOC_HEAD_\\n[#LEVEL]_FT]]\
+\h'\\\\n[#TOC_INDENT_ADJ]u'\h'\\n[#TOC_HEAD_\\n[#LEVEL]_INDENT]u'\
+\\*[$TOC_HD_NUM]\\*[$TOC_HEAD_\\n[#LEVEL]_ITEM]\\*[$TOC_PN\\*[_TYPEWRITE]]" \
+"\\*[PDFBOOKMARK.NAME]"
+. \}
+. el \{\
+\!. PAD \
+"\\f[\\*[$TOC_TITLE_FAM]\\*[$TOC_TITLE_FT]]\
+\h'\\n[#TOC_TITLE_INDENT]u'\\*[$TOC_TITLE_ITEM]\\*[$TOC_PN\\*[_TYPEWRITE]]" \
+"\\*[PDFBOOKMARK.NAME]"
+. \}
+. if '\\$0'HD_TO_TOC' \{\
+\!. if \\n[#TOC_HEAD_\\n[#LEVEL]_CAPS]=1 .CAPS OFF
+. \}
+. if !'\\$0'HD_TO_TOC' \{\
+\!. if \\n[#TOC_TITLE_CAPS]=1 .CAPS OFF
+. \}
+\!. PAD_MARKER #
+\!. EOL
+\!. ST 100 L
+\!. ST 101 R
+. if \\n[#PRINT_STYLE]=2 \{\
+\!. FAMILY \\*[$TOC_PN_FAM]
+\!. FT \\*[$TOC_PN_FT]
+\!. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
+. \}
+\!. TAB 100
+\!. PRINT \\*[LEADER]\c
+\!. TN
+\!. PRINT \\n[#TOC_ENTRY_PN]
+\!. TQ
+\!. vpt
+\!. \}
+. da
+. ev
.END
\#
+.ALIAS HD_TO_TOC TITLE_TO_TOC
\#
-\# PAGINATE TOC
-\# ------------
+\# Control macros for toc
+\# ----------------------
+\#
+\# TOC TITLE STYLE
+\# ---------------
+\# *Arguments:
+\# FAMILY <family>
+\# FONT <font>
+\# SIZE <+|-n>
+\# COLOR <color>
+\# CAPS
+\# INDENT
+\# *Function:
+\# Assigns complete style parameters to TITLEs (doc titles,
+\# chapter titles, etc) in the TOC.
+\# *Notes:
+\# TITLEs are not headings, therefore they require their own style
+\# macro. Otherwise, the same as TOC_ENTRY_STYLE.
+\#
+.MAC TOC_TITLE_STYLE END
+. nr #ARG_NUM 0 1
+. nr #ATTRIB \\n[#NUM_ARGS]
+. while \\n+[#ARG_NUM]<=\\n[#ATTRIB] \{\
+. if '\\$1'FAMILY' \{\
+. shift
+. ds $TOC_TITLE_FAM \\$1
+. shift
+. \}
+. if '\\$1'FONT' \{\
+. shift
+. ds $TOC_TITLE_FT \\$1
+. shift
+. \}
+. if '\\$1'SIZE' \{\
+. shift
+. ds $TOC_TITLE_SIZE \\$1
+. shift
+. \}
+. if '\\$1'CAPS' \{\
+. nr #TOC_TITLE_CAPS 1
+. shift
+. \}
+. if '\\$1'NO_CAPS' \{\
+. rr #TOC_TITLE_CAPS
+. shift
+. \}
+. if '\\$1'INDENT' \{\
+. shift
+. nr #TOC_TITLE_INDENT \\$1
+. shift
+. \}
+. \}
+.END
+\#
+\# TOC HEADER STRING
+\# -----------------
\# *Argument:
-\# <none> | <anything>
+\# <string for "doc header" of first toc page>
\# *Function:
-\# Creates or removes register #PAGINATE_TOC.
+\# Creates or modifies string $TOC_HEADER_STRING
\# *Notes:
-\# Default is to paginate toc.
+\# Default is "Contents".
\#
-.MAC PAGINATE_TOC END
-. ie '\\$1'' \{ .nr #PAGINATE_TOC 1 \}
-. el \{ .nr #PAGINATE_TOC 0 \}
+.MAC TOC_HEADER_STRING END
+. ds $TOC_HEADER_STRING \\$1
.END
\#
-\#
\# TOC POINT SIZE
\# --------------
\# *Argument:
@@ -15174,7 +14475,35 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #TOC_PS (p;\\$1)
.END
\#
+\# TOC ENTRIES PAGE NUMBERS PADDING
+\# --------------------------------
+\# *Argument:
+\# <number of placeholders for toc entries page numbers>
+\# *Function:
+\# Creates or modifies register #TOC_PN_PADDING.
+\# *Notes:
+\# "Placeholders" is the maximum number of digits in a page
+\# number numeral.
+\#
+\# Default is 3.
+\#
+.MAC TOC_PADDING END
+. nr #TOC_PN_PADDING \\$1
+.END
+\#
+\# PAGINATE TOC
+\# ------------
+\# *Argument:
+\# <none> | <anything>
+\# *Function:
+\# Creates or removes register #PAGINATE_TOC.
+\# *Notes:
+\# Default is to paginate toc.
\#
+.MAC PAGINATE_TOC END
+. ie '\\$1'' .nr #PAGINATE_TOC 1
+. el .nr #PAGINATE_TOC 0
+.END
\#
\# TOC PAGES PAGE-NUMBERING STYLE
\# ------------------------------
@@ -15192,7 +14521,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ds $TOC_PN_STYLE \\$1
.END
\#
-\#
\# TOC RECTO_VERSO SWITCH
\# ----------------------
\# *Argument:
@@ -15204,50 +14532,56 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# the first toc page happens to fall the wrong way
\#
.MAC TOC_RV_SWITCH END
-. ie '\\$1'' \{ .nr #TOC_RV_SWITCH 1 \}
-. el \{ .rr #TOC_RV_SWITCH \}
+. ie '\\$1'' .nr #TOC_RV_SWITCH 1
+. el .rr #TOC_RV_SWITCH
.END
\#
-\# - for TOC "doc header" (i.e. "Contents")
-\#
-\# TOC HEADER STRING
+\# TOC ENTRY SPACING
\# -----------------
-\# *Argument:
-\# <string for "doc header" of first toc page>
+\# *Arguments:
+\# <none> | <anything>
\# *Function:
-\# Creates or modifies string $TOC_HEADER_STRING
-\# *Notes:
-\# Default is "Contents".
+\# Toggles whether a small amount of space is inserted between TOC
+\# entries for greater legibility.
\#
-.MAC TOC_HEADER_STRING END
-. ds $TOC_HEADER_STRING \\$1
+.MAC SPACE_TOC_ITEMS END
+. ie !'\\$1'' .rr #SPACE_TOC_ITEMS
+. el .nr #SPACE_TOC_ITEMS 1
.END
\#
-\# - for TOC entries page number numerals
-\#
-\# Control macros for toc doc titles, heads, subheads and paraheads
-\# ----------------------------------------------------------------
+\# NUMBERING OF TOC ENTRIES
+\# ------------------------
+\# *Arguments:
+\# FULL | TRUNCATE | NONE
+\# *Function:
+\# Determines how, or whether, to prepend heading numbers to TOC
+\# entries.
+\# *Notes:
+\# FULL means the complete numbering string (default).
\#
-\# All these control macros behave the same way, setting the family,
-\# font, point size and indent from the left margin of the different
-\# kinds of entries that can appear in the toc. The way they
-\# operate is identical to all other _FAMILY, _FONT and _SIZE
-\# control macros. _INDENT takes an absolute value.
-\# TOC_APPENDS_AUTHORS is unique in this section.
+\# TRUNCATE means prepend a single digit sufficient to identify
+\# an entry's place in the numbering scheme with reference to the
+\# level above it. Thus, if a HEADING 1 is the second HEADING 1
+\# and therefore numbered "2.", a HEADING 2 beneath it (in the TOC)
+\# will have only "1." prepended to the entry; TOC indenting makes it
+\# evident under which level the HEADING 2 belongs.
\#
-\# - for title entries
+\# Note that TRUNCATE also removes chapter numbers, if
+\# PREFIX_CHAPTER_NUMBER is on.
\#
-.MAC TOC_TITLE_INDENT END
-. nr #TOC_TITLE_INDENT (\\$1)
+.MAC TOC_ENTRY_NUMBERS END
+. if '\\$1'TRUNCATE' .nr #TRUNC_TOC_HD_NUM 1
+. if '\\$1'FULL' .nr #TRUNC_TOC_HD_NUM 0
+. if '\\$1'NONE' .nr #TOC_NO_HD_NUM 1
.END
\#
+\# User defined TITLE entry string
\#
.MAC TOC_TITLE_ENTRY END
. nr #USER_SET_TITLE_ITEM 1
. ds $USER_SET_TITLE_ITEM \\$1
.END
\#
-\#
\# APPEND AUTHOR(S) TO TOC DOC TITLE ENTRIES
\# -----------------------------------------
\# *Argument:
@@ -15267,36 +14601,36 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\#
.MAC TOC_APPENDS_AUTHOR END
. nr #TOC_AUTHORS 1
-. if !'\\$1'' \{\
-. ds $TOC_AUTHORS \\$1
-. \}
-.END
-\#
-\# - for head entries
-\#
-.MAC TOC_HEAD_INDENT END
-. nr #TOC_HEAD_INDENT (\\$1)
-.END
-\#
-\# - for subhead entries
-\#
-.MAC TOC_SUBHEAD_INDENT END
-. nr #TOC_SH_INDENT (\\$1)
-.END
-\#
-\# - for parahead entries
-\#
-.MAC TOC_PARAHEAD_INDENT END
-. nr #TOC_PH_INDENT (\\$1)
+. if !'\\$1'' .ds $TOC_AUTHORS \\$1
.END
\#
+\# TABLE OF CONTENTS
+\# -----------------
+\# *Arguments:
+\# none
+\# *Function:
+\# Takes care of the administrivia of setting up the TOC as if
+\# it's a collated doc, then outputs the formatted TOC_ENTRIES
+\# diversion.
\#
.MAC TOC END
+. char \[leader] " .
+. LEADER_CHARACTER \[leader]
+. ie \\n[#COLLATED_DOC] \{\
+. nr #TOC_INDENT_ADJ 1.5m
+. if \\n[#PREFIX_CH_NUM] .nr #TOC_INDENT_ADJ \\n[#TOC_CH_NUM_INDENT]
+. \}
+. el \{\
+. nr #SKIP_ENTRY 1
+. nr #TOC_INDENT_ADJ 0
+. \}
+. nr #TOC 1
+. nr TOC.RELOCATE 0
. if \\n[#LINENUMBERS]=1 \{\
. NUMBER_LINES OFF
. nr #LINENUMBERS 2
. \}
-. if !r#PAGINATE_TOC \{ .PAGINATE_TOC \}
+. if !r #PAGINATE_TOC .PAGINATE_TOC
. nr #TOC_FIRST_PAGE 1
. if \\n[#FINIS] \{\
. if \\n[#FOOTERS_WERE_ON] \{\
@@ -15305,26 +14639,22 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. if \\n[#FOOTERS_ON]=1 \{\
. if !'\\*[$HDRFTR_CENTER_OLD]'' .ds $HDRFTR_CENTER \\*[$HDRFTR_CENTER_OLD]
-. ie \\n[#PAGINATE_TOC]=1 \{ .PAGINATE \}
-. el \{ .PAGINATION OFF \}
+. ie \\n[#PAGINATE_TOC]=1 .PAGINATE
+. el .PAGINATION OFF
. \}
-. if \\n[#FOOTERS_WERE_ON] \{ .FOOTERS OFF \} \" But have to turn FOOTERS off again so they don't print when FINIS was called
+. if \\n[#FOOTERS_WERE_ON] .FOOTERS OFF \" But have to turn FOOTERS off again so they don't print when FINIS was called
+. rr #COLUMNS
. COLLATE
. if \\n[#PRINT_STYLE]=1 \{\
. rr #IGNORE
-. DOC_LEAD 24 ADJUST
+. LS 24
. nr #IGNORE 1
. \}
. if \\n[#PRINT_STYLE]=2 \{\
-. ie r#ADJ_TOC_LEAD \{\
-. nr #NO_TRAP_RESET 1
-. DOC_LEAD \\n[#TOC_LEAD]u ADJUST
-. rr #NO_TRAP_RESET
-. \}
-. el \{ .DOC_LEAD \\n[#TOC_LEAD]u \}
+. LS \\n[#TOC_LEAD]u
. \}
. if \\n[#FINIS] \{\
-. if \\n[#FOOTERS_WERE_ON] \{ .FOOTERS \} \" Finally, turn footers on if they were on
+. if \\n[#FOOTERS_WERE_ON] .FOOTERS \" Finally, turn footers on if they were on
. rr #FOOTERS_WERE_ON
. if \\n[#PAGINATION_WAS_ON] \{\
. nr #PAGINATE 1
@@ -15332,91 +14662,56 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. rr #FINIS
. \}
-. ie \\n[#PAGINATE_TOC]=1 \{ .PAGINATE \}
-. el \{ .PAGINATION OFF \}
+. ie \\n[#PAGINATE_TOC]=1 .PAGINATE
+. el .PAGINATION OFF
. if \\n[#FOOTERS_ON]=1 \{\
. ds $HDRFTR_CENTER \\*[$HDRFTR_CENTER_NEW]
. rm $HDRFTR_CENTER_OLD
. rm $HDRFTR_CENTER_NEW
. \}
. rr #COLLATED_DOC
-. DOCHEADER OFF
+. DOCHEADER OFF \\n[#T_MARGIN]u-\\n[#DOC_LEAD]
. PAGENUMBER 1
-. if \\n[#LINENUMBERS]=2 \{ .nr #LINENUMBERS 3 \}
+. if \\n[#LINENUMBERS]=2 .nr #LINENUMBERS 3
+. L_MARGIN \\n[#DOC_L_MARGIN]u
+. LL \\n[#DOC_L_LENGTH]u
. START
-. PP
+. nop
. nr #COLUMNS 0
-. sp |\\n[#T_MARGIN]u-\\n[#DOC_LEAD]u
. if \\n[#SLANT_ON] \{\
\*[SLANTX]\c
. \}
. DOC_LINE_LENGTH \\n[#DOC_L_LENGTH]u
-. QUAD \\*[$TOC_HEADER_QUAD]
+. \\*[$TOC_HEADER_QUAD]
. PAGENUM_STYLE \\*[$TOC_PN_STYLE]
-. if \\n[#PRINT_STYLE]=1 \{\
-. TYPEWRITER
-. \}
+. PDF_BOOKMARK 1 \\*[$TOC_HEADER_STRING]
+. if \\n[#PRINT_STYLE]=1 .TYPEWRITER
. if \\n[#PRINT_STYLE]=2 \{\
. FAMILY \\*[$TOC_HEADER_FAM]
. FT \\*[$TOC_HEADER_FT]
. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_HEADER_SIZE_CHANGE]
. \}
+. nr #TOC_PS
. ie \\n[#PRINT_STYLE]=1 \{\
. CAPS
. UNDERLINE
-. PRINT "\\*[$TOC_HEADER_STRING]"
+. PRINT \\*[$TOC_HEADER_STRING]
. UNDERLINE OFF
. CAPS OFF
. \}
-. el \{\
-. PRINT "\\*[$TOC_HEADER_STRING]"
-. \}
-. LEFT
-. SP
-.\" In collated docs, this bit inserts the first doc's title
-.\" underneath the TOC header, before the TOC_ENTRIES diversion
-.\" gets output.
-. nf
-. if d$FIRST_DOC_TITLE \{\
-. nr #RESTORE_TOC_PN_PADDING \\n[#TOC_PN_PADDING]
-. TOC_PADDING \\n[#FIRST_DOC_TOC_PN_PADDING]
-. if \\n[#PRINT_STYLE]=2 \{\
-. FAMILY \\*[$TOC_TITLE_FAM]
-. FT \\*[$TOC_TITLE_FT]
-. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_TITLE_SIZE_CHANGE]
-. \}
-. PAD_MARKER ^
-. ie \\n[#PRINT_STYLE]=1 \{\
-. PAD "\\*[$FIRST_DOC_TITLE]\\*[$TOC_PN_TYPEWRITE]"
-. \}
-. el \{\
-. PAD "\\h'\\n[#TOC_TITLE_INDENT]u'\\*[$FIRST_DOC_TITLE]\\*[$TOC_PN]"
-. \}
-. PAD_MARKER #
-. EOL
-. ST 100 L
-. ST 101 R
-. if \\n[#PRINT_STYLE]=2 \{\
-. FAMILY \\*[$TOC_PN_FAM]
-. FT \\*[$TOC_PN_FT]
-. PT_SIZE \\n[#TOC_PS]u\\*[$TOC_PN_SIZE_CHANGE]
-. \}
-. TAB 100
-. PRINT \\*[LEADER]
-. TN
-. PRINT \\n[#FIRST_DOC_TITLE_PN]
-. TQ
+. el .PRINT \\*[$TOC_HEADER_STRING]
+. if !\\n[#PRINT_STYLE]=1 \{\
+. sp
. \}
-. TOC_PADDING \\n[#RESTORE_TOC_PN_PADDING]
. nf
. TOC_ENTRIES
-. br
. rr #TOC
. if \\n[#LINENUMBERS]=3 \{\
. NUMBER_LINES RESUME
. nr #LINENUMBERS 1
. nn 1
. \}
+. pdfsync
.END
\#
\# ====================================================================
@@ -15434,7 +14729,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# COLUMNS, if used, s/b the last macro invoked before START.
\#
.MAC COLUMNS END
-. if \\n[#IGNORE_COLUMNS]=1 \{ .return \}
+. if \\n[#IGNORE_COLUMNS]=1 .return
. nr #COLUMNS 1
. nr #NUM_COLS \\$1
. nr #GUTTER (\\$2)
@@ -15444,15 +14739,14 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. while !\\n[#COL_NUM]=\\n[#NUM_COLS] \{\
. nr #COL_\\n+[#COL_NUM]_L_MARGIN \\n[#L_MARGIN]+\\n[#COL_TOTAL]
. nr #COL_TOTAL \\n+[#COL_TOTAL]
-.\}
+. \}
. if \\n[#NUM_COLS]=1 \{\
-. if !\\n[#COLLATE]=1 \{ .MN_INIT \}
+. if !\\n[#COLLATE]=1 .MN_INIT
. \}
. rr #COL_TOTAL
. rr #COL_NUM
.END
\#
-\#
\# NEXT COLUMN
\# -----------
\# *Arguments:
@@ -15465,15 +14759,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.MAC COL_NEXT END
. if \\n[#COLUMNS] \{\
. nr #COL_NEXT 1
-. ie '\\$0'COL_NEXT' \{ .br \}
+. ie '\\$0'COL_NEXT' .br
. el \{\
. brp
. RLD 1v
. \}
-. ie \\n[#COL_NUM]=\\n[#NUM_COLS] \{\
-. bp
-. \}
-. el \{ .FOOTER \}
+. ie \\n[#COL_NUM]=\\n[#NUM_COLS] .bp
+. el .FOOTER
. \}
.END
\#
@@ -15484,7 +14776,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# LIST
\# ----
\# *Arguments:
-\# [ BULLET | DASH | DIGIT | alpha | ALPHA | roman | ROMAN | USER ] [ <separator> | NONE ] [ <prefix> ] [ <anything> ]
+\# [ BULLET | DASH | DIGIT | alpha | ALPHA | roman | ROMAN | USER ] \
+\# [ <separator> | NONE ] [ <prefix> ] [ <anything> ]
\# *Function:
\# Stores indent information in effect prior to invocation and
\# initializes a list with the supplied enumerator (and separator).
@@ -15514,16 +14807,16 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. LIST OFF
. return
. \}
-. tm1 "[mom]: You must append a number to the \\$1 argument to LIST at line \\n(.c.
+. tm1 "[mom]: You must append a number to the \\$1 argument to LIST at line \\n[.c].
. tm1 " The number should be the total number of items in this list.
. tm1 " See the documentation.
-. ab Aborting LIST
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
. ds $ROMAN_WIDTH \\$1
. substring $ROMAN_WIDTH 1
. while !\B'\\*[$ROMAN_WIDTH]' \{\
. substring $ROMAN_WIDTH 1
-.\}
+. \}
. length #ROMAN_LENGTH \\*[$ROMAN_WIDTH]
. ds $LIST_ARG_1 \\$1
. substring $LIST_ARG_1 0 -(\\n[#ROMAN_LENGTH]+1)
@@ -15534,7 +14827,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if !r#DEPTH \{\
. nr #STORED_HL_INDENT \\n[#HL_INDENT]
. nr #STORED_T_INDENT \\n[#T_INDENT]
-. nr #CURRENT_L_LENGTH \\n(.l
+. nr #CURRENT_L_LENGTH \\n[.l]
. nr #DEPTH 0 1
. if \\n[#INDENT_ACTIVE]=1 \{\
. if \\n[#INDENT_LEFT_ACTIVE]=1 \{\
@@ -15545,41 +14838,41 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #STORED_BL_INDENT \\n[#BL_INDENT]
. nr #STORED_BR_INDENT \\n[#BR_INDENT]
. IBX
-. nr #ORIG_L_LENGTH \\n(.l
+. nr #ORIG_L_LENGTH \\n[.l]
. IB
. nr #RESTORE_PREV_INDENT 2
. \}
. if \\n[#INDENT_RIGHT_ACTIVE]=1 \{\
. nr #STORED_R_INDENT \\n[#R_INDENT]
. IRX
-. nr #ORIG_L_LENGTH \\n(.l
+. nr #ORIG_L_LENGTH \\n[.l]
. IR
. nr #RESTORE_PREV_INDENT 3
-. if \\n[#INDENT_LEFT_ACTIVE]=1 \{ .nr #RESTORE_PREV_INDENT 4 \}
+. if \\n[#INDENT_LEFT_ACTIVE]=1 .nr #RESTORE_PREV_INDENT 4
. \}
. \}
. \}
. if \\n[#NUM_ARGS]=0 \{\
. nr #ARGS_TO_LIST 1 \" So default behaves as if LIST BULLET
-. ds $ENUMERATOR\\n+[#DEPTH] \(bu
+. ds $ENUMERATOR\\n+[#DEPTH] \[bu]
. ds $ENUMERATOR_TYPE\\n[#DEPTH] other
. ds $SEPARATOR
. \}
. if \\n[#NUM_ARGS]>0 \{\
. rr #ARGS_TO_LIST \" Clear this before processing arg 1.
-. if '\\*[$LIST_ARG_1]'DASH' \{\
+. if '\\*[$LIST_ARG_1]'DASH' \{\
. nr #ARGS_TO_LIST 1
-. ds $ENUMERATOR\\n+[#DEPTH] \(en
+. ds $ENUMERATOR\\n+[#DEPTH] \[en]
. ds $ENUMERATOR_TYPE\\n[#DEPTH] other
. ds $SEPARATOR\\n[#DEPTH]
. \}
. if '\\*[$LIST_ARG_1]'BULLET' \{\
. nr #ARGS_TO_LIST 1
-. ds $ENUMERATOR\\n+[#DEPTH] \(bu
+. ds $ENUMERATOR\\n+[#DEPTH] \[bu]
. ds $ENUMERATOR_TYPE\\n[#DEPTH] other
. ds $SEPARATOR\\n[#DEPTH]
. \}
-. if '\\*[$LIST_ARG_1]'DIGIT' \{\
+. if '\\*[$LIST_ARG_1]'DIGIT' \{\
. nr #ARGS_TO_LIST 1
. nr #ENUMERATOR\\n+[#DEPTH] 0 1
. ds $ENUMERATOR_TYPE\\n[#DEPTH] register
@@ -15587,13 +14880,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ds $PREFIX\\n[#DEPTH]
. if \\n[#NUM_ARGS]>=2 \{\
. ie '\\$2'NONE' .ds $SEPARATOR\\n[#DEPTH]
-. el .ds $SEPARATOR\\n[#DEPTH] \\$2
-. if \\n[#NUM_ARGS]=3 \{\
-. ds $PREFIX\\n[#DEPTH] \\$3
-. \}
+. el .ds $SEPARATOR\\n[#DEPTH] \\$2
+. if \\n[#NUM_ARGS]=3 .ds $PREFIX\\n[#DEPTH] \\$3
. \}
. \}
-. if '\\*[$LIST_ARG_1]'alpha' \{\
+. if '\\*[$LIST_ARG_1]'alpha' \{\
. nr #ARGS_TO_LIST 1
. nr #ENUMERATOR\\n+[#DEPTH] 0 1
. af #ENUMERATOR\\n[#DEPTH] a
@@ -15602,13 +14893,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ds $PREFIX\\n[#DEPTH]
. if \\n[#NUM_ARGS]>=2 \{\
. ie '\\$2'NONE' .ds $SEPARATOR\\n[#DEPTH]
-. el .ds $SEPARATOR\\n[#DEPTH] \\$2
-. if \\n[#NUM_ARGS]=3 \{\
-. ds $PREFIX\\n[#DEPTH] \\$3
-. \}
+. el .ds $SEPARATOR\\n[#DEPTH] \\$2
+. if \\n[#NUM_ARGS]=3 .ds $PREFIX\\n[#DEPTH] \\$3
. \}
. \}
-. if '\\*[$LIST_ARG_1]'ALPHA' \{\
+. if '\\*[$LIST_ARG_1]'ALPHA' \{\
. nr #ARGS_TO_LIST 1
. nr #ENUMERATOR\\n+[#DEPTH] 0 1
. af #ENUMERATOR\\n[#DEPTH] A
@@ -15617,33 +14906,27 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ds $PREFIX\\n[#DEPTH]
. if \\n[#NUM_ARGS]>=2 \{\
. ie '\\$2'NONE' .ds $SEPARATOR\\n[#DEPTH]
-. el .ds $SEPARATOR\\n[#DEPTH] \\$2
+. el .ds $SEPARATOR\\n[#DEPTH] \\$2
. if \\n[#NUM_ARGS]=3 \{\
. ds $PREFIX\\n[#DEPTH] \\$3
. \}
. \}
. \}
-. if '\\*[$1ST_LETTER]'R' \{\
+. if '\\*[$1ST_LETTER]'R' \{\
. nr #ARGS_TO_LIST 1
. nr #ENUMERATOR\\n+[#DEPTH] 0 1
-. if '\\*[$LIST_ARG_1]'roman' \{\
-. af #ENUMERATOR\\n[#DEPTH] i
-. \}
-. if '\\*[$LIST_ARG_1]'ROMAN' \{\
-. af #ENUMERATOR\\n[#DEPTH] I
-. \}
+. if '\\*[$LIST_ARG_1]'roman' .af #ENUMERATOR\\n[#DEPTH] i
+. if '\\*[$LIST_ARG_1]'ROMAN' .af #ENUMERATOR\\n[#DEPTH] I
. ds $ENUMERATOR_TYPE\\n[#DEPTH] roman
. ds $SEPARATOR\\n[#DEPTH] )
. ds $PREFIX\\n[#DEPTH]
. if \\n[#NUM_ARGS]>=2 \{\
. ie '\\$2'NONE' .ds $SEPARATOR\\n[#DEPTH]
-. el .ds $SEPARATOR\\n[#DEPTH] \\$2
-. if \\n[#NUM_ARGS]=3 \{\
-. ds $PREFIX\\n[#DEPTH] \\$3
-. \}
+. el .ds $SEPARATOR\\n[#DEPTH] \\$2
+. if \\n[#NUM_ARGS]=3 .ds $PREFIX\\n[#DEPTH] \\$3
. \}
. \}
-. if '\\*[$LIST_ARG_1]'USER' \{\
+. if '\\*[$LIST_ARG_1]'USER' \{\
. nr #ARGS_TO_LIST 1
. ds $ENUMERATOR\\n+[#DEPTH] \\$2
. ds $ENUMERATOR_TYPE\\n[#DEPTH] other
@@ -15675,14 +14958,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. nr #TOTAL_LISTS \\n[#DEPTH]
. if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'register' \{\
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]m\\*[$SEPARATOR\\n[#DEPTH]]\ '
-. if '\\*[$LIST_ARG_1]'ALPHA'\{\
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]M\\*[$SEPARATOR\\n[#DEPTH]]\ '
-. \}
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]m\\*[$SEPARATOR\\n[#DEPTH]]\ '
+. if '\\*[$LIST_ARG_1]'ALPHA' nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]M\\*[$SEPARATOR\\n[#DEPTH]]\ '
. \}
-. if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'roman' \{\
+. if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'roman' \
. GET_ROMAN_INDENT
-. \}
. if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'other' \{\
. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$ENUMERATOR\\n[#DEPTH]]\0'
. \}
@@ -15720,7 +15002,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
.END
\#
-\#
\# ITEM
\# ----
\# *Arguments:
@@ -15730,7 +15011,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# receive the text of an item.
\#
.MAC ITEM END
-. if !r#DEPTH \{ .return \}
+. if !r#DEPTH .return
. if \\n[#LINENUMBERS]=1 \{\
. NUMBER_LINES OFF
. nr #LINENUMBERS 2
@@ -15745,25 +15026,24 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ll \\n[#CURRENT_L_LENGTH]u \" Set ll again because IL turns IB off.
. TRAP OFF
. HI \\n[#HL_INDENT\\n[#DEPTH]]u
-. if '\\*[$SEPARATOR\\n[#DEPTH]]')' \{ .nr #SEP_TYPE 1 \}
-. if '\\*[$SEPARATOR\\n[#DEPTH]]']' \{ .nr #SEP_TYPE 1 \}
-. if '\\*[$SEPARATOR\\n[#DEPTH]]'}' \{ .nr #SEP_TYPE 1 \}
+. if '\\*[$SEPARATOR\\n[#DEPTH]]')' .nr #SEP_TYPE 1
+. if '\\*[$SEPARATOR\\n[#DEPTH]]']' .nr #SEP_TYPE 1
+. if '\\*[$SEPARATOR\\n[#DEPTH]]'}' .nr #SEP_TYPE 1
. ie \\n[#IN_BIB_LIST]=1 \{\
. ie \\n[#ENUMERATOR\\n[#DEPTH]]<9 \{\
-. ie \\n[#SEP_TYPE]=1 \{\
-. PRINT \v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
-. \}
-. el \{\
-. PRINT \\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-. \}
+. ie \\n[#SEP_TYPE]=1 .PRINT \
+\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\
+\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+. el .PRINT \
+\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
. \}
. el \{\
-. ie \\n[#SEP_TYPE]=1 \{\
-. PRINT \h'-\w'\0'u'\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
-. \}
-. el \{\
-. PRINT \h'-\w'\0'u'\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-. \}
+. ie \\n[#SEP_TYPE]=1 .PRINT \
+\h'-\w'\0'u'\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\
+\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+. el .PRINT \
+\h'-\w'\0'u'\
+\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
. \}
. \}
. el \{\
@@ -15772,83 +15052,80 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ie '\\g[#ENUMERATOR\\n[#DEPTH]]'0' \{\
. ie \\n[#PAD_LIST_DIGITS\\n[#DEPTH]]=1 \{\
. ie \\n[#ENUMERATOR\\n[#DEPTH]]<9 \{\
-. ie \\n[#SEP_TYPE]=1 \{\
-. PRINT \0\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
-. \}
-. el \{\
-. PRINT \0\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-. \}
+. ie \\n[#SEP_TYPE]=1 .PRINT \
+\0\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\
+\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+. el .PRINT \
+\0\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
. \}
. el \{\
-. ie \\n[#SEP_TYPE]=1 \{\
-. PRINT \v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
-. \}
-. el \{\
-. PRINT \\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-. \}
+. ie \\n[#SEP_TYPE]=1 .PRINT \
+\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\
+\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+. el .PRINT \
+\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
. \}
. \}
. el \{\
-. ie \\n[#SEP_TYPE]=1 \{\
-. PRINT \v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
-. \}
-. el \{\
-. PRINT \\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-. \}
+. ie \\n[#SEP_TYPE]=1 .PRINT \
+\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\
+\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+. el .PRINT \
+\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
. \}
. \}
. el \{\
.\" ALPHA
. ie '\\g[#ENUMERATOR\\n[#DEPTH]]'A' \{\
-. ie \\n[#SEP_TYPE]=1 \{\
-. PRINT \v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
-. \}
-. el \{\
-. PRINT \\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-. \}
+. ie \\n[#SEP_TYPE]=1 .PRINT \
+\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\
+\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+. el .PRINT \
+\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
. \}
.\" alpha
-. el \{\
-. PRINT \\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-. \}
+. el .PRINT \
+\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
. \}
. \}
. if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'roman' \{\
. ie \\n[#PAD_LIST_DIGITS\\n[#DEPTH]]=1 \{\
.\" ROMAN I, padded
. ie '\\g[#ENUMERATOR\\n[#DEPTH]]'I' \{\
-. ie \\n[#SEP_TYPE]=1 \{\
-. PRINT "\h'\\n[#HL_INDENT\\n[#DEPTH]]u'\h'-\w'\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]\0'u'\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
-. \}
-. el \{\
-. PRINT "\h'\\n[#HL_INDENT\\n[#DEPTH]]u'\h'-\w'\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]\0'u'\\*[$PREFIX\\n[#DEPTH]]\\n[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-. \}
+. ie \\n[#SEP_TYPE]=1 .PRINT \
+\h'\\n[#HL_INDENT\\n[#DEPTH]]u'\h'-\w'\\*[$PREFIX\\n[#DEPTH]]\
+\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]\0'u'\
+\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n[#ENUMERATOR\\n[#DEPTH]]\
+\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+. el .PRINT \
+\h'\\n[#HL_INDENT\\n[#DEPTH]]u'\h'-\w'\\*[$PREFIX\\n[#DEPTH]]\
+\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]\
+\0'u'\\*[$PREFIX\\n[#DEPTH]]\\n[#ENUMERATOR\\n[#DEPTH]]\
+\\*[$SEPARATOR\\n[#DEPTH]]
. \}
.\" roman i, padded
-. el \{\
-. PRINT "\h'\\n[#HL_INDENT\\n[#DEPTH]]u'\h'-\w'\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]\0'u'\\*[$PREFIX\\n[#DEPTH]]\\n[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-. \}
+. el .PRINT \
+\h'\\n[#HL_INDENT\\n[#DEPTH]]u'\h'-\w'\\*[$PREFIX\\n[#DEPTH]]\
+\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]\0'u'\
+\\*[$PREFIX\\n[#DEPTH]]\\n[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
. \}
.\" No pad
. el \{\
.\" ROMAN I, no pad
. ie '\\g[#ENUMERATOR\\n[#DEPTH]]'I' \{\
-. ie \\n[#SEP_TYPE]=1 \{\
-. PRINT \v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
-. \}
-. el \{\
-. PRINT \\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-. \}
+. ie \\n[#SEP_TYPE]=1 .PRINT \
+\v'-.085m'\\*[$PREFIX\\n[#DEPTH]]\v'.085m'\\n+[#ENUMERATOR\\n[#DEPTH]]\
+\v'-.085m'\\*[$SEPARATOR\\n[#DEPTH]]\v'.085m'
+. el .PRINT \
+\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
. \}
.\" roman i, no pad
-. el \{\
-. PRINT \\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-. \}
+. el .PRINT \
+\\*[$PREFIX\\n[#DEPTH]]\\n+[#ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
. \}
. \}
-. if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'other' \{\
+. if '\\*[$ENUMERATOR_TYPE\\n[#DEPTH]]'other' \
. PRINT \\*[$ENUMERATOR\\n[#DEPTH]]\\*[$SEPARATOR\\n[#DEPTH]]
-. \}
. \}
. rr #SEP_TYPE
. EOL
@@ -15874,167 +15151,207 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\#
.MAC GET_ROMAN_INDENT END
. if '\\*[$LIST_ARG_1]'roman' \{\
-. if '\\*[$ROMAN_WIDTH]'1' \{\
+. if '\\*[$ROMAN_WIDTH]'1' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 1
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]i\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]i\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'2' \{\
+. if '\\*[$ROMAN_WIDTH]'2' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 2
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]ii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]ii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'3' \{\
+. if '\\*[$ROMAN_WIDTH]'3' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 3
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]iii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]iii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'4' \{\
+. if '\\*[$ROMAN_WIDTH]'4' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 4
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]iii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]iii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'5' \{\
+. if '\\*[$ROMAN_WIDTH]'5' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 5
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]iii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]iii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'6' \{\
+. if '\\*[$ROMAN_WIDTH]'6' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 6
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]iii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]iii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'7' \{\
+. if '\\*[$ROMAN_WIDTH]'7' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 7
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]vii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]vii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'8' \{\
+. if '\\*[$ROMAN_WIDTH]'8' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 8
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'9' \{\
+. if '\\*[$ROMAN_WIDTH]'9' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 9
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'10' \{\
+. if '\\*[$ROMAN_WIDTH]'10' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 10
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'11' \{\
+. if '\\*[$ROMAN_WIDTH]'11' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 11
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'12' \{\
+. if '\\*[$ROMAN_WIDTH]'12' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 12
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]viii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'13' \{\
+. if '\\*[$ROMAN_WIDTH]'13' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 13
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]xiii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]xiii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'14' \{\
+. if '\\*[$ROMAN_WIDTH]'14' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 14
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]xiii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]xiii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'15' \{\
+. if '\\*[$ROMAN_WIDTH]'15' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 15
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]xiii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]xiii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'16' \{\
+. if '\\*[$ROMAN_WIDTH]'16' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 16
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]xiii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]xiii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'17' \{\
+. if '\\*[$ROMAN_WIDTH]'17' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 17
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]xvii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]xvii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'18' \{\
+. if '\\*[$ROMAN_WIDTH]'18' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 18
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]xviii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]xviii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'19' \{\
+. if '\\*[$ROMAN_WIDTH]'19' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 19
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]xviii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]xviii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'20' \{\
+. if '\\*[$ROMAN_WIDTH]'20' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 20
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]xviii\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]xviii\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
. \}
. if '\\*[$LIST_ARG_1]'ROMAN' \{\
-. if '\\*[$ROMAN_WIDTH]'1' \{\
+. if '\\*[$ROMAN_WIDTH]'1' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 1
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]I\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]I\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'2' \{\
+. if '\\*[$ROMAN_WIDTH]'2' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 2
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]II\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]II\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'3' \{\
+. if '\\*[$ROMAN_WIDTH]'3' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 3
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]III\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]III\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'4' \{\
+. if '\\*[$ROMAN_WIDTH]'4' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 4
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]IV\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]IV\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'5' \{\
+. if '\\*[$ROMAN_WIDTH]'5' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 5
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]IV\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]IV\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'6' \{\
+. if '\\*[$ROMAN_WIDTH]'6' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 6
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]IV\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]IV\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'7' \{\
+. if '\\*[$ROMAN_WIDTH]'7' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 7
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]VII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]VII\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'8' \{\
+. if '\\*[$ROMAN_WIDTH]'8' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 8
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'9' \{\
+. if '\\*[$ROMAN_WIDTH]'9' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 9
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'10' \{\
+. if '\\*[$ROMAN_WIDTH]'10' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 10
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'11' \{\
+. if '\\*[$ROMAN_WIDTH]'11' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 11
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'12' \{\
+. if '\\*[$ROMAN_WIDTH]'12' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 12
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]VIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'13' \{\
+. if '\\*[$ROMAN_WIDTH]'13' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 13
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]XIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]XIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'14' \{\
+. if '\\*[$ROMAN_WIDTH]'14' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 14
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]XIV\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]XIV\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'15' \{\
+. if '\\*[$ROMAN_WIDTH]'15' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 15
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]XIV\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]XIV\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'16' \{\
+. if '\\*[$ROMAN_WIDTH]'16' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 16
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]XIV\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]XIV\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'17' \{\
+. if '\\*[$ROMAN_WIDTH]'17' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 17
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]XVII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]XVII\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'18' \{\
+. if '\\*[$ROMAN_WIDTH]'18' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 18
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]XVIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]XVIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'19' \{\
+. if '\\*[$ROMAN_WIDTH]'19' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 19
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]XVIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]XVIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
-. if '\\*[$ROMAN_WIDTH]'20' \{\
+. if '\\*[$ROMAN_WIDTH]'20' \{\
. ds $ROMAN_WIDTH\\n[#DEPTH] 20
-. nr #LIST_INDENT\\n[#DEPTH] \w'\\*[$PREFIX\\n[#DEPTH]]XVIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
+. nr #LIST_INDENT\\n[#DEPTH] \
+\w'\\*[$PREFIX\\n[#DEPTH]]XVIII\\*[$SEPARATOR\\n[#DEPTH]]\0'
. \}
. \}
.END
@@ -16049,11 +15366,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# Requires a unit of measure.
\#
.MAC SHIFT_LIST END
-. nr #SHIFT_LIST\\n[#DEPTH] (\\$1)
-. nr #L_INDENT +\\n[#SHIFT_LIST\\n[#DEPTH]]
+. nr #SHIFT_LIST\\n[#DEPTH] (\\$1)
+. nr #L_INDENT +\\n[#SHIFT_LIST\\n[#DEPTH]]
.END
\#
-\#
\# PAD LIST DIGITS
\# ---------------
\# *Arguments:
@@ -16067,17 +15383,16 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #LIST_INDENT\\n[#DEPTH] +\\w'\\0'
. nr #L_INDENT \\n[#LIST_INDENT\\n[#DEPTH]]+\\n[#LIST_INDENT\\n-[#DEPTH]]
. nr #HL_INDENT\\n+[#DEPTH] +\\w'\\n[#ENUMERATOR\\n[#DEPTH]]'
-. if '\\$1'LEFT' \{ .nr #PAD_LIST_DIGITS\\n[#DEPTH] 1 \}
+. if '\\$1'LEFT' .nr #PAD_LIST_DIGITS\\n[#DEPTH] 1
. \}
. if '\\g[#ENUMERATOR\\n[#DEPTH]]'i' \{\
-. if '\\$1'LEFT' \{ .nr #PAD_LIST_DIGITS\\n[#DEPTH] 1 \}
+. if '\\$1'LEFT' .nr #PAD_LIST_DIGITS\\n[#DEPTH] 1
. \}
. if '\\g[#ENUMERATOR\\n[#DEPTH]]'I' \{\
-. if '\\$1'LEFT' \{ .nr #PAD_LIST_DIGITS\\n[#DEPTH] 1 \}
+. if '\\$1'LEFT' .nr #PAD_LIST_DIGITS\\n[#DEPTH] 1
. \}
.END
\#
-\#
\# RESET LIST
\# ----------
\# *Arguments:
@@ -16086,11 +15401,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# Resets register enumerators to 1 or a.
\#
.MAC RESET_LIST END
-. ie '\\$1'' \{ .nr #ENUMERATOR\\n[#DEPTH] 0 1 \}
-. el \{ .nr #ENUMERATOR\\n[#DEPTH] \\$1-1 1 \}
+. ie '\\$1'' .nr #ENUMERATOR\\n[#DEPTH] 0 1
+. el .nr #ENUMERATOR\\n[#DEPTH] \\$1-1 1
.END
\#
-\#
\# QUIT LISTS
\# ----------
\# *Arguments:
@@ -16141,7 +15455,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. rm $SEPARATOR\\n[#REMOVE]
. rm $ENUMERATOR_TYPE\\n[#REMOVE]
. rr #PAD_LIST_DIGITS\\n[#REMOVE]
-.\}
+. \}
. rr #REMOVE
. rr #TOTAL_LISTS
. rr #QUIT
@@ -16154,7 +15468,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. rr #IN_ITEM_L_INDENT
.END
\#
-\#
\# SET LIST INDENT
\# ---------------
\# *Arguments:
@@ -16191,60 +15504,27 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# COLLATE, any of the macros that normally precede START may be
\# used, and should behave as expected.
\#
-\# N.B.--the START macro *must* be used after COLLATE (and any other
-\# macros that alter mom's behaviour).
+\# N.B.--the START macro must be used after every COLLATE
\#
.MAC COLLATE END
-. if ( (\\n[.t]-1) <= \\n[.v] ) \{ .nr #NO_BREAK 1 \}
+. nr #COLLATED_DOC 1
+. if ( (\\n[.t]-1) <= \\n[.v] ) .nr #NO_BREAK 1
. ds $SAVED_PP_FT \\*[$PP_FT]
. nr #COLLATE 1
. nr #PRE_COLLATE 1
. nr #HEADER_STATE \\n[#HEADERS_ON]
+. nr #POST_TOP 1
+. nr #ARG_NUM 0 1
+. nr #LOOP \\n[#ACTIVE_LEVELS] \" loop count
+. nr #HEAD_1_NUM 0 1
. HEADERS OFF
-. if \\n[#DOC_HEADER]=2 \{ .nr #DOC_HEADER 1 \}
+. if \\n[#DOC_HEADER]=2 .nr #DOC_HEADER 1
. if \\n[#PAGE_NUM_V_POS]=1 \{\
. nr #PAGINATION_STATE \\n[#PAGINATE]
. PAGINATION OFF
. \}
. IQ CLEAR
. TQ
-.\" Collect first doc's title for TOC
-. if \\n[#COLLATED_DOC]=0 \{\
-. ie \\n[#USER_SET_TITLE_ITEM] \{\
-. ds $FIRST_DOC_TITLE \\*[$USER_SET_TITLE_ITEM]\\|
-. rr #USER_SET_TITLE_ITEM
-. rm $USER_SET_TITLE_ITEM
-. \}
-. el \{\
-. ie \\n[#DOC_TYPE]=2 \{\
-. ie '\\*[$CHAPTER_TITLE]'' \{\
-. ds $FIRST_DOC_TITLE \\*[$CHAPTER_STRING] \\*[$CHAPTER]\\|
-. \}
-. el \{\
-. ie '\\*[$CHAPTER]'' \{\
-. ds $FIRST_DOC_TITLE \\*[$CHAPTER_TITLE]\\|
-. \}
-. el \{\
-. ds $FIRST_DOC_TITLE \\*[$CHAPTER_STRING] \\*[$CHAPTER]: \\*[$CHAPTER_TITLE]\\|
-. \}
-. \}
-. \}
-. el \{\
-. ds $FIRST_DOC_TITLE \\*[$TITLE]\\|
-. \}
-. \}
-. if \\n[#TOC_AUTHORS]=1 \{\
-. ie '\\*[$TOC_AUTHORS]'' \{\
-. as $FIRST_DOC_TITLE /\\|\\*[$AUTHOR_1]\\|
-. \}
-. el \{\
-. as $FIRST_DOC_TITLE /\\|\\*[$TOC_AUTHORS]\\|
-. rm $TOC_AUTHORS
-. \}
-. \}
-. nr #COLLATED_DOC 1
-. \}
-.\" End title collection for TOC
. LL \\n[#DOC_L_LENGTH]u
. QUAD $DOC_QUAD
. nr #SAVED_DOC_LEAD \\n[#DOC_LEAD]
@@ -16252,13 +15532,17 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\*[SLANTX]
\*[CONDX]
\*[EXTX]
+. if \\n[#TOC] \{\
+. if \\n[TOC_BH]=1 .pdfswitchtopage before MOM:TOC
+. if \\n[TOC_BH]=2 .pdfswitchtopage after MOM:TOC
+. \}
' NEWPAGE
-. if \\n[#DEFER_PAGINATION] \{ .PAGINATE \}
+. if \\n[#DEFER_PAGINATION] .PAGINATE
. if !'\\*[$RESTORE_PAGENUM_STYLE]'' \{\
. PAGENUM_STYLE \\*[$RESTORE_PAGENUM_STYLE]
. rm $RESTORE_PAGENUM_STYLE
. \}
-. if \\n[#CH_NUM] \{ .nr #CH_NUM +1 \}
+. if \\n[#CH_NUM] .nr #CH_NUM +1
. rm $EN_TITLE
. COVERTITLE
. DOCCOVERTITLE
@@ -16270,9 +15554,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. rr #PAGENUM_STYLE_SET
. rr #DOC_COVER
. rr #COVER
+. rr #LAST_LEVEL
+. rr #LEVEL
.END
\#
-\#
\# NUMBER_LINES
\# ------------
\# *Arguments:
@@ -16284,18 +15569,18 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\#
.MAC NUMBER_LINES END
. br
-. if '\\n(.z'EPI_TEXT' \{ .return \}
+. if '\\n[.z]'EPI_TEXT' .return
. if '\\$1'' \{\
-. tm1 "[mom]: NUMBER_LINES at line \\n(.c has no argument.
+. tm1 "[mom]: NUMBER_LINES at line \\n[.c] has no argument.
. tm1 " Most likely, you have forgotten to give it a starting line number.
-. ab Aborting on NUMBER_LINES.
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
. \}
-. if !\\n[#LINENUMBERS]=2 \{ .nr #LINENUMBERS 1 \}
+. if !\\n[#LINENUMBERS]=2 .nr #LINENUMBERS 1
.\" Test whether the first arg is a digit.
. if \B'\\$1' \{\
. nr #LN \\$1
. ds $LN_NUM \\$1
-. if !'\\n(.z'' \{ .nr #RESTORE_LN_NUM 1 \}
+. if !'\\n[.z]'' .nr #RESTORE_LN_NUM 1
. ie '\\$2'' \{\
. if '\\*[$LN_INC]'' .ds $LN_INC 1
. \}
@@ -16323,7 +15608,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ft
. ps
. gcolor
-. if !\\n[#LINENUMBERS]=2 \{ .rr #LINENUMBERS \}
+. if !\\n[#LINENUMBERS]=2 .rr #LINENUMBERS
. \}
. \}
. el \{\
@@ -16333,12 +15618,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ft
. ps
. gcolor
-. if !'\\n(.z'' \{ .nr #DIVER_LN_OFF 1 \}
+. if !'\\n[.z]'' .nr #DIVER_LN_OFF 1
. \}
. rr #LN
.END
\#
-\#
\# LINENUMBER STYLE PARAMETERS
\# ---------------------------
\# *Arguments:
@@ -16352,17 +15636,16 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# to their former values, stay at those values.)
\#
.MAC LN_PARAMS END
-. ie d$LN_FAM \{ .fam \\*[$LN_FAM] \}
-. el \{ .fam \\n[.fam] \}
-. ie d$LN_FT \{ .ft \\*[$LN_FT] \}
-. el \{ .ft \\n[.sty] \}
-. ie d$LN_SIZE_CHANGE \{ .ps \\*[$LN_SIZE_CHANGE] \}
-. el \{ .ps \\n[.s] \}
-. ie d$LN_COLOR \{ .gcolor \\*[$LN_COLOR] \}
-. el \{ .gcolor \\n[.m] \}
+. ie d$LN_FAM .fam \\*[$LN_FAM]
+. el .fam \\n[.fam]
+. ie d$LN_FT .ft \\*[$LN_FT]
+. el .ft \\n[.sty]
+. ie d$LN_SIZE_CHANGE .ps \\*[$LN_SIZE_CHANGE]
+. el .ps \\n[.s]
+. ie d$LN_COLOR .gcolor \\*[$LN_COLOR]
+. el .gcolor \\n[.m]
.END
\#
-\#
\# NUMBER QUOTE AND BLOCKQUOTE LINES AS PART OF RUNNING TEXT
\# ---------------------------------------------------------
\# *Argument:
@@ -16377,14 +15660,14 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# the one used for line numbers in running text.
\#
.MAC NUMBER_QUOTE_LINES END
-. ie \\n[#NUM_ARGS]=0 \{ .nr #QUOTE_LN 1 \}
+. ie \\n[#NUM_ARGS]=0 .nr #QUOTE_LN 1
. el \{\
. ie \B'\\$1' \{\
. nr #QUOTE_LN 1
. ds $Q_LN_GUTTER \\$1
. \}
. el \{\
-. ie '\\$1'SILENT' \{ .nr #SILENT_QUOTE_LN 1 \}
+. ie '\\$1'SILENT' .nr #SILENT_QUOTE_LN 1
. el \{\
. rr #QUOTE_LN
. rr #SILENT_QUOTE_LN
@@ -16393,16 +15676,15 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
.END
\#
-\#
.MAC NUMBER_BLOCKQUOTE_LINES END
-. ie \\n[#NUM_ARGS]=0 \{ .nr #BQUOTE_LN 1 \}
+. ie \\n[#NUM_ARGS]=0 .nr #BQUOTE_LN 1
. el \{\
. ie \B'\\$1' \{\
. nr #BQUOTE_LN 1
. ds $BQ_LN_GUTTER \\$1
. \}
. el \{\
-. ie '\\$1'SILENT' \{ .nr #SILENT_BQUOTE_LN 1 \}
+. ie '\\$1'SILENT' .nr #SILENT_BQUOTE_LN 1
. el \{\
. rr #BQUOTE_LN
. rr #SILENT_BQUOTE_LN
@@ -16437,7 +15719,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. HEADERS OFF
. \}
. if \\n[#PAGE_NUM_V_POS]=1 \{\
-. if \\n[#PAGINATE]=1 \{ .nr #PAGINATE_WAS_ON 1 \}
+. if \\n[#PAGINATE]=1 .nr #PAGINATE_WAS_ON 1
. PAGINATION OFF
. \}
. NEWPAGE
@@ -16447,51 +15729,179 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. FOOTERS OFF
. \}
. if \\n[#PAGE_NUM_V_POS]=2 \{\
-. if \\n[#PAGINATE]=1 \{ .nr #PAGINATE_WAS_ON 1 \}
+. if \\n[#PAGINATE]=1 .nr #PAGINATE_WAS_ON 1
. PAGINATION OFF
. \}
-. if \\n[#HEADERS_WERE_ON] \{ .HEADERS \}
+. if \\n[#HEADERS_WERE_ON] .HEADERS
. if \\n[#PAGE_NUM_V_POS]=1 \{\
-. if \\n[#PAGINATE_WAS_ON] \{ .PAGINATE \}
+. if \\n[#PAGINATE_WAS_ON] .PAGINATE
. \}
-.\}
+. \}
. shift
. ie '\\$1'DIVIDER' \{\
-. if \\n[#FOOTERS_WERE_ON] \{ .FOOTERS \}
+. if \\n[#FOOTERS_WERE_ON] .FOOTERS
. if \\n[#PAGE_NUM_V_POS]=2 \{\
. if \\n[#PAGINATE_WAS_ON] \{\
. nr #RESTORE_PAGINATION 1
. \}
. \}
. shift
-. if '\\$1'NULL' \{ .nr #PAGE_NUM_ADJ -\\n[#HOW_MANY] \}
+. if '\\$1'NULL' .nr #PAGE_NUM_ADJ -\\n[#HOW_MANY]
. \}
. el \{\
. if '\\$1'' \{\
. NEWPAGE
-. if \\n[#FOOTERS_WERE_ON] \{ .FOOTERS \}
+. if \\n[#FOOTERS_WERE_ON] .FOOTERS
. if \\n[#PAGE_NUM_V_POS]=2 \{\
-. if \\n[#PAGINATE_WAS_ON] \{ .PAGINATE \}
+. if \\n[#PAGINATE_WAS_ON] .PAGINATE
. \}
. \}
. if '\\$1'NULL' \{\
. NEWPAGE
-. if \\n[#FOOTERS_WERE_ON] \{ .FOOTERS \}
+. if \\n[#FOOTERS_WERE_ON] .FOOTERS
. if \\n[#PAGE_NUM_V_POS]=2 \{\
-. if \\n[#PAGINATE_WAS_ON] \{ .PAGINATE \}
+. if \\n[#PAGINATE_WAS_ON] .PAGINATE
. \}
. \}
. \}
. if \\n[#PAGINATE]=1 \{\
-. if '\\$1'NULL' \{ .nr #PAGE_NUM_ADJ -\\n[#HOW_MANY] \}
+. if '\\$1'NULL' .nr #PAGE_NUM_ADJ -\\n[#HOW_MANY]
. \}
-. if \\n[#LINENUMBERS_WERE_ON] \{ .NUMBER_LINES RESUME \}
+. if \\n[#LINENUMBERS_WERE_ON] .NUMBER_LINES RESUME
. rr #HOW_MANY
. rr #HEADERS_WERE_ON
. rr #FOOTERS_WERE_ON
. rr #PAGINATE_WAS_ON
.END
\#
+\# FLOATS
+\# ------
+\#
+.am PSPIC \" Need to do this for PSPIC inside a float
+. vpt 0
+\h'(\\n[ps-offset]u + \\n[ps-deswid]u)'
+. sp -1
+. vpt 1
+..
+\# Boxed tables don't play nice with vertical spacing.
+\# Compensation is applied in FLOAT.
+.MAC TS END
+. if '\\n[.z]'FLOAT*DIV' \{\
+. if '\\$1'BOXED' \{\
+. if !\\n[.d] .nr boxed-table 1
+. \}
+. \}
+.END
+.
+.MAC TE END
+. if '\\n[.z]'FLOAT*DIV' .nr bx-tbl-depth \\n[.d]
+.END
+\#
+\# FLOAT
+\# -----
+\# *Arguments:
+\# [ ADJUST +|-<amount> ] | <anything>
+\# *Function:
+\# Captures input in a diversion, which is output immediately if
+\# there's room on the page; otherwise outputs diversion at top of
+\# next page.
+\# *Notes:
+\# ADJUST allows for raising or lowering the contents of
+\# the diversion within the space allotted.
+\#
+.MAC FLOAT END
+.\" Case where upcoming .br breaks to a new page, causing a defered float
+.\" to be output by HEADER and the defer register to be cleared.
+. nr pagenum \\n%+\\n[#PAGE_NUM_ADJ]
+.\" Possibly breaks to a new page.
+. br
+. if !(\\n%+\\n[#PAGE_NUM_ADJ])=\\n[pagenum] .nr broken*at*float 1
+.\" Clear .ns when a single line of running text precededs float
+.\" at the top of the page.
+. if \\n[nl]=\\n[#T_MARGIN] \{\
+. vpt 0
+. sp -1v
+. sp
+. vpt
+. \}
+. rr #ARG_NUM
+. nr #ARG_NUM 0 1
+. nr #OPTS \\n[#NUM_ARGS]
+. if '\\$1'FORCE' \{\
+. nr #FORCE 1
+. shift
+. \}
+. if '\\$1'ADJUST' \{\
+. shift
+. ds float-adj:top \\$1
+. substring float-adj:top 0 0
+. ds float-adj \\$1
+. substring float-adj 1
+. shift
+. if '\\*[float-adj:top]'+' .ds float-adj:bottom -
+. if '\\*[float-adj:top]'-' .ds float-adj:bottom +
+. \}
+. ie '\\$1'' \{\
+. ev FLOAT
+. evc 0
+. di FLOAT*DIV
+. nf
+. \}
+. el \{\
+. br
+. di
+. ev
+. if ((\\n[dn]-\\n[.v])>\\n[.t]):(\\n[D-float]>\\n[.t]) \{\
+. ie \\n[@TOP] \{\
+. rs
+. sp
+. \}
+. el \{\
+. ie \\n[#FORCE] \{\
+. NEWPAGE
+. rr #FORCE
+. \}
+. el \{\
+. if !\\n[defer] .nr defer 0 1
+. rn FLOAT*DIV FLOAT*DIV:\\n+[defer]
+. if \\n[D-float] .nr D-float:\\n[defer] \\n[D-float]
+. nr float-depth:\\n[defer] \\n[dn]
+. return \" output div after header
+. \}
+. \}
+. \}
+. sp 0\\*[float-adj:top]\\*[float-adj]
+. if \\n[boxed-table] .sp 1-.35v
+. if \\n[.u] .nr #RESTORE_FILL 1
+. nf
+. FLOAT*DIV
+. if \\n[boxed-table] \{\
+. if \\n[dn]=\\n[bx-tbl-depth] .sp .35v
+. rr boxed-table
+. rr bx-tbl-depth
+. \}
+. if \\n[D-float] \{\
+. sp -\\n[dn]u+\\n[#DOC_LEAD]u+\\n[D-float]u
+. \}
+. if \\n[#RESTORE_FILL] \{\
+. fi
+. rr #RESTORE_FILL
+. \}
+. if \\n[broken*at*float] \{\
+. if !\\n[defer] \{\
+. sp -\\n[.v]u
+. rr broken*at*float
+. \}
+. \}
+. rm FLOAT*DIV
+. sp 0\\*[float-adj:bottom]\\*[float-adj]
+. SHIM
+. rr D-float
+. rm float-adj
+. rm float-adj:top
+. rm float-adj:bottom
+. \}
+.END
\#
\# SET TRAPS FOR HEADERS/FOOTERS/FOOTNOTES
\# ---------------------------------------
@@ -16506,7 +15916,12 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# adjusts #DOC_LEAD so that the last line of text on a page falls
\# exactly on #B_MARGIN.
\#
+.MAC RR_@TOP END \" Trap-invoked after first line of text on a new page
+. rr @TOP
+.END
+\#
.MAC TRAPS END
+. nr #UNADJUSTED_DOC_LEAD \\n[#DOC_LEAD]
.\" Remove all header/footer traps
. if !\\n[#NO_TRAP_RESET] \{\
. ch DO_T_MARGIN
@@ -16521,21 +15936,20 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ie \\n[#ADJ_DOC_LEAD]=1 \{\
. nr #LINES_PER_PAGE 0 1
. nr #DOC_LEAD_ADJ 0 1
-. nr #DEPTH_TO_B_MARGIN \\n[#PAGE_LENGTH]-\\n[#ORIGINAL_B_MARGIN]-\\n[.v]
+. nr #DEPTH_TO_B_MARGIN \\n[#PAGE_LENGTH]-\\n[#ORIGINAL_B_MARGIN]-\\n[#DOC_LEAD]
.\" Get the number of unadjusted lines that fit on the page; always a
.\" bit short of the bottom margin
. while \\n[#T_MARGIN]+(\\n[#DOC_LEAD]*\\n+[#LINES_PER_PAGE])<\\n[#DEPTH_TO_B_MARGIN] \{\
.
-.\}
+. \}
. nr #LINES_PER_PAGE -1
.\" Add machine units, 1 at a time, increasing the leading until the
.\" new leading fills the page properly
. while \\n[#T_MARGIN]+(\\n[#DOC_LEAD]+\\n+[#DOC_LEAD_ADJ]*\\n[#LINES_PER_PAGE])<=\\n[#DEPTH_TO_B_MARGIN] \{\
.
-.\}
-. nr #UNADJUSTED_DOC_LEAD \\n[#DOC_LEAD]
+. \}
. DOC_LEAD \\n[#DOC_LEAD]u+\\n[#DOC_LEAD_ADJ]u
-.\" The "visual" bottom margin is what \n(nl would report on the
+.\" The "visual" bottom margin is what \n[nl] would report on the
.\" last line before the FOOTER trap is sprung
. nr #VISUAL_B_MARGIN \\n[#T_MARGIN]+(\\n[#LINES_PER_PAGE]*\\n[#DOC_LEAD])
.\" Get the difference between #B_MARGIN and #VISUAL_B_MARGIN
@@ -16550,11 +15964,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.\" on the page.
. el \{\
. nr #LINES_PER_PAGE 0 1
-. nr #DEPTH_TO_B_MARGIN \\n[#PAGE_LENGTH]-\\n[#B_MARGIN]-1v
+. nr #DEPTH_TO_B_MARGIN \\n[#PAGE_LENGTH]-\\n[#B_MARGIN]
. while \\n[#T_MARGIN]+(\\n[#DOC_LEAD]*\\n+[#LINES_PER_PAGE])<\\n[#DEPTH_TO_B_MARGIN] \{\
.
-.\}
-. nr #VISUAL_B_MARGIN \\n[#T_MARGIN]+(\\n[#LINES_PER_PAGE]*\\n[#DOC_LEAD]-1v)
+. \}
+. nr #VISUAL_B_MARGIN \\n[#T_MARGIN]+(\\n[#LINES_PER_PAGE]*\\n[#DOC_LEAD]-\\n[#DOC_LEAD])
. nr #FOOTER_DIFF (\\n[#PAGE_LENGTH]-\\n[#B_MARGIN])-\\n[#VISUAL_B_MARGIN]
. nr #B_MARGIN \\n[#B_MARGIN]+(\\n[#FOOTER_DIFF]-1)
. nr #FN_OVERFLOW_TRAP_POS \\n[#B_MARGIN]u-\\n[#FN_LEAD]
@@ -16565,13 +15979,12 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #SPACE_REMAINING 0
. nr #FN_DEPTH 0
. nr #VARIABLE_FOOTER_POS 0-\\n[#B_MARGIN]u
-. wh \\n(.pu FOOTER
+. wh \\n[.p]u FOOTER
. wh -(\\n[#FN_OVERFLOW_TRAP_POS]u) FN_OVERFLOW_TRAP
. ch FOOTER -\\n[#B_MARGIN]u
. \}
.END
\#
-\#
\# CHECK INDENT
\# ------------
\# *Arguments:
@@ -16586,48 +15999,47 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[#QUOTE] \{\
. in -\\n[#L_INDENT]u \"Because you added an indent in 2nd line of macro
. ll -\\n[#L_INDENT]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. if \\n[#EPIGRAPH] \{\
. in -\\n[#L_INDENT]u
. ll -\\n[#L_INDENT]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. \}
. if \\n[#INDENT_RIGHT_ACTIVE] \{\
. ll -\\n[#R_INDENT]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. if \\n[#INDENT_BOTH_ACTIVE] \{\
. in \\n[#BL_INDENT]u
. ll -\\n[#BR_INDENT]u
-. ta \\n(.lu
+. ta \\n[.l]u
. if \\n[#QUOTE] \{\
. in -\\n[#BL_INDENT]u
. ie \\n[#BR_INDENT]=\\n[#BL_INDENT] \{\
. ll -\\n[#BR_INDENT]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. el \{\
. ll -(\\n[#BR_INDENT]u/2u)
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. \}
. if \\n[#EPIGRAPH] \{\
. in -\\n[#BL_INDENT]u
. ie \\n[#BR_INDENT]=\\n[#BL_INDENT] \{\
. ll -\\n[#BR_INDENT]u
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. el \{\
. ll -(\\n[#BR_INDENT]u/2u)
-. ta \\n(.lu
+. ta \\n[.l]u
. \}
. \}
. \}
.END
\#
-\#
\# REMOVE INDENT
\# -------------
\# *Arguments:
@@ -16639,15 +16051,15 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.MAC REMOVE_INDENT END
. in 0
. ll \\n[#L_LENGTH]u
-. ta \\n(.lu
+. ta \\n[.l]u
.END
\#
-\#
\# This .em (for all DOC_TYPEs, except 4 [LETTER]) ensures that
\# deferred footnotes that happen on the 2nd to last page get
\# output.
\#
.MAC TERMINATE END
+\c
. ie \\n[#FN_DEPTH] \{\
. ie \\n[#FN_DEFER] \{\
. br
@@ -16679,25 +16091,25 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# (indented with the author's name underneath).
\#
.MAC ALL_DONE END
+. ch FOOTER
+. ch HEADER
. br
-. FOOTERS OFF
-. PAGINATION OFF
. if \\n[#DOC_TYPE]=4 \{\
-. if !'\\n(.z'' \{\
+. if !'\\n[.z]'' \{\
. br
+. ALD \\*[$SIG_SPACE]
. di
. \}
. IQ CLEAR
. TQ
-. ie !'\\*[$CLOSE_INDENT]'' \{ .IL \\*[$CLOSE_INDENT] \}
-. el \{ .IL \\n[#DOC_L_LENGTH]u/2u \}
+. LEFT
+. ie !'\\*[$CLOSE_INDENT]'' .IL \\*[$CLOSE_INDENT]
+. el .IL \\n[#DOC_L_LENGTH]u/2u
. SP
. if \\n[#CLOSING] \{\
-. CLOSING
+. CLOSING_TEXT
. br
. \}
-. ie !'\\*[$SIG_SPACE]'' \{ .ALD \\*[$SIG_SPACE] \}
-. el \{ .SP 3v \}
. PRINT \\*[$AUTHOR_1]
. \}
.END
@@ -16751,7 +16163,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# identically, and the type-style macros (_<type parameter>) all
\# require the correct name of the calling macro, it's necessary
\# to create HEADER_ and FOOTER_ macros here. They're basically
-\# "aliases" of HDRFTR_, but required because you can't alias an
+\# aliases of HDRFTR_, but required because you can't alias an
\# alias.
\#
.MAC FOOTER_CENTER_COLOR END
@@ -17140,22 +16552,15 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.ALIAS HDRFTR_FAMILY _FAMILY
.ALIAS HDRFTR_LEFT_FAMILY _FAMILY
.ALIAS HDRFTR_RIGHT_FAMILY _FAMILY
-.ALIAS HEAD_FAMILY _FAMILY
.ALIAS LINENUMBER_FAMILY _FAMILY
.ALIAS PAGENUM_FAMILY _FAMILY
-.ALIAS PARAHEAD_FAMILY _FAMILY
.ALIAS QUOTE_FAMILY _FAMILY
-.ALIAS SUBHEAD_FAMILY _FAMILY
.ALIAS SUBTITLE_FAMILY _FAMILY
.ALIAS TITLE_FAMILY _FAMILY
.ALIAS TOC_FAM _FAMILY
.ALIAS TOC_FAMILY _FAMILY
.ALIAS TOC_HEADER_FAMILY _FAMILY
-.ALIAS TOC_HEAD_FAMILY _FAMILY
-.ALIAS TOC_PARAHEAD_FAMILY _FAMILY
.ALIAS TOC_PN_FAMILY _FAMILY
-.ALIAS TOC_SUBHEAD_FAMILY _FAMILY
-.ALIAS TOC_TITLE_FAMILY _FAMILY
\#
.ALIAS AUTHOR_FONT _FONT
.ALIAS BIBLIOGRAPHY_STRING_FONT _FONT
@@ -17187,20 +16592,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.ALIAS HDRFTR_CENTER_FONT _FONT
.ALIAS HDRFTR_LEFT_FONT _FONT
.ALIAS HDRFTR_RIGHT_FONT _FONT
-.ALIAS HEAD_FONT _FONT
.ALIAS LINENUMBER_FONT _FONT
.ALIAS PAGENUM_FONT _FONT
-.ALIAS PARAHEAD_FONT _FONT
.ALIAS QUOTE_FONT _FONT
-.ALIAS SUBHEAD_FONT _FONT
.ALIAS SUBTITLE_FONT _FONT
.ALIAS TITLE_FONT _FONT
.ALIAS TOC_HEADER_FONT _FONT
-.ALIAS TOC_HEAD_FONT _FONT
-.ALIAS TOC_PARAHEAD_FONT _FONT
.ALIAS TOC_PN_FONT _FONT
-.ALIAS TOC_SUBHEAD_FONT _FONT
-.ALIAS TOC_TITLE_FONT _FONT
\#
.ALIAS AUTHOR_SIZE _SIZE
.ALIAS BIBLIOGRAPHY_STRING_SIZE _SIZE
@@ -17231,20 +16629,13 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.ALIAS HDRFTR_LEFT_SIZE _SIZE
.ALIAS HDRFTR_RIGHT_SIZE _SIZE
.ALIAS HDRFTR_SIZE _SIZE
-.ALIAS HEAD_SIZE _SIZE
.ALIAS LINENUMBER_SIZE _SIZE
.ALIAS PAGENUM_SIZE _SIZE
-.ALIAS PARAHEAD_SIZE _SIZE
.ALIAS QUOTE_SIZE _SIZE
-.ALIAS SUBHEAD_SIZE _SIZE
.ALIAS SUBTITLE_SIZE _SIZE
.ALIAS TITLE_SIZE _SIZE
.ALIAS TOC_HEADER_SIZE _SIZE
-.ALIAS TOC_HEAD_SIZE _SIZE
-.ALIAS TOC_PARAHEAD_SIZE _SIZE
.ALIAS TOC_PN_SIZE _SIZE
-.ALIAS TOC_SUBHEAD_SIZE _SIZE
-.ALIAS TOC_TITLE_SIZE _SIZE
\#
.ALIAS ATTRIBUTE_COLOR _COLOR
.ALIAS AUTHOR_COLOR _COLOR
@@ -17271,6 +16662,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.ALIAS DOC_COVER_TITLE_COLOR _COLOR
.ALIAS DOCHEADER_COLOR _COLOR
.ALIAS DOCTYPE_COLOR _COLOR
+.ALIAS ENDNOTE_STRING_COLOR _COLOR
.ALIAS EPIGRAPH_COLOR _COLOR
.ALIAS FINIS_COLOR _COLOR
.ALIAS FOOTNOTE_COLOR _COLOR
@@ -17279,14 +16671,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.ALIAS HDRFTR_LEFT_COLOR _COLOR
.ALIAS HDRFTR_RIGHT_COLOR _COLOR
.ALIAS HDRFTR_RULE_COLOR _COLOR
-.ALIAS HEAD_COLOR _COLOR
.ALIAS LINEBREAK_COLOR _COLOR
.ALIAS LINENUMBER_COLOR _COLOR
.ALIAS PAGENUM_COLOR _COLOR
-.ALIAS PARAHEAD_COLOR _COLOR
.ALIAS QUOTE_COLOR _COLOR
.ALIAS SECTION_COLOR _COLOR
-.ALIAS SUBHEAD_COLOR _COLOR
.ALIAS SUBTITLE_COLOR _COLOR
.ALIAS TITLE_COLOR _COLOR
\#
@@ -17306,8 +16695,6 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.ALIAS ENDNOTE_TITLE_QUAD _QUAD
.ALIAS EPIGRAPH_QUAD _QUAD
.ALIAS FOOTNOTE_QUAD _QUAD
-.ALIAS HEAD_QUAD _QUAD
-.ALIAS SUBHEAD_QUAD _QUAD
.ALIAS TOC_HEADER_QUAD _QUAD
\#
\# Support aliases
@@ -17332,13 +16719,19 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# As of 1.1.9, EL and TN got changed to make TRAP...TRAP OFF
\# unnecessary for users. However, I used both macros extensively
\# throughout this file (in conjunction with TRAP...TRAP OFF).
-\# EOL is the "old" EL, for the personal use of om.tmac
+\# EOL is the old EL; used only in om.tmac.
\#
.MAC EOL END
-. TRAP OFF
+. if \\n[.vpt] \{\
+. vpt 0
+. nr #RESTORE_TRAP 1
+. \}
. br
. sp -1v
-. TRAP
+. if \\n[#RESTORE_TRAP] \{\
+. vpt
+. rr #RESTORE_TRAP
+. \}
.END
\#
\# REFER SUPPORT
@@ -17350,9 +16743,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# Instruct REF to put references in footnotes.
\#
.MAC FOOTNOTE_REFS END
-. ie !'\\$1'' \{ .rr #FN_REF \}
+. ie !'\\$1'' .rr #FN_REF
. el \{\
-. if r#EN_REF \{ .rr #EN_REF \}
+. if r #EN_REF .rr #EN_REF
. nr #FN_REF 1
. \}
. REF_STYLE NOTE
@@ -17364,11 +16757,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# Instruct REF to collect references for endnotes output.
\#
.MAC ENDNOTE_REFS END
-. ie !'\\$1'' \{ .rr #EN_REF \}
+. ie !'\\$1'' .rr #EN_REF
. el \{\
-. if r#FN_REF \{ .rr #FN_REF \}
+. if r #FN_REF .rr #FN_REF
. nr #EN_REF 1
-. if !r#EN_MARKER_STYLE \{ .ENDNOTE_MARKER_STYLE SUPERSCRIPT \}
+. if !r#EN_MARKER_STYLE .ENDNOTE_MARKER_STYLE SUPERSCRIPT
. \}
. REF_STYLE NOTE
.END
@@ -17390,7 +16783,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.MAC REF END
. ie \\n[#FN_REF]+\\n[#EN_REF]=0 \{\
. if !\\n[#REF_WARNING]=1 \{\
-. tm1 "[mom]: Before REF at line \\n(.c, neither FOOTNOTE_REFS nor ENDNOTE_REFS
+. tm1 "[mom]: Before REF at line \\n[.c], neither FOOTNOTE_REFS nor ENDNOTE_REFS
. tm1 " has been selected. If "sort" and "accumulate" are in your refer
. tm1 " commands, references will be collected for later output with $LIST$.
. tm1 " Otherwise, they will disappear.
@@ -17399,15 +16792,15 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. el \{\
. ie \\n[#REF]=1 \{\
-. if \\n[#FN_REF]=1 \{ .FOOTNOTE OFF \}
-. if \\n[#EN_REF]=1 \{ .ENDNOTE OFF \}
+. if \\n[#FN_REF]=1 .FOOTNOTE OFF
+. if \\n[#EN_REF]=1 .ENDNOTE OFF
. rr #REF
. \}
. el \{\
. rr #REF_WARNING
. nr #REF 1
-. if \\n[#FN_REF]=1 \{ .FOOTNOTE \\$1 \\$2 \\$3 \}
-. if \\n[#EN_REF]=1 \{ .ENDNOTE \}
+. if \\n[#FN_REF]=1 .FOOTNOTE \\$1 \\$2 \\$3
+. if \\n[#EN_REF]=1 .ENDNOTE
. \}
. \}
.END
@@ -17416,11 +16809,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# -------------------------------------------
\#
.MAC REF_BRACKETS_START END
-. if \\n[#FN_REF]=1 \{ .nr #FN_REF 2 \}
-. if \\n[#EN_REF]=1 \{ .nr #EN_REF 2 \}
+. if \\n[#FN_REF]=1 .nr #FN_REF 2
+. if \\n[#EN_REF]=1 .nr #EN_REF 2
. ds $CURRENT_EV \\n[.ev]
. ev REFERENCE
-. evc \\*[$CURRENT_EV]
+. evc \\*[$CURRENT_EV]
. di REFERENCE
.END
\#
@@ -17430,12 +16823,12 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ev
. chop REFERENCE
. unformat REFERENCE
-. if '\\$0'REF)' \{ .nop (\\*[REFERENCE]) \}
-. if '\\$0'REF]' \{ .nop [\\*[REFERENCE]] \}
-. if '\\$0'REF}' \{ .nop {\\*[REFERENCE]} \}
-. if '\\$0'REF>' \{ .nop <\\*[REFERENCE]> \}
-. if \\n[#FN_REF]=2 \{ .nr #FN_REF 1 \}
-. if \\n[#EN_REF]=2 \{ .nr #EN_REF 1 \}
+. if '\\$0'REF)' .nop (\\*[REFERENCE])
+. if '\\$0'REF]' .nop [\\*[REFERENCE]]
+. if '\\$0'REF}' .nop {\\*[REFERENCE]}
+. if '\\$0'REF>' .nop <\\*[REFERENCE]>
+. if \\n[#FN_REF]=2 .nr #FN_REF 1
+. if \\n[#EN_REF]=2 .nr #EN_REF 1
.END
\#
\# These four pairs of aliases allow users to embed references in
@@ -17454,12 +16847,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.ALIAS REF> REF_BRACKETS_END
\#
.MAC REF_STYLE END
-. if '\\$1'NOTE' \{\
-. ds $REF_STYLE NOTE
-. \}
-. if '\\$1'BIBLIO' \{\
-. ds $REF_STYLE BIBLIO
-. \}
+. if '\\$1'NOTE' .ds $REF_STYLE NOTE
+. if '\\$1'BIBLIO' .ds $REF_STYLE BIBLIO
.END
\#
\# Refer indenting
@@ -17487,9 +16876,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# Sets register #REF_HY
\#
.MAC HYPHENATE_REFS END
-. ie '\\$1'' \{ .nr #REF_HY 1 \}
+. ie '\\$1'' .nr #REF_HY 1
. el \{\
-. if r#REF_HY \{ .rr #REF_HY \}
+. if r #REF_HY .rr #REF_HY
. \}
.END
\#
@@ -17497,7 +16886,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# versions of the definitions found in the refer module of s.tmac.
\#
.de @error
-.tm \\n(.F:\\n(.c: macro error: \\$*
+.tm \\n[.F]:\\n[.c]: macro error: \\$*
..
\#
\# Underlining unavoidably turns off sentence spacing.
@@ -17520,7 +16909,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. char \[oq] \[aq]
.\}
.\" Internet site - type 0
-.ds ref*spec!0 i Q A m p T2 s o D c a u n
+.ds ref*spec!0 i Q A m p T2 s o D c a u n
.\" Journal article - type 1
.ds ref*spec!1 i Q A m p T2 q O J V S N D P n
.\" Book - type 2
@@ -17626,7 +17015,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# Output collected refs
\#
.de ref*end-print
-.\" 10 is abritrary
+.\" 10 is arbitrary
.nn 10
.nr #REF_BIB_INDENT (u;\\*[$REF_BIB_INDENT])
.ie \\n[#BIB_LIST]=0 \{\
@@ -17938,7 +17327,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# %V Volume (of a journal, or series of books); for journals, %N may be preferable
.de ref*add-V
.if \\n[ref*type]=1 \{\
-. ref*field V
+. ref*field V
.\}
.if \\n[ref*type]=2 \{\
. ie '\\*[$REF_STYLE]'NOTE' .ref*field V , "vol. "
@@ -17955,7 +17344,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
..
\# %N Journal number
.de ref*add-N
-.ref*field N
+.ref*field N
..
\# %S Series (books or journals)
.de ref*add-S
@@ -18066,10 +17455,10 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.ie '\\*[$REF_STYLE]'NOTE' \{\
. ie \\n[ref*type]=1 .ref*field P : "" .
. el .ref*field P "" "\|"
-. nr ref*suppress-period 1
+. if \\n[ref*type]=1 .nr ref*suppress-period 1
.\}
.el \{\
-. ie \\n[ref*type]=1 .ref*field P \|:
+. ie \\n[ref*type]=1 .ref*field P \|:
. el \{\
. ie d [n .ref*field P . \| .
. el .ref*field P . " "
@@ -18182,7 +17571,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.ie '\\*[$REF_STYLE]'NOTE' .ref*field r , "trans. and ed. "
.el \{\
. ie \\n([T .ref*field r "" " Trans. and ed. "
-. el .ref*field r . " Trans. and ed. "
+. el .ref*field r . " Trans. and ed. "
.\}
.rr [T
..
@@ -18266,43 +17655,84 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\#
\# MARGIN NOTES
\# ------------
-\# This is a wrapper for MNinit.
\#
-\# I could use a 'while' loop to assign args to strings, but too many
-\# 'while' loops are slowing things down.
+\# Wrapper for MNinit.
\#
.MAC MN_INIT END
-. if !'\\$1'rerun' \{\
-. ds $MN-arg1 \\$1
-. ie '\\$2'' .ds $MN-arg2 @
-. el .ds $MN-arg2 \\$2
-. ie '\\$3'' .ds $MN-arg3 @
-. el .ds $MN-arg3 \\$3
-. ie '\\$4'' .ds $MN-arg4 @
-. el .ds $MN-arg4 \\$4
-. ie '\\$5'' .ds $MN-arg5 @
-. el .ds $MN-arg5 \\$5
-. ie '\\$6'' .ds $MN-arg6 @
-. el .ds $MN-arg6 \\$6
-. ie '\\$7'' .ds $MN-arg7 @
-. el .ds $MN-arg7 \\$7
-. ie '\\$8'' .ds $MN-arg8 @
-. el .ds $MN-arg8 \\$8
-. ie '\\$9'' .ds $MN-arg9 @
-. el .ds $MN-arg9 \\$9
-. \}
-. ie \\n[#START_FOR_MNinit]=0 \{\
-. nr #MNinit_DEFERRED 1
-. nr #START_FOR_MNinit 1
-. return
-. \}
-. el \{\
-. MNinit \\*[$MN-arg1] \\*[$MN-arg2] \\*[$MN-arg3] \\*[$MN-arg4] \\*[$MN-arg5] \\*[$MN-arg6] \\*[$MN-arg7] \\*[$MN-arg8] \\*[$MN-arg9]
+. if \B'\\$2' \{\
+. tm1 "[mom]: 1.x-style \\$0 detected, but you are using v2.x.
+. tm1 " v2.x requires flags before arguments to \\$0.
+. tm1 " Please read docelement.html#mn-init and update your file.
+. ab Aborting '\\n[.F]' at \\$0, line \\n[.c].
+. \}
+. nr #ARGS 0 1
+. nr #COUNT 9
+. while \\n+[#ARGS]<=\\n[#COUNT] \{\
+. ds $MN-arg\\n[#ARGS] @
+. \}
+. nr #FLAG 0 1
+. nr #COUNT \\n[#NUM_ARGS]
+. while \\n+[#FLAG]<=\\n[#COUNT] \{\
+. if '\\$1'RAGGED' \{\
+. ds $MN-arg1 \\$1
+. shift
+. \}
+. if '\\$1'SYMMETRIC' \{\
+. ds $MN-arg1 \\$1
+. shift
+. \}
+. if '\\$1'L_WIDTH' \{\
+. shift
+. ds $MN-arg2 \\$1
+. shift
+. \}
+. if '\\$1'R_WIDTH' \{\
+. shift
+. ds $MN-arg3 \\$1
+. shift
+. \}
+. if '\\$1'GUTTER' \{\
+. shift
+. ds $MN-arg4 \\$1
+. shift
+. \}
+. if '\\$1'FONTSTYLE' \{\
+. shift
+. ds $MN-arg5 \\$1
+. shift
+. \}
+. if '\\$1'SIZE' \{\
+. shift
+. ds $MN-arg6 \\$1
+. shift
+. \}
+. if '\\$1'LEAD' \{\
+. shift
+. ds $MN-arg7 \\$1
+. shift
+. \}
+. if '\\$1'COLOR' \{\
+. shift
+. ds $MN-arg8 \\$1
+. shift
+. \}
+. if '\\$1'HY' \{\
+. shift
+. ds $MN-arg9 \\$1
+. shift
+. \}
. \}
+. if '\\*[$MN-arg5]'@' .ds $MN-arg5 \E*[$DOC_FAM]R
+. MNinit \
+\\*[$MN-arg1] \\*[$MN-arg2] \
+\\*[$MN-arg3] \\*[$MN-arg4] \
+\\*[$MN-arg5] \\*[$MN-arg6] \
+\\*[$MN-arg7] \\*[$MN-arg8] \
+\\*[$MN-arg9]
.END
\#
.MAC MN_OVERFLOW_TRAP END
-. if \\n[#OVERFLOW_LEFT]=1 \{\
+. if \\n[#OVERFLOW_LEFT]=1 \{\
. nr #no-repeat-MN-left 1
. di MN_OVERFLOW_LEFT
. \}
@@ -18332,11 +17762,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
\# margin notes ragged-right. If omitted, margin notes are left
\# and right adjusted.
\#
-\#
.de MNinit
. nr #MNinit 1
. ds MN-left-ad b\"
. ds MN-right-ad b\"
+. if '\\$1'@' .shift
. if '\\$1'RAGGED' \{\
. ds MN-left-ad l\"
. ds MN-right-ad l\"
@@ -18347,10 +17777,8 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. ds MN-right-ad l\"
. shift
. \}
-. ie \B'\\$3' \
-. nr MN-sep (n;\\$3)
-. el \
-. nr MN-sep 1m
+. ie \B'\\$3' .nr MN-sep (n;\\$3)
+. el .nr MN-sep 1m
. if ((\\n[.o] - \\n[MN-sep]) < 1n) \
. ab MN: Left margin too small (<1n) for requested margin notes separation.
. ie \B'\\$1' \{\
@@ -18406,31 +17834,23 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. \}
. ie \B'\\$6' \{\
' vs \\$6
-. nr MN-spacing \\n(.v
+. nr MN-spacing \\n[.v]
' vs
-. if '\\$6'DOC' \{ .nr MN-spacing \\n[#DOC_LEAD] \}
. if \\n[#PRINT_STYLE]=1 \{\
. nr MN-spacing \\n[#DOC_LEAD]
. \}
. \}
-. el \{\
-. nr MN-spacing \\n[#DOC_LEAD]
-. \}
+. el .nr MN-spacing \\n[#DOC_LEAD]
. ie \A'\\$7' \
. if !\\n[#PRINT_STYLE]=1 .ds MN-color \\$7\"
. el \
. if !\\n[#PRINT_STYLE]=1 .ds MN-color
-. ie \B'\\$8' \
-. nr MN-hy \\$8
-. el \
-. nr MN-hy \\n[.hy]
+. ie \B'\\$8' .nr MN-hy \\$8
+. el .nr MN-hy \\n[.hy]
. ev MNbottom-left-env
-. if \A'\\*[MN-font]' \
-. ft \\*[MN-font]
-. if \\n[MN-size] \
-. ps \\n[MN-size]u
-. if \\n[MN-spacing] \
-. vs \\n[MN-spacing]u
+. if \A'\\*[MN-font]' .ft \\*[MN-font]
+. if \\n[MN-size] .ps \\n[MN-size]u
+. if \\n[MN-spacing] .vs \\n[MN-spacing]u
. ll \\n[MN-left-width]u
. ad \\*[MN-left-ad]
. hy \\n[MN-hy]
@@ -18438,12 +17858,9 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nop \m[\\*[MN-color]]\c
. ev
. ev MNbottom-right-env
-. if \A'\\*[MN-font]' \
-. ft \\*[MN-font]
-. if \\n[MN-size] \
-. ps \\n[MN-size]u
-. if \\n[MN-spacing] \
-. vs \\n[MN-spacing]u
+. if \A'\\*[MN-font]' .ft \\*[MN-font]
+. if \\n[MN-size] .ps \\n[MN-size]u
+. if \\n[MN-spacing] .vs \\n[MN-spacing]u
. ll \\n[MN-right-width]u
. ad \\*[MN-right-ad]
. hy \\n[MN-hy]
@@ -18484,11 +17901,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
.\}
. if !\\n[#MNinit]=1 \{\
. tm [mom]: Macro MN: You must set parameters with MN_INIT before using MN.
-. ab Aborting
+. ab Aborting '\\n[.F]' at MN, line \\n[.c].
. \}
. ie !'\\$1'' \{\
. if \\n[MN-active] \{\
-. tm [mom]: Macro MN: Can't handle nested margin notes.
+. tm [mom]: Macro MN: Can't handle nested margin notes, line \\n[.c].
. return
. \}
. nr MN-active 1
@@ -18519,7 +17936,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if \\n[MN-active] \{\
. br
. di
-. nr MN-div-\\*[MN-curr]-depth \\n(dn
+. nr MN-div-\\*[MN-curr]-depth \\n[dn]
. ev
. \}
. nr MN-active 0
@@ -18562,10 +17979,11 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. sp 1v
. SHIM
. if \\n[#SHIM]>\\n[MN-spacing] .sp -(1v+\\n[MN-lead-adj]u)
-. tm [mom]: Macro MN: Warning: Left margin note #\\n[MN-curr] on page \\n[#P] shifted down.
+. tm \
+[mom]: Macro MN: Warning: Left margin note #\\n[MN-curr] on page \\n[#P] shifted down.
. \}
.\" If last margin note doesn't fit
-. if ( (\\n(nl+\\n[MN-div-l-\\n[MN-curr]-depth]) > (\\n(.p+\\n[#VARIABLE_FOOTER_POS]-1) ) \{\
+. if ( (\\n[nl]+\\n[MN-div-l-\\n[MN-curr]-depth]) > (\\n[.p]+\\n[#VARIABLE_FOOTER_POS]-1) ) \{\
. if \\n[MN-shifted]=1 \{\
. sp -(1v+\\n[#SHIM]u)
. rm MN-div-l-\\n[MN-curr]
@@ -18576,7 +17994,7 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. nr #no-repeat-MN-left 1
. nr #OVERFLOW_LEFT 1
. ie \\n[#FN_COUNT]=0 \{\
-. ch FOOTER \\n(.pu
+. ch FOOTER \\n[.p]u
. wh \\n[#VARIABLE_FOOTER_POS]u+\\n[MN-lead-adj]u+1u MN_OVERFLOW_TRAP
. \}
. el \{\
@@ -18618,21 +18036,23 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. sp 1v
. SHIM
. if \\n[#SHIM]>\\n[MN-spacing] .sp -(1v+\\n[MN-lead-adj]u)
-. tm [mom]: Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
+. tm [mom]: \
+Macro MN: Warning: Right margin note #\\n[MN-curr] on page \\n[#P] shifted down.
. \}
.\" If last margin note doesn't fit
-. if ( (\\n(nl+\\n[MN-div-r-\\n[MN-curr]-depth]) > (\\n(.p+\\n[#VARIABLE_FOOTER_POS]-1) ) \{\
+. if ( (\\n[nl]+\\n[MN-div-r-\\n[MN-curr]-depth]) > (\\n[.p]+\\n[#VARIABLE_FOOTER_POS]-1) ) \{\
. if \\n[MN-shifted]=1 \{\
. sp -(1v+\\n[#SHIM]u)
. rm MN-div-r-\\n[MN-curr]
-. tm1 "[mom]: No room to start right margin note #\\n[MN-curr] on page \\n[#P] on page \\n[#P].
+. tm1 \
+[mom]: No room to start right margin note #\\n[MN-curr] on page \\n[#P] on page \\n[#P].
. tm1 " Ignoring margin note.
. rr MN-shifted
. \}
. nr #no-repeat-MN-right 1
. nr #OVERFLOW_RIGHT 1
. ie \\n[#FN_COUNT]=0 \{\
-. ch FOOTER \\n(.pu
+. ch FOOTER \\n[.p]u
. wh \\n[#VARIABLE_FOOTER_POS]u+\\n[MN-lead-adj]u+1u MN_OVERFLOW_TRAP
. \}
. el \{\
@@ -18651,4 +18071,430 @@ E\\R'#CAP_HEIGHT \\n[.cht]'
. if !\\n[#no-repeat-MN-right]=1 .vpt 1
..
\#
+\# PDF initial setup
+\# =================
+\#
+.nr CURRENT_LEVEL 0
+.nr VIRTUAL_LEVEL 0
+.nr #PDF_BOOKMARKS 1
+.nr #PDF_BOOKMARKS_OPEN 1
+.pdfview /PageMode /UseOutlines
+\#
+\# TOC_BEFORE_HERE
+\# ---------------
+\#
+\# Call this and the TOC will be placed preceding this page
+\#
+.MAC TOC_BEFORE_HERE END
+. nr TOC_BH 1
+. pdfpagename MOM:TOC
+.END
+\#
+\# TOC_AFTER_HERE
+\# ---------------
+\#
+\# Call this and the TOC will be placed after this page
+\#
+.MAC TOC_AFTER_HERE END
+. nr TOC_BH 2
+. pdfpagename MOM:TOC
+.END
+\#
+\# PDF_LINK_COLOR
+\# -----------------
+\#
+\# Arguments:-
+\# <name defined by previous call to XCOLOR or NEWCOLOR> or
+\# <red> <green> <blue> all 0.0 -> 1.0
+\# Notes
+\# Should be called before START but can also be called at any time to change colour
+\# The colour assigned at the end of the document is used for all links in the TOC
+\#
+.MAC PDF_LINK_COLOR END
+. ie \\n[.$]==3 \{\
+. ds PDFHREF.COLOUR \\$*
+. if !(\B'\\$1' & \B'\\$2' & \B'\\$3') \{\
+. tm1 "[mom]: All three arguments to \\$0 at line \\n[.c] must be decimal.
+. tm1 " Continuing to process using default link color.
+. ds PDFHREF.COLOUR 0.0 0.3 0.9
+. \}
+. defcolor pdf:href.colour rgb \\*[PDFHREF.COLOUR]
+. ds PDFHREF.TEXT.COLOUR pdf:href.colour
+. \}
+. el \{\
+. ie \\n[.$]==0 \{\
+. if dPDFHREF.TEXTCOL.DEFAULT \
+. PDF_LINK_COLOR \\*[PDFHREF.TEXTCOL.DEFAULT]
+. \}
+. el \{\
+. ds ARG_1 \\$1
+. substring ARG_1 0 0
+. ie '\\*[ARG_1]'#' \{\
+. defcolor pdf:href.colour rgb \\$1
+. ds PDFHREF.TEXT.COLOUR pdf:href.colour
+. \}
+. el \{\
+. ie dCOLAL_\\$1 .ds PDFHREF.TEXT.COLOUR \\*[COLAL_\\$1]
+. el .ds PDFHREF.TEXT.COLOUR \\$1
+. \}
+. \}
+. \}
+. if !\\n[PDFHREF_COLOR_SET]=1 \{\
+. nr PDFHREF_COLOR_SET 1
+. \}
+.END
+\#
+\# AUTO_RELOCATE_TOC
+\# -----------------
+\#
+\# Call before START to have TOC automatically relocated to after the
+\# DOC COVER (if there is one) or the COVER if there isn't
+\#
+.MAC AUTO_RELOCATE_TOC END
+. if '\\$1'' .nr TOC.RELOCATE 1
+. if '\\$1'TOP' .nr TOC.RELOCATE 2
+. if '\\$1'BEFORE_DOCCOVER' .nr TOC.RELOCATE 3 \" Same as TOP unless no DOCCOVER
+. if '\\$1'AFTER_DOCCOVER' .nr TOC.RELOCATE 4
+. if '\\$1'BEFORE_COVER' .nr TOC.RELOCATE 5
+. if '\\$1'AFTER_COVER' .nr TOC.RELOCATE 6
+.END
+\#
+\# PDF_BOOKMARK
+\# ------------
+\# *Argument:
+\# Hierarchy Level
+\# Bookmark Text
+\# *Function:
+\# Creates a bookmark using the given text
+\# The level controls the hierarchy of the bookmarks
+\# *Notes
+\# Bookmarks can be turned off (will not be added to document outline) by calling
+\# "PDF_BOOKMARKS NO" and turned on with "PDF_BOOKMARKS".
+\#
+\# Bookmarks can be open or closed by calling PDF_BOOKMARKS_OPEN
+\#
+.MAC PDF_BOOKMARK END
+. if \\n[#PDF_BOOKMARKS] \{\
+. ie '\\$1'NAMED' \{\
+. ds PDF_NM -T \\$2
+. ds PDF_NM2 \\$2
+. shift 2
+. \}
+. el .ds PDF_NM
+. nr LEVEL_REQ \\$1
+. shift
+. ie \\n[LEVEL_REQ]>\\n[VIRTUAL_LEVEL] \{\
+. nr VIRTUAL_LEVEL \\n[LEVEL_REQ]
+. nr LEVEL_REQ \\n[CURRENT_LEVEL]+1
+. \}
+. el \{\
+. ie \\n[LEVEL_REQ]<\\n[VIRTUAL_LEVEL] \{\
+. nr VIRTUAL_DIFF \\n[VIRTUAL_LEVEL]-\\n[LEVEL_REQ]
+. nr VIRTUAL_LEVEL \\n[LEVEL_REQ]
+. nr LEVEL_REQ (\\n[CURRENT_LEVEL]-\\n[VIRTUAL_DIFF])>?1
+. \}
+. el .nr LEVEL_REQ \\n[CURRENT_LEVEL]
+. \}
+. ds PDF_TX \\$*
+\#. asciify PDF_TX
+. pdfmomclean PDF_TX
+.\" . ev protect
+. nr PDF_LEV (\\n[LEVEL_REQ]*\\n[#PDF_BOOKMARKS_OPEN])
+. ie '\\*[.T]'ps' \{\
+. if !'\\*[PDF_NM]'' \{\
+. pdfhref M -N \\*[PDF_NM2] -- \\*[PDF_TX]
+. if !dpdf:href.map .tm gropdf-info:href \\*[PDF_NM2] \\*[PDF_TX]
+. \}
+. pdfbookmark \\n[PDF_LEV] \\*[PDF_TX]
+. \}
+. el .pdfbookmark \\*[PDF_NM] \\n[PDF_LEV] \\$*
+.\" . ev
+. nr CURRENT_LEVEL \\n[LEVEL_REQ]
+. rr LEVEL_REQ
+. rr PDF_LEV
+. rr VIRTUAL_DIFF
+. rm PDF_NM
+. \}
+.END
+\#
+\# PDF_TITLE
+\# ---------
+\# *Argument:
+\# Title Text
+\# *Function
+\# Set the PDF title (this is often used by PDF readers to title the main window)
+\#
+.MAC PDF_TITLE END
+. ds pdftitle \\$*
+. pdfmomclean pdftitle
+\#. pdfinfo /Title \\*[pdftitle]
+. nop \!x X ps:exec [/Title (\\*[pdftitle]) /DOCINFO pdfmark
+.END
+\#
+\# PDF_BOOKMARKS
+\# -------------
+\# *Argument:
+\# <nothing> | <anything>
+\# *Function:
+\# With no parameter turns on outline bookmarks
+\# With any parameter turns off outline bookmarks
+\#
+.MAC PDF_BOOKMARKS END
+. ie '\\$1'' .nr #PDF_BOOKMARKS 1
+. el .nr #PDF_BOOKMARKS 0
+.END
+\#
+\# PDF_BOOKMARKS_OPEN
+\# ------------------
+\# *Argument:
+\# <number> | <nothing> | <text>
+\# *Function:
+\# If arg is numeric all Bookmark levels > arg are closed
+\# If arg is empty all bookmarks are open
+\# If arg is any text then any following bookmarks are closed
+\#
+.MAC PDF_BOOKMARKS_OPEN END
+. ie \B'\\$1' \{\
+. nr PDFOUTLINE.FOLDLEVEL \\$1
+. nr #PDF_BOOKMARKS_OPEN 1
+. \}
+. el .if '\\*[.T]'pdf' \{\
+. nr PDFOUTLINE.FOLDLEVEL 10000
+. ie '\\$1'' .nr #PDF_BOOKMARKS_OPEN 1
+. el .nr #PDF_BOOKMARKS_OPEN 0-1
+. \}
+.END
+\#
+\# PDF_LINK
+\# --------
+\# *Arguments:
+\# $1 = named link
+\# [PREFIX text] : text to prefix link
+\# [SUFFIX text] : text after link
+\# text
+\#
+\# *Notes
+\# Text is output as a hotspot link to named destination.
+\# If text has final '*' it is replaced with the text associated with the link
+\#
+.MAC PDF_LINK END
+. ds PDF_NM \\$1
+. shift
+. ie '\\$1'PREFIX' \{\
+. ds PDF_PRE -P "\&\\$2"
+. shift 2
+. \}
+. el .ds PDF_PRE
+. ie '\\$1'SUFFIX' \{\
+. ds PDF_POST -A "\\$2"
+. shift 2
+. \}
+. el .ds PDF_POST
+. ds PDF_AST_Q
+. ds PDF_TXT \&\\$1
+. ds PDF_AST \\*[PDF_TXT]
+. substring PDF_AST -1 -1
+. if '\\*[PDF_AST]'+' \{\
+. ds PDF_AST *
+. ds PDF_AST_Q ""
+. \}
+. if '\\*[PDF_AST]'*' \{\
+. chop PDF_TXT
+. ie '\\*[.T]'pdf' \{\
+. ie d pdf:look(\\*[PDF_NM]) \
+. as PDF_TXT \&\\*[PDF_AST_Q]\\*[pdf:look(\\*[PDF_NM])]\\*[PDF_AST_Q]
+. el \{\
+. as PDF_TXT Unknown
+. if !rPDF_UNKNOWN .tm \
+\\n[.F]:\\n[.c]: forward reference detected (please run using 'pdfmom')
+. nr PDF_UNKNOWN 1
+. \}
+. \}
+. el \{\
+. ie d pdf:href(\\*[PDF_NM]).info \
+. as PDF_TXT \&\\*[PDF_AST_Q]\\*[pdf:href(\\*[PDF_NM]).info]\\*[PDF_AST_Q]
+. el .as PDF_TXT Unknown
+. \}
+. \}
+. pdfhref L \\*[PDF_PRE] \\*[PDF_POST] -D \\*[PDF_NM] -- \\*[PDF_TXT]
+. rm PDF_NM
+. rm PDF_PRE
+. rm PDF_POST
+. rm PDF_TXT
+. rm PDF_AST
+. rm PDF_AST_Q
+.END
+\#
+.MAC PDF_WWW_LINK END
+. ds PDF_NM \\$1
+. shift
+. ie '\\$1'PREFIX' \{\
+. ds PDF_PRE -P "\\$2"
+. shift 2
+. \}
+. el .ds PDF_PRE
+. ie '\\$1'SUFFIX' \{\
+. ds PDF_POST -A "\\$2"
+. shift 2
+. \}
+. el .ds PDF_POST
+. ds PDF_AST_Q
+. ds PDF_TXT \\$1
+. ds PDF_AST \\*[PDF_TXT]
+. substring PDF_AST -1 -1
+. if '\\*[PDF_AST]'+' \{\
+. ds PDF_AST *
+. ds PDF_AST_Q ""
+. \}
+. if '\\*[PDF_AST]'*' \{\
+. chop PDF_TXT
+. as PDF_TXT \&\\*[PDF_AST_Q]\\*[PDF_NM]\\*[PDF_AST_Q]
+. \}
+. if '\\*[PDF_TXT]'' .ds PDF_TXT \\*[PDF_NM]
+. pdfhref W -D "\\*[PDF_NM]" \\*[PDF_PRE] \\*[PDF_POST] -- \\*[PDF_TXT]
+. rm PDF_NM
+. rm PDF_PRE
+. rm PDF_POST
+. rm PDF_TXT
+. rm PDF_AST PDF_AST_Q
+.END
+\#
+.MAC PDF_TARGET END
+. ds ARG_1 \\$1
+. shift
+. pdfhref M -N \\*[ARG_1] -- \\$*
+. if '\\*[.T]'ps' .if !dpdf:href.map .tm gropdf-info:href \\*[ARG_1] \\$*
+.END
+\#
+\# PDF_IMAGE
+\# ---------
+\# *Arguments:
+\# [ -L -| -R | -C | -I <indent> ] \
+\# <image file> <width> <height> \
+\# [ SCALE <factor> ] [ ADJUST +|-<vertical shift> ]
+\# *Function:
+\# Allows embedding of PDF images with the same arguments as PSPIC
+\# plus SCALE and ADJUST options.
+\# *Notes:
+\# <image file> <width> <height> are required.
+\#
+.MAC PDF_IMAGE END
+. br
+. ev IMG \" Protect fill mode of running text
+. evc 0
+. ds pos:tmp \\$1
+. substring pos:tmp 0 0
+. ie !'\\*[pos:tmp]'-' .ds pdf-img:pos -C
+. el \{\
+. ie '\\$1'-I' \{\
+. shift
+. ds pdf-img:ind \\$1
+. ds pdf-img:pos -L
+. shift
+. \}
+. el \{\
+. ds pdf-img:pos \\$1
+. shift
+. \}
+. \}
+. ds pdf-img:file \\$1
+. ds pdf-img@file \\$1
+. substring pdf-img@file -1 -3
+. if !'\\*[pdf-img@file]'pdf' \{\
+. tm1 "[mom]: Image file '\\*[pdf-img:file]' at line \\n[.c] not found, or not a PDF image.
+. ab Aborting.
+. \}
+. nr pdf-img:width \\$2
+. nr pdf-img:depth \\$3
+. shift 3
+. nr loop-counter \\n[#NUM_ARGS]
+. nr loop-count 0 1
+. while \\n+[loop-count]<=\\n[loop-counter] \{\
+. if '\\$1'SCALE' \{\
+. shift
+. nr pdf-img:scale \\$1
+. shift
+. nr pdf-img:width \\n[pdf-img:width]*\\n[pdf-img:scale]/100
+. nr pdf-img:depth \\n[pdf-img:depth]*\\n[pdf-img:scale]/100
+. \}
+. if '\\$1'ADJUST' \{\
+. shift
+. ds pdf-img@adj \\$1
+. substring pdf-img@adj 0 0
+. ie '\\*[pdf-img@adj]'+' \{\
+. ds pdf-img:top +
+. ds pdf-img:bottom -
+. \}
+. el \{\
+. ds pdf-img:top -
+. ds pdf-img:bottom +
+. \}
+. ds pdf-img@adj \\$1
+. substring pdf-img@adj 1
+. ds pdf-img:adj \\*[pdf-img@adj]
+. rm pdf-img@adj
+. shift
+. \}
+. \}
+. if '\\*[pdf-img:adj]'' \{\
+. ds pdf-img:adj 0
+. ds pdf-img:bottom +
+. \}
+. di PDF*IMAGE
+. nf
+. if d pdf-img:ind .ti \\*[pdf-img:ind]
+. nop \X'pdf: pdfpic \\*[pdf-img:file] \\*[pdf-img:pos] \\n[pdf-img:width]z \\n[pdf-img:depth]z \\n[.ll]z'
+. di
+. nr dn +\\n[pdf-img:depth]-1v
+. nr pdf-img 1
+. if \\n[pdf-img:depth]>\\n[.t] \{\
+. ie \\n[@TOP] .rs
+. el \{\
+. nr pgnum \\n%+\\n[#PAGE_NUM_ADJ] 1
+. tm1 "[mom]: Image '\\*[pdf-img:file]' at line \\n[.c] does not fit on output page \\n[pgnum].
+. tm1 " Shifting to top of page \\n+[pgnum].
+. ev
+. return
+. \}
+. \}
+. sp \\*[pdf-img:top]\\*[pdf-img:adj]
+. PDF*IMAGE
+. rm PDF*IMAGE
+. sp \\n[pdf-img:depth]u
+. PDF_IMAGE_CLEAN
+. ev
+.END
+\#
+.MAC PDF_IMAGE_CLEAN END
+. if !'\\n[.z]'FLOAT*DIV' .SHIM \" Get ourselves back on the baseline grid
+. rm PDF*IMAGE
+. rm pdf-img:adj
+. rm pdf-img:bottom
+. rm pdf-img:file
+. rm pdf-img:ind
+. rm pdf-img:top
+. rr pdf-img:depth
+. rr pdf-img:scale
+. rr pdf-img:width
+.END
+\#
+.de pdfmomclean
+. ie '\\n[.z]'' \{\
+. ds pdfcleaned \\$*
+. ev pdfcln
+. tr \[em]-
+. nf
+. box pdf:clean
+. nop \\*[\\*[pdfcleaned]]
+. fl
+. box
+. chop pdf:clean
+. asciify pdf:clean
+. ev
+. ds \\*[pdfcleaned] "\\*[pdf:clean]
+. rm pdf:clean
+. tr \[em]\[em]
+. \}
+. el .nop \!.pdfmomclean \\$@
+..
\# vim: ft=groff: encoding=latin1: fileencoding=latin1: nomodified:
diff --git a/contrib/pdfmark/ChangeLog b/contrib/pdfmark/ChangeLog
index b9403ab..4d273a6 100644
--- a/contrib/pdfmark/ChangeLog
+++ b/contrib/pdfmark/ChangeLog
@@ -1,3 +1,58 @@
+2013-01-28 Deri James <deri@chuzzlewit.myzen.co.uk>
+
+ * pdfmark.tmac (pdfmark, pdf:composed): Use `\!' instead of `\X'.
+
+ With the old pdfmark there are gaps between two of the lines, but
+ with the new version they disappear. The use of `.br' and `.in 0'
+ is arbitrary any request which causes an implicit break could be
+ used. Two breaks together only produce one line break, but if there
+ is an intervening `\X' then the second break finds the line buffer
+ not empty and generates another line break.
+
+ Using `\!' does alter the position of the pdfmark lines in the
+ intermediate file sent to grops (the pdfmark lines are output
+ immediately rather than being serialised through the output line
+ processing), but this has no effect since the contents of the
+ pdfmark line stay the same. It is the contents which determine
+ where bookmarks jump to not the position of the record in the input
+ stream to grops.
+
+ I initially used `.output', but hit a snag if a pdfbookmark occurs
+ before the document starts to output (message saying to insert an
+ explicit `.br'), this is quite likely for things like `.pdfinfo
+ /Author' which occur at the top of the document. So I'm using the
+ `\!' escape.
+
+2012-09-20 Werner LEMBERG <wl@gnu.org>
+
+ Simplify enviroment handling.
+
+ Suggested by Ivan Shmakov <oneingray@gmail.com>.
+
+ * Makefile.sub (PDFROFF): Don't use export.
+
+2011-12-26 Mike Frysinger <vapier@gentoo.org>
+
+ Fix parallel build race failure.
+
+ Sometimes building in parallel will fail in the pdfmark directory:
+
+ make[2]: Entering directory '.../contrib/pdfmark'
+ rm -f pdfroff
+ rm -f pdfmark.pdf
+ sed -f ... ./pdfroff.sh >pdfroff
+ ...; ./pdfroff ... pdfmark.ms >pdfmark.pdf
+ /bin/sh: ./pdfroff: Permission denied
+ chmod +x pdfroff
+ make[2]: *** [pdfmark.pdf] Error 126
+
+ This is because the generated pdf files use the local generated
+ pdfroff helper script, but they don't depend directly upon it, so
+ make tries to create the two in parallel and randomly falls over.
+
+ * Makefile.sub: Have all the .pdf files explicitly depend on the
+ `pdfroff' helper script.
+
2010-12-23 Keith Marshall <keith.d.marshall@ntlworld.com>
Update copyright notices; pdfmark.tmac bug-fix.
@@ -193,7 +248,7 @@
* Makefile.sub: (RM): Define as `rm -f', for `make' programs
which don't predefine it.
-2005-06-16 Bernd Warken
+2005-06-16 Bernd Warken <groff-bernd.warken-72@web.de>
* pdfroff.sh (NULLDEV): Correct misspelled instance of NULDEV.
@@ -314,7 +369,7 @@
First import of pdfmark files.
-Copyright 2004, 2005, 2006, 2007, 2008
+Copyright 2004-2013
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
diff --git a/contrib/pdfmark/Makefile.sub b/contrib/pdfmark/Makefile.sub
index 9eb2763..768f24a 100644
--- a/contrib/pdfmark/Makefile.sub
+++ b/contrib/pdfmark/Makefile.sub
@@ -1,4 +1,4 @@
-# Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2005, 2006, 2009, 2011, 2012 Free Software Foundation, Inc.
# Written by Keith Marshall (keith.d.marshall@ntlworld.com)
#
# This file is part of groff.
@@ -53,10 +53,10 @@ MFLAG=-M$(srcdir) -M$(top_builddir)/tmac -M$(top_srcdir)/tmac
PFLAG=-dpaper=$(PAGE) -P-p$(PAGE)
PDFROFF=\
- export GROFF_TMPDIR; GROFF_TMPDIR='.'; \
- export GROFF_COMMAND_PREFIX; GROFF_COMMAND_PREFIX=''; \
- export GROFF_BIN_DIR; GROFF_BIN_DIR=$(GROFF_BIN_DIR); \
- export GROFF_BIN_PATH; GROFF_BIN_PATH=$(GROFF_BIN_PATH); \
+ GROFF_TMPDIR=. \
+ GROFF_COMMAND_PREFIX= \
+ GROFF_BIN_DIR="$(GROFF_BIN_DIR)" \
+ GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
./pdfroff --keep-temporary-files $(FFLAG) $(MFLAG) $(PFLAG)
.SUFFIXES: .ms .pdf
@@ -66,6 +66,9 @@ PDFROFF=\
all: pdfroff $(make_pdfdoc)
+# The pdf files use the local script to generate.
+$(PDFDOCFILES): pdfroff
+
pdfdoc: gnu.eps $(PDFDOCFILES)
gnu.eps:
diff --git a/contrib/pdfmark/pdfmark.ms b/contrib/pdfmark/pdfmark.ms
index 9e5e4e7..31d2f95 100644
--- a/contrib/pdfmark/pdfmark.ms
+++ b/contrib/pdfmark/pdfmark.ms
@@ -6,7 +6,7 @@ File position: <groff-source>/contrib/pdfmark/pdfmark.ms
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2004, 2005, 2006, 2009 Free Software Foundation, Inc.
+Copyright (C) 2004-2006, 2009, 2011 Free Software Foundation, Inc.
written by Keith Marshall <keith.d.marshall@ntlworld.com>
Permission is granted to copy, distribute and/or modify this document
@@ -343,6 +343,10 @@ groff -Tps [-m
.I options \& [-
.I "file ..." \& "...] "
.LP
+(Or use the PDF post-processor to avoid using ghostscript,
+.CW -Tpdf\c
+).
+.LP
It may be noted that the
.CW pdfmark
macros have no dependencies on, and no known conflicts with,
@@ -2490,6 +2494,10 @@ groff -Tps
.I "-options ...\&" ] [
file(s) ...
.LP
+(Or use the PDF post-processor to avoid using ghostscript,
+.CW -Tpdf\c
+).
+.LP
When using the
.CW spdf.tmac
package, the
diff --git a/contrib/pdfmark/pdfmark.tmac b/contrib/pdfmark/pdfmark.tmac
index 9dde08d..3c6146b 100644
--- a/contrib/pdfmark/pdfmark.tmac
+++ b/contrib/pdfmark/pdfmark.tmac
@@ -110,7 +110,7 @@ inspiration has come from discussion on the groff mailing list
. \"
. \" This PDFMARK is suitable for single chunk output ...
. \"
-. nop \X'ps:exec [\\$* pdfmark'\c
+. nop \!x X ps:exec [\\$* pdfmark
. \}
. el \{\
. \" ... but, when the limit would be violated, then we must
@@ -129,13 +129,11 @@ inspiration has come from discussion on the groff mailing list
. \"
. pdf*compose pdfmark
. pdf*pdfmark.dispatch
-. chop pdf:composed
-. nop \Y[pdf:composed]\c
. \"
. \" And clean up when done.
. \"
. rm pdf*compose pdf*pdfmark.post
-. rm pdf:compose.test pdf:composed pdf:composed.literal
+. rm pdf:compose.test pdf:composed.literal
. \}
. rr pdf:length
. \}
@@ -428,9 +426,7 @@ inspiration has come from discussion on the groff mailing list
.\" of the "pdf:composed" macro, for assembly of a new PDFMARK.
.\"
.de pdf*pdfmark.post.first
-.de pdf:composed pdf*end
-ps:exec \\*[pdf:composed.line]
-.pdf*end
+. nop \!x X ps:exec \\*[pdf:composed.line]
.\"
.\" Subsequent calls to "pdf*pdfmark.post" are redirected to the
.\" alternative "pdf*pdfmark.post.next" macro, which simply appends
@@ -439,9 +435,7 @@ ps:exec \\*[pdf:composed.line]
.als pdf*pdfmark.post pdf*pdfmark.post.next
..
.de pdf*pdfmark.post.next
-.am pdf:composed pdf*end
-\\*[pdf:composed.line]
-.pdf*end
+. nop \!+\\*[pdf:composed.line]
..
.\" "pdf*end" is a dummy macro. It is required to mark the end
.\" of each individual fragment which is added to "pdf:composed";
@@ -1119,7 +1113,7 @@ ps:exec \\*[pdf:composed.line]
.pdf*href.set \\*[pdf:href-N] \\*[pdf:href-D] \\$1
.\"
.\" If we specified a cross reference, with the "-X" option, and the
-.\" reference mark has been sucessfully created, then we now need to
+.\" reference mark has been successfully created, then we now need to
.\" write the cross reference info to the STDERR stream
.\"
.if \\n[pdf:href-X] .pdf*href.export \\*[PDFHREF.INFO]
@@ -1655,7 +1649,7 @@ ps:exec \\*[pdf:composed.line]
. \"
. nr pdf:llx \\n(.o+\\n[.in]
. \"
-. \" If the current page can accomodate more than the current line,
+. \" If the current page can accommodate more than the current line,
. \" then it will include a second active region for this link; this
. \" will extend from just below the current line to the end of page
. \" trap, if any, or the bottom of the page otherwise, and occupy
diff --git a/contrib/pdfmark/pdfroff.sh b/contrib/pdfmark/pdfroff.sh
index 16b03ea..7cd23cf 100644
--- a/contrib/pdfmark/pdfroff.sh
+++ b/contrib/pdfmark/pdfroff.sh
@@ -545,7 +545,7 @@
test "$PDF_OUTPUT" = "$NULLDEV" && exit 0
#
# We are now ready to start preparing the intermediate PostScript files,
-# from which the PDF output will be compiled -- but before proceding further ...
+# from which the PDF output will be compiled -- but before proceeding further ...
# let's make sure we have a GhostScript interpreter to convert them!
#
if test -n "$GROFF_GHOSTSCRIPT_INTERPRETER"
@@ -653,4 +653,4 @@
$SAY >&2 ". done"
#
# ------------------------------------------------------------------------------
-# $RCSfile: pdfroff.sh,v $ $Revision: 1.18 $: end of file
+# $RCSfile: pdfroff.sh,v $ $Revision: 1.19 $: end of file
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 5f39e65..1fb923d 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+# Copyright (C) 2002-2007, 2009-2011
# Free Software Foundation, Inc.
# Written by Werner Lemberg <wl@gnu.org>
#
@@ -58,6 +58,7 @@ groff_bin_dirs=\
$(top_builddir)/src/preproc/soelim \
$(top_builddir)/src/preproc/html \
$(top_builddir)/src/devices/grops \
+ $(top_builddir)/src/devices/gropdf \
$(top_builddir)/src/devices/grodvi \
$(top_builddir)/src/devices/grotty \
$(top_builddir)/src/devices/grolj4 \
@@ -72,12 +73,11 @@ FFLAG=-F$(top_builddir)/font -F$(top_srcdir)/font
TFLAG=-M$(top_builddir)/tmac -M$(top_srcdir)/tmac
TROFF=$(TROFFBIN) $(TFLAG) $(FFLAG) -ww
-GROFF=GROFF_COMMAND_PREFIX=''; \
- export GROFF_COMMAND_PREFIX; \
- GROFF_BIN_PATH=$(GROFF_BIN_PATH); \
- export GROFF_BIN_PATH; \
- sed -e "s;@VERSION@;$(version)$(revision);" $< \
- | $(GROFFBIN) $(TFLAG) $(FFLAG) -Upet -ww
+GROFF=\
+ sed -e "s;@VERSION@;$(version)$(revision);" $< \
+ | GROFF_COMMAND_PREFIX= \
+ GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+ $(GROFFBIN) $(TFLAG) $(FFLAG) -Upet -ww
imagedir=img
@@ -98,12 +98,14 @@ imagedir=img
.ms.ps:
$(GROFF) -Tps -ms -mwww >$@
+.texinfo.txt:
+ LANG= $(MAKEINFO) --enable-encoding -I$(srcdir) --plaintext -o $@ $<
.texinfo.dvi:
MAKEINFO=$(MAKEINFO) $(TEXI2DVI) -e $<
.texinfo.pdf:
MAKEINFO=$(MAKEINFO) $(TEXI2DVI) -e --pdf $<
.texinfo.html:
- $(MAKEINFO) --enable-encoding -I$(srcdir) --html --no-split $< \
+ LANG= $(MAKEINFO) --enable-encoding -I$(srcdir) --html --no-split $< \
&& $(SHELL) $(srcdir)/fixinfo.sh $@
@@ -133,6 +135,12 @@ webpage.ps: gnu.eps
grnexmpl.ps: grnexmpl.me grnexmpl.g
+split-html:
+ LANG= $(MAKEINFO) --enable-encoding -I$(srcdir) --html groff.texinfo \
+ && for f in groff/*; do \
+ $(SHELL) $(srcdir)/fixinfo.sh $$f; \
+ done
+
clean:
-rm -f *.ps *.html *.txt core
diff --git a/doc/Makefile.sub b/doc/Makefile.sub
index a688d49..09f9392 100644
--- a/doc/Makefile.sub
+++ b/doc/Makefile.sub
@@ -1,4 +1,4 @@
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009
+# Copyright (C) 2002-2007, 2009, 2011, 2013
# Free Software Foundation, Inc.
# Written by Werner Lemberg <wl@gnu.org>
#
@@ -32,18 +32,17 @@ groff_bin_dirs=\
$(top_builddir)/src/preproc/soelim \
$(top_builddir)/src/preproc/html \
$(top_builddir)/src/devices/grops \
+ $(top_builddir)/src/devices/gropdf \
$(top_builddir)/src/devices/grohtml
FFLAG=-F$(top_builddir)/font -F$(top_srcdir)/font
TFLAG=-M$(top_builddir)/tmac -M$(top_srcdir)/tmac
GROFF=\
- GROFF_COMMAND_PREFIX=''; \
- export GROFF_COMMAND_PREFIX; \
- GROFF_BIN_PATH=$(GROFF_BIN_PATH); \
- export GROFF_BIN_PATH; \
sed -e "s;@VERSION@;$(version)$(revision);" $< \
- | $(GROFFBIN) $(TFLAG) $(FFLAG) -Upet -ww
+ | GROFF_COMMAND_PREFIX= \
+ GROFF_BIN_PATH="$(GROFF_BIN_PATH)" \
+ $(GROFFBIN) $(TFLAG) $(FFLAG) -Upet -ww
DOCFILES=\
meref.me \
@@ -226,11 +225,11 @@ install_html: $(HTMLDOCFILES) $(HTMLEXAMPLEFILES)
$(DESTDIR)$(exampleimagedir)
uninstall_sub:
+ $(INSTALL_INFO) --remove --info-dir=$(DESTDIR)$(infodir) \
+ $(DESTDIR)$(infodir)/groff.info
-for f in groff `ls groff.info*`; do \
rm -f $(DESTDIR)$(infodir)/$$f; \
done
- $(INSTALL_INFO) --remove --info-dir=$(DESTDIR)$(infodir) \
- $(DESTDIR)$(infodir)/groff.info
-for f in $(DOCFILES) $(PROCESSEDDOCFILES); do \
rm -f $(DESTDIR)$(docdir)/$$f; \
done
@@ -243,5 +242,6 @@ uninstall_sub:
`ls $(HTMLEXAMPLEFILESALL)`; do \
rm -f $(DESTDIR)$(exampledir)/$$f; \
done
+ -rm -f $(DESTDIR)$(exampledir)/gnu.eps
-rm -f $(DESTDIR)$(exampleimagedir)/$(HTMLEXAMPLEIMAGEFILES)
-rmdir $(DESTDIR)$(exampleimagedir)
diff --git a/doc/fixinfo.sh b/doc/fixinfo.sh
index b5d91f5..2c853f8 100644
--- a/doc/fixinfo.sh
+++ b/doc/fixinfo.sh
@@ -1,6 +1,7 @@
#! /bin/sh
#
-# Fix a problem with HTML output produced by makeinfo 4.8.
+# Fix a problem with HTML output produced by makeinfo
+# (tested with versions 4.8 and 4.13).
#
# groff.texinfo uses (after macro expansion) something like
#
@@ -31,8 +32,8 @@ cat $1 | sed '
:b
$b
N
-/^<blockquote>\n<p>.*\n\n \&mdash;/ {
- s/^<blockquote>\n<p>\(.*\n\)\n \&mdash;/\1\&mdash;/
+/^<blockquote>\n *<p>.*\n\n \&mdash;/ {
+ s/^<blockquote>\n *<p>\(.*\n\)\n \&mdash;/\1\&mdash;/
n
N
N
diff --git a/doc/groff.info b/doc/groff.info
index a420cb6..587dd7a 100644
--- a/doc/groff.info
+++ b/doc/groff.info
@@ -1,10 +1,9 @@
This is groff.info, produced by makeinfo version 4.13 from
./groff.texinfo.
-This manual documents GNU `troff' version 1.21.
+This manual documents GNU `troff' version 1.22.2.
- Copyright (C) 1994-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994-2013 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -25,284 +24,290 @@ END-INFO-DIR-ENTRY

Indirect:
-groff.info-1: 1042
-groff.info-2: 297383
-groff.info-3: 537579
+groff.info-1: 984
+groff.info-2: 298910
+groff.info-3: 551871

Tag Table:
(Indirect)
-Node: Top1042
-Node: Introduction2376
-Node: What Is groff?2829
-Node: What Is groff?-Footnotes4285
-Ref: What Is groff?-Footnote-14359
-Node: History4396
-Node: History-Footnotes9375
-Ref: History-Footnote-19435
-Node: groff Capabilities9643
-Node: Macro Package Intro10839
-Node: Preprocessor Intro11472
-Node: Output device intro13101
-Node: Credits13583
-Node: Invoking groff14097
-Node: Groff Options15395
-Node: Environment26032
-Node: Macro Directories28363
-Node: Font Directories29695
-Node: Paper Size31338
-Node: Invocation Examples32693
-Node: Invocation Examples-Footnotes33895
-Ref: Invocation Examples-Footnote-133979
-Node: grog34212
-Node: Tutorial for Macro Users35495
-Node: Basics35921
-Node: Basics-Footnotes40746
-Ref: Basics-Footnote-140804
-Ref: Basics-Footnote-240898
-Node: Common Features41012
-Node: Paragraphs41807
-Node: Sections and Chapters43319
-Node: Headers and Footers43825
-Node: Page Layout Adjustment44712
-Node: Displays44993
-Node: Footnotes and Annotations46265
-Node: Table of Contents46938
-Node: Indices47467
-Node: Paper Formats47883
-Node: Multiple Columns48270
-Node: Font and Size Changes48534
-Node: Predefined Strings48852
-Node: Preprocessor Support49204
-Node: Configuration and Customization49774
-Node: Macro Packages50157
-Node: man50719
-Node: Man options51161
-Node: Man options-Footnotes53859
-Ref: Man options-Footnote-153927
-Node: Man usage54648
-Node: Man font macros60712
-Node: Miscellaneous man macros62549
-Node: Predefined man strings64285
-Node: Preprocessors in man pages64857
-Node: Optional man extensions65485
-Node: mdoc69482
-Node: ms69661
-Node: ms Intro70170
-Node: General ms Structure70853
-Node: General ms Structure-Footnotes73307
-Ref: General ms Structure-Footnote-173393
-Node: ms Document Control Registers73439
-Node: ms Cover Page Macros80093
-Node: ms Body Text83118
-Node: Paragraphs in ms83611
-Node: Headings in ms85330
-Node: Highlighting in ms88110
-Node: Lists in ms90705
-Node: Indentation values in ms94128
-Node: Tabstops in ms94762
-Node: ms Displays and Keeps95189
-Node: ms Insertions99148
-Node: Example multi-page table100725
-Node: ms Footnotes101186
-Node: ms Page Layout102456
-Node: ms Headers and Footers102987
-Node: ms Margins104448
-Node: ms Multiple Columns104707
-Node: ms TOC105527
-Node: ms Strings and Special Characters108264
-Node: ms Strings and Special Characters-Footnotes111076
-Ref: ms Strings and Special Characters-Footnote-1111188
-Node: Differences from AT&T ms111275
-Node: Missing ms Macros114361
-Node: Additional ms Macros115136
-Node: Naming Conventions116409
-Node: me117445
-Node: mm117613
-Node: gtroff Reference117770
-Node: Text118694
-Node: Filling and Adjusting119263
-Node: Hyphenation119991
-Node: Sentences120788
-Node: Tab Stops121943
-Node: Implicit Line Breaks122851
-Node: Input Conventions123993
-Node: Input Encodings124799
-Node: Measurements126933
-Node: Measurements-Footnotes129138
-Ref: Measurements-Footnote-1129208
-Node: Default Units129280
-Node: Expressions130340
-Node: Expressions-Footnotes133757
-Ref: Expressions-Footnote-1133825
-Node: Identifiers133952
-Node: Embedded Commands137819
-Node: Requests138576
-Node: Request and Macro Arguments140822
-Node: Request and Macro Arguments-Footnotes143318
-Ref: Request and Macro Arguments-Footnote-1143418
-Ref: Request and Macro Arguments-Footnote-2143546
-Node: Macros143900
-Node: Escapes144291
-Node: Comments147163
-Node: Comments-Footnotes149744
-Ref: Comments-Footnote-1149806
-Node: Registers149905
-Node: Setting Registers150418
-Node: Interpolating Registers154186
-Node: Auto-increment155008
-Node: Assigning Formats156564
-Node: Built-in Registers159425
-Node: Manipulating Filling and Adjusting163254
-Node: Manipulating Hyphenation171780
-Node: Manipulating Hyphenation-Footnotes183354
-Ref: Manipulating Hyphenation-Footnote-1183448
-Node: Manipulating Spacing183523
-Node: Tabs and Fields188077
-Node: Tabs and Fields-Footnotes194081
-Ref: Tabs and Fields-Footnote-1194157
-Node: Leaders194235
-Node: Leaders-Footnotes195844
-Ref: Leaders-Footnote-1195904
-Node: Fields195985
-Node: Character Translations197418
-Node: Troff and Nroff Mode206664
-Node: Line Layout208664
-Node: Line Control214528
-Node: Page Layout217190
-Node: Page Control220863
-Node: Fonts and Symbols224603
-Node: Changing Fonts225210
-Node: Font Families228745
-Node: Font Positions233308
-Node: Using Symbols236458
-Node: Using Symbols-Footnotes253457
-Ref: Using Symbols-Footnote-1253529
-Ref: Using Symbols-Footnote-2253982
-Ref: Using Symbols-Footnote-3254053
-Ref: Using Symbols-Footnote-4254292
-Node: Character Classes254355
-Node: Special Fonts257074
-Node: Artificial Fonts258268
-Node: Ligatures and Kerning263782
-Node: Sizes269813
-Node: Sizes-Footnotes270654
-Ref: Sizes-Footnote-1270710
-Node: Changing Type Sizes271122
-Node: Fractional Type Sizes276600
-Node: Strings279677
-Ref: als287260
-Node: Conditionals and Loops289144
-Node: Operators in Conditionals289376
-Node: Operators in Conditionals-Footnotes293125
-Ref: Operators in Conditionals-Footnote-1293221
-Ref: Operators in Conditionals-Footnote-2293300
-Node: if-else293399
-Node: while294991
-Node: Writing Macros297383
-Node: Writing Macros-Footnotes302637
-Ref: Writing Macros-Footnote-1302711
-Node: Copy-in Mode303009
-Node: Parameters303908
-Node: Page Motions307111
-Node: Drawing Requests314794
-Node: Traps325187
-Node: Page Location Traps325829
-Node: Diversion Traps332042
-Node: Input Line Traps332662
-Node: Blank Line Traps333696
-Node: Leading Spaces Traps333990
-Node: End-of-input Traps335571
-Node: Diversions338076
-Node: Environments345324
-Node: Suppressing output349199
-Node: Colors351238
-Node: I/O354815
-Node: Postprocessor Access363355
-Node: Miscellaneous365059
-Node: Miscellaneous-Footnotes370546
-Ref: Miscellaneous-Footnote-1370618
-Node: Gtroff Internals370688
-Node: Gtroff Internals-Footnotes375005
-Ref: Gtroff Internals-Footnote-1375083
-Node: Debugging375217
-Node: Warnings381204
-Node: Warnings-Footnotes384302
-Ref: Warnings-Footnote-1384364
-Node: Implementation Differences384485
-Node: Implementation Differences-Footnotes389319
-Ref: Implementation Differences-Footnote-1389417
-Node: Preprocessors389552
-Node: geqn389871
-Node: Invoking geqn390010
-Node: gtbl390121
-Node: Invoking gtbl390251
-Node: gpic390362
-Node: Invoking gpic390492
-Node: ggrn390603
-Node: Invoking ggrn390733
-Node: grap390844
-Node: grefer391125
-Node: Invoking grefer391266
-Node: gsoelim391387
-Node: Invoking gsoelim391534
-Node: preconv391660
-Node: Invoking preconv391792
-Node: Output Devices391918
-Node: Special Characters392162
-Node: grotty392336
-Node: Invoking grotty392490
-Node: grops392611
-Node: Invoking grops392775
-Node: Embedding PostScript392920
-Node: grodvi393059
-Node: Invoking grodvi393201
-Node: grolj4393322
-Node: Invoking grolj4393465
-Node: grolbp393586
-Node: Invoking grolbp393730
-Node: grohtml393851
-Node: Invoking grohtml395205
-Node: grohtml specific registers and strings395378
-Node: gxditview396390
-Node: Invoking gxditview396531
-Node: File formats396667
-Node: gtroff Output396943
-Node: gtroff Output-Footnotes398788
-Ref: gtroff Output-Footnote-1398860
-Node: Language Concepts398995
-Node: Separation399746
-Node: Argument Units401999
-Node: Document Parts403152
-Node: Command Reference404559
-Node: Comment Command404975
-Node: Simple Commands405473
-Node: Simple Commands-Footnotes411398
-Ref: Simple Commands-Footnote-1411474
-Node: Graphics Commands411535
-Node: Device Control Commands418860
-Node: Obsolete Command422920
-Node: Intermediate Output Examples424206
-Node: Output Language Compatibility427003
-Node: Font Files429064
-Node: Font Files-Footnotes429685
-Ref: Font Files-Footnote-1429751
-Node: DESC File Format429812
-Node: Font File Format435694
-Node: Font File Format-Footnotes441931
-Ref: Font File Format-Footnote-1442009
-Ref: Font File Format-Footnote-2442100
-Node: Installation442319
-Node: Copying This Manual442450
-Node: Request Index467586
-Node: Escape Index484100
-Node: Operator Index490591
-Node: Register Index492073
-Node: Macro Index506438
-Node: String Index519456
-Node: Glyph Name Index528141
-Node: Font File Keyword Index528447
-Node: Program and File Index531856
-Node: Concept Index537579
+Node: Top984
+Node: Introduction2260
+Node: What Is groff?2713
+Node: What Is groff?-Footnotes4169
+Ref: What Is groff?-Footnote-14243
+Node: History4280
+Node: History-Footnotes9259
+Ref: History-Footnote-19319
+Node: groff Capabilities9527
+Node: Macro Package Intro10723
+Node: Preprocessor Intro11356
+Node: Output device intro12986
+Node: Credits13473
+Node: Invoking groff13987
+Node: Groff Options15285
+Node: Environment26097
+Node: Macro Directories28446
+Node: Font Directories29782
+Node: Paper Size31429
+Node: Invocation Examples32784
+Node: Invocation Examples-Footnotes33986
+Ref: Invocation Examples-Footnote-134070
+Node: grog34303
+Node: Tutorial for Macro Users35586
+Node: Basics36012
+Node: Basics-Footnotes40837
+Ref: Basics-Footnote-140895
+Ref: Basics-Footnote-240989
+Node: Common Features41103
+Node: Paragraphs41898
+Node: Sections and Chapters43410
+Node: Headers and Footers43916
+Node: Page Layout Adjustment44803
+Node: Displays45084
+Node: Footnotes and Annotations46356
+Node: Table of Contents47029
+Node: Indices47558
+Node: Paper Formats47974
+Node: Multiple Columns48361
+Node: Font and Size Changes48625
+Node: Predefined Strings48943
+Node: Preprocessor Support49295
+Node: Configuration and Customization49865
+Node: Macro Packages50248
+Node: man50818
+Node: Man options51260
+Node: Man options-Footnotes53958
+Ref: Man options-Footnote-154026
+Node: Man usage54747
+Node: Man font macros60811
+Node: Miscellaneous man macros62648
+Node: Predefined man strings64384
+Node: Preprocessors in man pages64956
+Node: Optional man extensions65584
+Node: mdoc69581
+Node: ms69760
+Node: ms Intro70269
+Node: General ms Structure70952
+Node: General ms Structure-Footnotes73406
+Ref: General ms Structure-Footnote-173492
+Node: ms Document Control Registers73538
+Node: ms Cover Page Macros80192
+Node: ms Body Text83217
+Node: Paragraphs in ms83710
+Node: Headings in ms85484
+Node: Highlighting in ms88264
+Node: Lists in ms90859
+Node: Indentation values in ms94282
+Node: Tabstops in ms94916
+Node: ms Displays and Keeps95343
+Node: ms Insertions99302
+Node: Example multi-page table100879
+Node: ms Footnotes101340
+Node: ms Page Layout102610
+Node: ms Headers and Footers103141
+Node: ms Margins104602
+Node: ms Multiple Columns104861
+Node: ms TOC105681
+Node: ms Strings and Special Characters108418
+Node: ms Strings and Special Characters-Footnotes111230
+Ref: ms Strings and Special Characters-Footnote-1111342
+Node: Differences from AT&T ms111429
+Node: Missing ms Macros114515
+Node: Additional ms Macros115290
+Node: Naming Conventions116563
+Node: me117599
+Node: mm117767
+Node: mom117936
+Node: gtroff Reference118185
+Node: Text119109
+Node: Filling and Adjusting119678
+Node: Hyphenation120406
+Node: Sentences121203
+Node: Tab Stops122358
+Node: Implicit Line Breaks123266
+Node: Input Conventions124408
+Node: Input Encodings125214
+Node: Measurements127348
+Node: Measurements-Footnotes129553
+Ref: Measurements-Footnote-1129623
+Node: Default Units129695
+Node: Expressions130755
+Node: Expressions-Footnotes134168
+Ref: Expressions-Footnote-1134236
+Node: Identifiers134363
+Node: Embedded Commands138230
+Node: Requests138987
+Node: Request and Macro Arguments141233
+Node: Request and Macro Arguments-Footnotes143729
+Ref: Request and Macro Arguments-Footnote-1143829
+Ref: Request and Macro Arguments-Footnote-2143957
+Node: Macros144311
+Node: Escapes144702
+Node: Comments147574
+Node: Comments-Footnotes150155
+Ref: Comments-Footnote-1150217
+Node: Registers150316
+Node: Setting Registers150829
+Node: Interpolating Registers154746
+Node: Auto-increment155568
+Node: Assigning Formats157124
+Node: Built-in Registers159985
+Node: Manipulating Filling and Adjusting163814
+Node: Manipulating Hyphenation172915
+Node: Manipulating Hyphenation-Footnotes184489
+Ref: Manipulating Hyphenation-Footnote-1184583
+Node: Manipulating Spacing184658
+Node: Tabs and Fields189212
+Node: Tabs and Fields-Footnotes195216
+Ref: Tabs and Fields-Footnote-1195292
+Node: Leaders195370
+Node: Leaders-Footnotes196979
+Ref: Leaders-Footnote-1197039
+Node: Fields197120
+Node: Character Translations198553
+Node: Troff and Nroff Mode207799
+Node: Line Layout209799
+Node: Line Control215663
+Node: Page Layout218325
+Node: Page Control222187
+Node: Fonts and Symbols225927
+Node: Changing Fonts226534
+Node: Font Families230069
+Node: Font Positions234641
+Node: Using Symbols237791
+Node: Using Symbols-Footnotes254791
+Ref: Using Symbols-Footnote-1254863
+Ref: Using Symbols-Footnote-2255316
+Ref: Using Symbols-Footnote-3255387
+Ref: Using Symbols-Footnote-4255626
+Node: Character Classes255689
+Node: Special Fonts258408
+Node: Artificial Fonts259602
+Node: Ligatures and Kerning265150
+Node: Sizes271181
+Node: Sizes-Footnotes272022
+Ref: Sizes-Footnote-1272078
+Node: Changing Type Sizes272490
+Node: Fractional Type Sizes277968
+Node: Strings281045
+Ref: als288787
+Node: Conditionals and Loops290671
+Node: Operators in Conditionals290903
+Node: Operators in Conditionals-Footnotes294652
+Ref: Operators in Conditionals-Footnote-1294748
+Ref: Operators in Conditionals-Footnote-2294827
+Node: if-else294926
+Node: while296518
+Node: Writing Macros298910
+Node: Writing Macros-Footnotes304363
+Ref: Writing Macros-Footnote-1304437
+Node: Copy-in Mode304735
+Node: Parameters305634
+Node: Page Motions308837
+Node: Drawing Requests316520
+Node: Traps326913
+Node: Page Location Traps327555
+Node: Diversion Traps333768
+Node: Input Line Traps334388
+Node: Blank Line Traps335422
+Node: Leading Spaces Traps335716
+Node: End-of-input Traps337297
+Node: Diversions340843
+Node: Environments348473
+Node: Suppressing output352348
+Node: Colors354387
+Node: I/O357964
+Node: Postprocessor Access366504
+Node: Miscellaneous368208
+Node: Miscellaneous-Footnotes373695
+Ref: Miscellaneous-Footnote-1373767
+Node: Gtroff Internals373837
+Node: Gtroff Internals-Footnotes378154
+Ref: Gtroff Internals-Footnote-1378232
+Node: Debugging378366
+Node: Warnings384353
+Node: Warnings-Footnotes387451
+Ref: Warnings-Footnote-1387513
+Node: Implementation Differences387634
+Node: Implementation Differences-Footnotes392468
+Ref: Implementation Differences-Footnote-1392566
+Node: Preprocessors392701
+Node: geqn393030
+Node: Invoking geqn393169
+Node: gtbl393280
+Node: Invoking gtbl393410
+Node: gpic393521
+Node: Invoking gpic393651
+Node: ggrn393762
+Node: Invoking ggrn393892
+Node: grap394003
+Node: gchem394283
+Node: Invoking gchem394419
+Node: grefer394535
+Node: Invoking grefer394677
+Node: gsoelim394798
+Node: Invoking gsoelim394945
+Node: preconv395071
+Node: Invoking preconv395203
+Node: Output Devices395329
+Node: Special Characters395584
+Node: grotty395758
+Node: Invoking grotty396086
+Node: grops397884
+Node: Invoking grops398221
+Node: Embedding PostScript399722
+Node: gropdf400404
+Node: Invoking gropdf400732
+Node: Embedding PDF402174
+Node: grodvi402791
+Node: Invoking grodvi403142
+Node: grolj4403931
+Node: Invoking grolj4404280
+Node: grolbp405136
+Node: Invoking grolbp405482
+Node: grohtml406275
+Node: Invoking grohtml407706
+Node: grohtml specific registers and strings409524
+Node: gxditview410536
+Node: Invoking gxditview410677
+Node: File formats410813
+Node: gtroff Output411089
+Node: gtroff Output-Footnotes412934
+Ref: gtroff Output-Footnote-1413006
+Node: Language Concepts413141
+Node: Separation413892
+Node: Argument Units416145
+Node: Document Parts417298
+Node: Command Reference418705
+Node: Comment Command419121
+Node: Simple Commands419619
+Node: Simple Commands-Footnotes425544
+Ref: Simple Commands-Footnote-1425620
+Node: Graphics Commands425681
+Node: Device Control Commands433006
+Node: Obsolete Command437066
+Node: Intermediate Output Examples438352
+Node: Output Language Compatibility441149
+Node: Font Files443210
+Node: Font Files-Footnotes443831
+Ref: Font Files-Footnote-1443897
+Node: DESC File Format443958
+Node: Font File Format449840
+Node: Font File Format-Footnotes456077
+Ref: Font File Format-Footnote-1456155
+Ref: Font File Format-Footnote-2456246
+Node: Installation456465
+Node: Copying This Manual456596
+Node: Request Index481732
+Node: Escape Index498246
+Node: Operator Index504737
+Node: Register Index506219
+Node: Macro Index520584
+Node: String Index533602
+Node: Glyph Name Index542287
+Node: Font File Keyword Index542593
+Node: Program and File Index546002
+Node: Concept Index551871

End Tag Table
diff --git a/doc/groff.info-1 b/doc/groff.info-1
index a3a49bb..75b184a 100644
--- a/doc/groff.info-1
+++ b/doc/groff.info-1
@@ -1,10 +1,9 @@
This is groff.info, produced by makeinfo version 4.13 from
./groff.texinfo.
-This manual documents GNU `troff' version 1.21.
+This manual documents GNU `troff' version 1.22.2.
- Copyright (C) 1994-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994-2013 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -52,10 +51,9 @@ GNU troff
* Program and File Index::
* Concept Index::
- This manual documents GNU `troff' version 1.21.
+ This manual documents GNU `troff' version 1.22.2.
- Copyright (C) 1994-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994-2013 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -326,9 +324,10 @@ need to construct the pipe, but only tell `groff' what preprocessors to
use.
`groff' currently has preprocessors for producing tables (`tbl'),
-typesetting equations (`eqn'), drawing pictures (`pic' and `grn'), and
-for processing bibliographies (`refer'). An associated program which
-is useful when dealing with preprocessors is `soelim'.
+typesetting equations (`eqn'), drawing pictures (`pic' and `grn'),
+processing bibliographies (`refer'), and drawing chemical structures
+(`chem'). An associated program which is useful when dealing with
+preprocessors is `soelim'.
A free implementation of `grap', a preprocessor for drawing graphs,
can be obtained as an extra package; `groff' can use `grap' also.
@@ -337,9 +336,8 @@ can be obtained as an extra package; `groff' can use `grap' also.
`groff' to handle documents in various input encodings.
There are other preprocessors in existence, but, unfortunately, no
-free implementations are available. Among them are preprocessors for
-drawing mathematical pictures (`ideal') and chemical structures
-(`chem').
+free implementations are available. Among them is a preprocessor for
+drawing mathematical pictures (`ideal').

File: groff.info, Node: Output device intro, Next: Credits, Prev: Preprocessor Intro, Up: Introduction
@@ -351,7 +349,7 @@ File: groff.info, Node: Output device intro, Next: Credits, Prev: Preprocesso
a postprocessor to produce output for a particular device. Currently,
`groff' has postprocessors for POSTSCRIPT devices, character terminals,
X Windows (for previewing), TeX DVI format, HP LaserJet 4 and Canon LBP
-printers (which use CAPSL), HTML, and XHTML.
+printers (which use CAPSL), HTML, XHTML, and PDF.

File: groff.info, Node: Credits, Prev: Output device intro, Up: Introduction
@@ -414,22 +412,22 @@ File: groff.info, Node: Groff Options, Next: Environment, Prev: Invoking grof
appropriate for the selected device. The default device is `ps' (but
it can be changed when `groff' is configured and built). It can
optionally preprocess with any of `gpic', `geqn', `gtbl', `ggrn',
-`grap', `grefer', `gsoelim', or `preconv'.
+`grap', `gchem', `grefer', `gsoelim', or `preconv'.
This section only documents options to the `groff' front end. Many
of the arguments to `groff' are passed on to `gtroff', therefore those
are also included. Arguments to pre- or postprocessors can be found in
*note Invoking gpic::, *note Invoking geqn::, *note Invoking gtbl::,
-*note Invoking ggrn::, *note Invoking grefer::, *note Invoking
-gsoelim::, *note Invoking preconv::, *note Invoking grotty::, *note
-Invoking grops::, *note Invoking grohtml::, *note Invoking grodvi::,
-*note Invoking grolj4::, *note Invoking grolbp::, and *note Invoking
-gxditview::.
+*note Invoking ggrn::, *note Invoking grefer::, *note Invoking gchem::,
+*note Invoking gsoelim::, *note Invoking preconv::, *note Invoking
+grotty::, *note Invoking grops::, *note Invoking gropdf::, *note
+Invoking grohtml::, *note Invoking grodvi::, *note Invoking grolj4::,
+*note Invoking grolbp::, and *note Invoking gxditview::.
The command line format for `groff' is:
- groff [ -abceghiklpstvzCEGNRSUVXZ ] [ -dCS ] [ -DARG ]
+ groff [ -abceghijklpstvzCEGNRSUVXZ ] [ -dCS ] [ -DARG ]
[ -fFAM ] [ -FDIR ] [ -IDIR ] [ -KARG ]
[ -LARG ] [ -mNAME ] [ -MDIR ] [ -nNUM ]
[ -oLIST ] [ -PARG ] [ -rCN ] [ -TDEF ]
@@ -510,7 +508,7 @@ to format a file.
Preprocess with `ggrn'.
`-G'
- Preprocess with `grap'.
+ Preprocess with `grap'. Implies `-p'.
`-h'
Print a help message.
@@ -537,6 +535,9 @@ to format a file.
specified. No directory search is performed for files specified
using an absolute path.
+`-j'
+ Preprocess with `gchem'. Implies `-p'.
+
`-k'
Preprocess with `preconv'. This is run before any other
preprocessor. Please refer to `preconv''s manual page for its
@@ -632,6 +633,9 @@ to format a file.
`ps'
For POSTSCRIPT printers and previewers.
+ `pdf'
+ For PDF viewers or printers.
+
`dvi'
For TeX DVI format.
@@ -739,10 +743,10 @@ not within `gtroff') which can modify the behavior of `groff'.
`GROFF_COMMAND_PREFIX'
If this is set to X, then `groff' runs `Xtroff' instead of
- `gtroff'. This also applies to `tbl', `pic', `eqn', `grn',
+ `gtroff'. This also applies to `tbl', `pic', `eqn', `grn', `chem',
`refer', and `soelim'. It does not apply to `grops', `grodvi',
- `grotty', `pre-grohtml', `post-grohtml', `preconv', `grolj4', and
- `gxditview'.
+ `grotty', `pre-grohtml', `post-grohtml', `preconv', `grolj4',
+ `gropdf', and `gxditview'.
The default command prefix is determined during the installation
process. If a non-GNU troff system is found, prefix `g' is used,
@@ -815,11 +819,11 @@ files are (in that order):
/usr/local/lib/groff/site-tmac
/usr/local/share/groff/site-tmac
- /usr/local/share/groff/1.21/tmac
+ /usr/local/share/groff/1.22.2/tmac
- assuming that the version of `groff' is 1.21, and the installation
- prefix was `/usr/local'. It is possible to fine-tune those
- directories during the installation process.
+ assuming that the version of `groff' is 1.22.2, and the
+ installation prefix was `/usr/local'. It is possible to fine-tune
+ those directories during the installation process.

File: groff.info, Node: Font Directories, Next: Paper Size, Prev: Macro Directories, Up: Invoking groff
@@ -855,11 +859,11 @@ DVI output, and `/foo/bar' as a font directory, the font files for
/usr/local/share/groff/site-font
- /usr/local/share/groff/1.21/font
+ /usr/local/share/groff/1.22.2/font
- assuming that the version of `groff' is 1.21, and the installation
- prefix was `/usr/local'. It is possible to fine-tune those
- directories during the installation process.
+ assuming that the version of `groff' is 1.22.2, and the
+ installation prefix was `/usr/local'. It is possible to fine-tune
+ those directories during the installation process.

File: groff.info, Node: Paper Size, Next: Invocation Examples, Prev: Font Directories, Up: Invoking groff
@@ -1407,6 +1411,7 @@ non-option arguments; the above (failing) sample is thus reordered to
* ms::
* me::
* mm::
+* mom::

File: groff.info, Node: man, Next: mdoc, Prev: Macro Packages, Up: Macro Packages
@@ -2417,9 +2422,11 @@ File: groff.info, Node: Paragraphs in ms, Next: Headings in ms, Prev: ms Body
The following paragraph types are available.
-- Macro: .PP
- -- Macro: .LP
Sets a paragraph with an initial indentation.
+ -- Macro: .LP
+ Sets a paragraph without an initial indentation.
+
-- Macro: .QP
Sets a paragraph that is indented at both left and right margins.
The effect is identical to the HTML `<BLOCKQUOTE>' element. The
@@ -3499,7 +3506,7 @@ See the `meintro.me' and `meref.me' documents in groff's `doc'
directory.

-File: groff.info, Node: mm, Prev: me, Up: Macro Packages
+File: groff.info, Node: mm, Next: mom, Prev: me, Up: Macro Packages
4.5 `mm'
========
@@ -3508,6 +3515,16 @@ See the `groff_mm(7)' man page (type `man groff_mm' at the command
line).

+File: groff.info, Node: mom, Prev: mm, Up: Macro Packages
+
+4.6 `mom'
+=========
+
+See the `groff_mom(7)' man page (type `man groff_mom' at the command
+line), which gives a short overview and a link to its extensive
+documentation in HTML format.
+
+
File: groff.info, Node: gtroff Reference, Next: Preprocessors, Prev: Macro Packages, Up: Top
5 `gtroff' Reference
@@ -3909,7 +3926,7 @@ File: groff.info, Node: Expressions, Next: Identifiers, Prev: Measurements,
beginning of an expression, and negates the entire expression.
Attempting to insert the `!' operator within the expression
results in a `numeric expression expected' warning. This
- maintains bug-compatibility with old versions of `troff'.
+ maintains compatibility with old versions of `troff'.
Example:
@@ -4517,6 +4534,10 @@ File: groff.info, Node: Setting Registers, Next: Interpolating Registers, Pre
Define or set registers using the `nr' request or the `\R' escape.
+ Although the following requests and escapes can be used to create
+registers, simply using an undefined register will cause it to be set
+to zero.
+
-- Request: .nr ident value
-- Escape: \R'ident value'
Set number register IDENT to VALUE. If IDENT doesn't exist,
@@ -4553,7 +4574,7 @@ Define or set registers using the `nr' request or the `\R' escape.
.tm :k == \n[:k]
=> :k == 15000
- If you process this with the PostScript device (`-Tps'), there
+ If you process this with the POSTSCRIPT device (`-Tps'), there
will be a line break eventually after `ggg' in both input lines.
However, after processing the space after `ggg', the partially
collected line is not overfull yet, so `troff' continues to
@@ -5011,26 +5032,48 @@ request.
Finally, MODE can be the numeric argument returned by the `.j'
register.
- With no argument, `gtroff' adjusts lines in the same way it did
- before adjusting was deactivated (with a call to `na', for
- example).
+ Using `ad' without argument is the same as saying `.ad \[.j]'. In
+ particular, `gtroff' adjusts lines in the same way it did before
+ adjusting was deactivated (with a call to `na', say). For
+ example, this input code
- text
- .ad r
+ .de AD
+ . br
+ . ad \\$1
+ ..
+ .
+ .de NA
+ . br
+ . na
+ ..
+ .
+ textA
+ .AD r
.nr ad \n[.j]
- text
- .ad c
- text
- .na
- text
- .ad \" back to centering
- text
- .ad \n[ad] \" back to right justifying
-
- The current adjustment mode is available in the read-only number
- register `.j'; it can be stored and subsequently used to set
- adjustment.
+ textB
+ .AD c
+ textC
+ .NA
+ textD
+ .AD \" back to centering
+ textE
+ .AD \n[ad] \" back to right justifying
+ textF
+
+ produces the following output:
+
+
+ textA
+ textB
+ textC
+ textD
+ textE
+ textF
+
+ As just demonstrated, the current adjustment mode is available in
+ the read-only number register `.j'; it can be stored and
+ subsequently used to set adjustment.
The adjustment mode status is associated with the current
environment (*note Environments::).
@@ -6497,6 +6540,10 @@ and bottom titles (or headers and footers).
Some notes:
+ * The line length set by the `ll' request is not honoured by
+ `tl'; use the `lt' request (described below) instead, to
+ control line length for text set by `tl'.
+
* A title line is not restricted to the top or bottom of a page.
* `tl' prints the title line immediately, ignoring a partially
@@ -6790,9 +6837,10 @@ of "font families" and "font styles". The fonts are specified as the
concatenation of the font family and style. Specifying a font without
the family part causes `gtroff' to use that style of the current family.
- Currently, fonts for the devices `-Tps', `-Tdvi', `-Tlj4', `-Tlbp',
-and the X11 fonts are set up to this mechanism. By default, `gtroff'
-uses the Times family with the four styles `R', `I', `B', and `BI'.
+ Currently, fonts for the devices `-Tps', `-Tpdf', `-Tdvi', `-Tlj4',
+`-Tlbp', and the X11 fonts are set up to this mechanism. By default,
+`gtroff' uses the Times family with the four styles `R', `I', `B', and
+`BI'.
This way, it is possible to use the basic four fonts and to select a
different font family on the command line (*note Groff Options::).
@@ -7137,8 +7185,8 @@ is called "groff glyph list (GGL)".
* Any component `uXXXX' which is found in the list of
decomposable glyphs is decomposed.
- * The resulting elements are then concatenated with `_'
- inbetween, dropping the leading `u' in all elements but the
+ * The resulting elements are then concatenated with `_' in
+ between, dropping the leading `u' in all elements but the
first.
No check for the existence of any component (similar to `tr'
@@ -7524,7 +7572,8 @@ separate programs. Most of them are no longer necessary in GNU
The read-only number register `.height' contains the font height as
set by `\H'.
- Currently, only the `-Tps' device supports this feature.
+ Currently, only the `-Tps' and `-Tpdf' devices support this
+ feature.
Note that `\H' doesn't produce an input token in `gtroff'. As a
consequence, it can be used in requests like `mc' (which expects a
@@ -7553,7 +7602,8 @@ separate programs. Most of them are no longer necessary in GNU
The read-only number register `.slant' contains the font slant as
set by `\S'.
- Currently, only the `-Tps' device supports this feature.
+ Currently, only the `-Tps' and `-Tpdf' devices support this
+ feature.
Note that `\S' doesn't produce an input token in `gtroff'. As a
consequence, it can be used in requests like `mc' (which expects a
@@ -8063,6 +8113,10 @@ File: groff.info, Node: Strings, Next: Conditionals and Loops, Prev: Sizes,
(i.e. there are no built-in strings exept `.T', but even this is a
read-write string variable).
+ Although the following requests can be used to create strings,
+simply using an undefined string will cause it to be defined as empty.
+*Note Identifiers::.
+
-- Request: .ds name [string]
-- Request: .ds1 name [string]
-- Escape: \*n
diff --git a/doc/groff.info-2 b/doc/groff.info-2
index e003f17..d1da986 100644
--- a/doc/groff.info-2
+++ b/doc/groff.info-2
@@ -1,10 +1,9 @@
This is groff.info, produced by makeinfo version 4.13 from
./groff.texinfo.
-This manual documents GNU `troff' version 1.21.
+This manual documents GNU `troff' version 1.22.2.
- Copyright (C) 1994-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1994-2013 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -33,14 +32,19 @@ A "macro" is a collection of text and embedded commands which can be
invoked multiple times. Use macros to define common operations. *Note
Strings::, for a (limited) alternative syntax to call macros.
+ Although the following requests can be used to create macros, simply
+using an undefined macro will cause it to be defined as empty. *Note
+Identifiers::.
+
-- Request: .de name [end]
-- Request: .de1 name [end]
-- Request: .dei name [end]
-- Request: .dei1 name [end]
Define a new macro named NAME. `gtroff' copies subsequent lines
(starting with the next one) into an internal buffer until it
- encounters the line `..' (two dots). The optional second argument
- to `de' changes this to a macro to `.END'.
+ encounters the line `..' (two dots). If the optional second
+ argument to `de' is present it is used as the macro closure
+ request instead of `..'.
There can be whitespace after the first dot in the line containing
the ending token (either `.' or macro `END'). Don't insert a tab
@@ -1226,6 +1230,33 @@ File: groff.info, Node: End-of-input Traps, Prev: Leading Spaces Traps, Up: T
page break caused by the end macro; further page breaks emitted by
the end macro are handled normally.
+ Another possible use of the `em' request is to make `gtroff' emit
+ a single large page instead of multiple pages. For example, one
+ may want to produce a long plain-text file for reading on-screen.
+ The idea is to set the page length at the beginning of the
+ document to a very large value to hold all the text, and
+ automatically adjust it to the exact height of the document after
+ the text has been output.
+
+
+ .de adjust-page-length
+ . br
+ . pl \\n[nl]u \" \n[nl] holds the current page length
+ ..
+ .
+ .de single-page-mode
+ . pl 99999
+ . em adjust-page-length
+ ..
+ .
+ .\" activate the above code
+ .single-page-mode
+
+ Since only one end-of-input trap does exist and other macro
+ packages may already use it, care must be taken not to break the
+ mechanism. A simple solution would be to append the above macro
+ to the macro package's end-of-input macro using the `.am' request.
+

File: groff.info, Node: Diversions, Next: Environments, Prev: Traps, Up: gtroff Reference
@@ -1242,6 +1273,10 @@ footnotes, tables of contents, and indices.
diversion" if no diversion is active (i.e., the data is diverted to the
output device).
+ Although the following requests can be used to create diversions,
+simply using an undefined diversion will cause it to be defined as
+empty. *Note Identifiers::.
+
-- Request: .di macro
-- Request: .da macro
Begin a diversion. Like the `de' request, it takes an argument of
@@ -1443,6 +1478,10 @@ output device).
.asciify x
.x
+ Note that `asciify' cannot return all items in a diversion back to
+ their source equivalent, nodes such as `\N[...]' will still remain
+ as nodes, so the result cannot be guaranteed to be a pure string.
+
*Note Copy-in Mode::.
-- Request: .unformat div
@@ -2187,7 +2226,7 @@ categorized elsewhere in this manual.
-- Register: \n[lly]
-- Register: \n[urx]
-- Register: \n[ury]
- Retrieve the bounding box of the PostScript image found in
+ Retrieve the bounding box of the POSTSCRIPT image found in
FILENAME. The file must conform to Adobe's "Document Structuring
Conventions" (DSC); the command searches for a `%%BoundingBox'
comment and extracts the bounding box values into the number
@@ -2774,6 +2813,7 @@ which are freely available.
* gpic::
* ggrn::
* grap::
+* gchem::
* grefer::
* gsoelim::
* preconv::
@@ -2843,7 +2883,7 @@ File: groff.info, Node: Invoking ggrn, Prev: ggrn, Up: ggrn
---------------------

-File: groff.info, Node: grap, Next: grefer, Prev: ggrn, Up: Preprocessors
+File: groff.info, Node: grap, Next: gchem, Prev: ggrn, Up: Preprocessors
6.5 `grap'
==========
@@ -2854,9 +2894,25 @@ an extra package from the following address:
`http://www.lunabase.org/~faber/Vault/software/grap/'

-File: groff.info, Node: grefer, Next: gsoelim, Prev: grap, Up: Preprocessors
+File: groff.info, Node: gchem, Next: grefer, Prev: grap, Up: Preprocessors
+
+6.6 `gchem'
+===========
+
+* Menu:
+
+* Invoking gchem::
+
+
+File: groff.info, Node: Invoking gchem, Prev: gchem, Up: gchem
-6.6 `grefer'
+6.6.1 Invoking `gchem'
+----------------------
+
+
+File: groff.info, Node: grefer, Next: gsoelim, Prev: gchem, Up: Preprocessors
+
+6.7 `grefer'
============
* Menu:
@@ -2866,13 +2922,13 @@ File: groff.info, Node: grefer, Next: gsoelim, Prev: grap, Up: Preprocessors

File: groff.info, Node: Invoking grefer, Prev: grefer, Up: grefer
-6.6.1 Invoking `grefer'
+6.7.1 Invoking `grefer'
-----------------------

File: groff.info, Node: gsoelim, Next: preconv, Prev: grefer, Up: Preprocessors
-6.7 `gsoelim'
+6.8 `gsoelim'
=============
* Menu:
@@ -2882,13 +2938,13 @@ File: groff.info, Node: gsoelim, Next: preconv, Prev: grefer, Up: Preprocess

File: groff.info, Node: Invoking gsoelim, Prev: gsoelim, Up: gsoelim
-6.7.1 Invoking `gsoelim'
+6.8.1 Invoking `gsoelim'
------------------------

File: groff.info, Node: preconv, Prev: gsoelim, Up: Preprocessors
-6.8 `preconv'
+6.9 `preconv'
=============
* Menu:
@@ -2898,7 +2954,7 @@ File: groff.info, Node: preconv, Prev: gsoelim, Up: Preprocessors

File: groff.info, Node: Invoking preconv, Prev: preconv, Up: preconv
-6.8.1 Invoking `preconv'
+6.9.1 Invoking `preconv'
------------------------

@@ -2912,6 +2968,7 @@ File: groff.info, Node: Output Devices, Next: File formats, Prev: Preprocesso
* Special Characters::
* grotty::
* grops::
+* gropdf::
* grodvi::
* grolj4::
* grolbp::
@@ -2932,6 +2989,10 @@ File: groff.info, Node: grotty, Next: grops, Prev: Special Characters, Up: O
7.2 `grotty'
============
+The postprocessor `grotty' translates the output from GNU `troff' into
+a form suitable for typewriter-like devices. It is fully documented on
+its manual page, `grotty(1)'.
+
* Menu:
* Invoking grotty::
@@ -2942,12 +3003,72 @@ File: groff.info, Node: Invoking grotty, Prev: grotty, Up: grotty
7.2.1 Invoking `grotty'
-----------------------
+The postprocessor `grotty' accepts the following command-line options:
+
+`-b'
+ Do not overstrike bold glyphs. Ignored if `-c' isn't used.
+
+`-B'
+ Do not underline bold-italic glyphs. Ignored if `-c' isn't used.
+
+`-c'
+ Use overprint and disable colours for printing on legacy Teletype
+ printers (see below).
+
+`-d'
+ Do not render lines (this is, ignore all `\D' escapes).
+
+`-f'
+ Use form feed control characters in the output.
+
+`-FDIR'
+ Put the directory `DIR/devNAME' in front of the search path for
+ the font and device description files, given the target device
+ NAME.
+
+`-h'
+ Use horizontal tabs for sequences of 8 space characters.
+
+`-i'
+ Request italic glyphs from the terminal. Ignored if `-c' is
+ active.
+
+`-o'
+ Do not overstrike.
+
+`-r'
+ Highlight italic glyphs. Ignored if `-c' is active.
+
+`-u'
+ Do not underline italic glyphs. Ignored if `-c' isn't used.
+
+`-U'
+ Do not overstrike bold-italic glyphs. Ignored if `-c' isn't used.
+
+`-v'
+ Print the version number.
+
+ The `-c' mode for TTY output devices means that underlining is done
+by emitting sequences of `_' and `^H' (the backspace character) before
+the actual character. Literally, this is printing an underline
+character, then moving the caret back one character position, and
+printing the actual character at the same position as the underline
+character (similar to a typewriter). Usually, a modern terminal can't
+interpret this (and the original Teletype machines for which this
+sequence was appropriate are no longer in use). You need a pager
+program like `less' which translates this into ISO 6429 SGR sequences
+to control terminals.
+

-File: groff.info, Node: grops, Next: grodvi, Prev: grotty, Up: Output Devices
+File: groff.info, Node: grops, Next: gropdf, Prev: grotty, Up: Output Devices
7.3 `grops'
===========
+The postprocessor `grops' translates the output from GNU `troff' into a
+form suitable for Adobe POSTSCRIPT devices. It is fully documented on
+its manual page, `grops(1)'.
+
* Menu:
* Invoking grops::
@@ -2959,18 +3080,163 @@ File: groff.info, Node: Invoking grops, Next: Embedding PostScript, Prev: gro
7.3.1 Invoking `grops'
----------------------
+The postprocessor `grops' accepts the following command-line options:
+
+`-bFLAGS'
+ Use backward compatibility settings given by FLAGS as documented
+ in the `grops(1)' manual page. Overrides the command `broken' in
+ the `DESC' file.
+
+`-cN'
+ Print N copies of each page.
+
+`-FDIR'
+ Put the directory `DIR/devNAME' in front of the search path for
+ the font, prologue and device description files, given the target
+ device NAME, usually *ps*.
+
+`-g'
+ Tell the printer to guess the page length. Useful for printing
+ vertically centered pages when the paper dimensions are determined
+ at print time.
+
+`-IPATH ...'
+ Consider the directory `PATH' for searching included files
+ specified with relative paths. The current directory is searched
+ as fallback.
+
+`-l'
+ Use landscape orientation.
+
+`-m'
+ Use manual feed.
+
+`-pPAPERSIZE'
+ Set the page dimensions. Overrides the commands `papersize',
+ `paperlength', and `paperwidth' in the `DESC' file. See the
+ `groff_font(5)' manual page for details.
+
+`-PPROLOGUE'
+ Use the PROLOGUE in the font path as the prologue instead of the
+ default `prologue'. Overrides the environment variable
+ `GROPS_PROLOGUE'.
+
+`-wN'
+ Set the line thickness to N/1000em. Overrides the default value N
+ = 40.
+
+`-v'
+ Print the version number.
+

File: groff.info, Node: Embedding PostScript, Prev: Invoking grops, Up: grops
7.3.2 Embedding POSTSCRIPT
--------------------------
+The escape sequence
+
+ `\X'ps: import FILE LLX LLY URX URY WIDTH [HEIGHT]''
+
+places a rectangle of the specified WIDTH containing the POSTSCRIPT
+drawing from file FILE bound by the box from LLX LLY to URX URY (in
+POSTSCRIPT coordinates) at the insertion point. If HEIGHT is not
+specified, the embedded drawing is scaled proportionally.
+
+ *Note Miscellaneous::, for the `psbb' request which automatically
+generates the bounding box.
+
+ This escape sequence is used internally by the macro `PSPIC' (see
+the `groff_tmac(5)' manual page).
+
+
+File: groff.info, Node: gropdf, Next: grodvi, Prev: grops, Up: Output Devices
+
+7.4 `gropdf'
+============
+
+The postprocessor `gropdf' translates the output from GNU `troff' into
+a form suitable for Adobe PDF devices. It is fully documented on its
+manual page, `gropdf(1)'.
+
+* Menu:
+
+* Invoking gropdf::
+* Embedding PDF::
+
+
+File: groff.info, Node: Invoking gropdf, Next: Embedding PDF, Prev: gropdf, Up: gropdf
+
+7.4.1 Invoking `gropdf'
+-----------------------
+
+The postprocessor `gropdf' accepts the following command-line options:
+
+`-d'
+ Produce uncompressed PDFs which include debugging comments.
+
+`-e'
+ This forces `gropdf' to embed all used fonts in the PDF, even if
+ they are one of the 14 base Adobe fonts.
+
+`-FDIR'
+ Put the directory `DIR/devNAME' in front of the search path for
+ the font, prologue and device description files, given the target
+ device NAME, usually *pdf*.
+
+`-yFOUNDRY'
+ This forces the use of a different font foundry.
+
+`-l'
+ Use landscape orientation.
+
+`-pPAPERSIZE'
+ Set the page dimensions. Overrides the commands `papersize',
+ `paperlength', and `paperwidth' in the `DESC' file. See the
+ `groff_font(5)' manual page for details.
+
+`-v'
+ Print the version number.
+
+`-s'
+ Append a comment line to end of PDF showing statistics, i.e.
+ number of pages in document. Ghostscript's `ps2pdf(1)' complains
+ about this line if it is included, but works anyway.
+
+`-uFILENAME'
+ `gropdf' normally includes a ToUnicode CMap with any font created
+ using `text.enc' as the encoding file, this makes it easier to
+ search for words which contain ligatures. You can include your
+ own CMap by specifying a FILENAME or have no CMap at all by
+ omitting the FILENAME.
+

-File: groff.info, Node: grodvi, Next: grolj4, Prev: grops, Up: Output Devices
+File: groff.info, Node: Embedding PDF, Prev: Invoking gropdf, Up: gropdf
+
+7.4.2 Embedding PDF
+-------------------
+
+The escape sequence
+
+ `\X'pdf: pdfpic FILE ALIGNMENT WIDTH [HEIGHT] [LINELENGTH]''
-7.4 `grodvi'
+places a rectangle of the specified WIDTH containing the PDF drawing
+from file FILE of desired WIDTH and HEIGHT (if HEIGHT is missing or
+zero then it is scaled proportionally). If ALIGNMENT is `-L' the
+drawing is left aligned. If it is `-C' or `-R' a LINELENGTH greater
+than the width of the drawing is required as well. If WIDTH is
+specified as zero then the width is scaled in proportion to the height.
+
+
+File: groff.info, Node: grodvi, Next: grolj4, Prev: gropdf, Up: Output Devices
+
+7.5 `grodvi'
============
+The postprocessor `grodvi' translates the output from GNU `troff' into
+the *DVI* output format compatible with the *TeX* document preparation
+system. It is fully documented on its manual page, `grodvi(1)'.
+
* Menu:
* Invoking grodvi::
@@ -2978,15 +3244,44 @@ File: groff.info, Node: grodvi, Next: grolj4, Prev: grops, Up: Output Device

File: groff.info, Node: Invoking grodvi, Prev: grodvi, Up: grodvi
-7.4.1 Invoking `grodvi'
+7.5.1 Invoking `grodvi'
-----------------------
+The postprocessor `grodvi' accepts the following command-line options:
+
+`-d'
+ Do not use *tpic* specials to implement drawing commands.
+
+`-FDIR'
+ Put the directory `DIR/devNAME' in front of the search path for
+ the font and device description files, given the target device
+ NAME, usually *dvi*.
+
+`-l'
+ Use landscape orientation.
+
+`-pPAPERSIZE'
+ Set the page dimensions. Overrides the commands `papersize',
+ `paperlength', and `paperwidth' in the `DESC' file. See
+ `groff_font(5)' manual page for details.
+
+`-v'
+ Print the version number.
+
+`-wN'
+ Set the line thickness to N/1000em. Overrides the default value N
+ = 40.
+

File: groff.info, Node: grolj4, Next: grolbp, Prev: grodvi, Up: Output Devices
-7.5 `grolj4'
+7.6 `grolj4'
============
+The postprocessor `grolj4' translates the output from GNU `troff' into
+the *PCL5* output format suitable for printing on a *HP LaserJet 4*
+printer. It is fully documented on its manual page, `grolj4(1)'.
+
* Menu:
* Invoking grolj4::
@@ -2994,15 +3289,46 @@ File: groff.info, Node: grolj4, Next: grolbp, Prev: grodvi, Up: Output Devic

File: groff.info, Node: Invoking grolj4, Prev: grolj4, Up: grolj4
-7.5.1 Invoking `grolj4'
+7.6.1 Invoking `grolj4'
-----------------------
+The postprocessor `grolj4' accepts the following command-line options:
+
+`-cN'
+ Print N copies of each page.
+
+`-FDIR'
+ Put the directory `DIR/devNAME' in front of the search path for
+ the font and device description files, given the target device
+ NAME, usually *lj4*.
+
+`-l'
+ Use landscape orientation.
+
+`-pSIZE'
+ Set the page dimensions. Valid values for SIZE are: `letter',
+ `legal', `executive', `a4', `com10', `monarch', `c5', `b5', `d1'.
+
+`-v'
+ Print the version number.
+
+`-wN'
+ Set the line thickness to N/1000em. Overrides the default value N
+ = 40.
+
+ The special drawing command `\D'R DH DV'' draws a horizontal
+rectangle from the current position to the position at offset (DH,DV).
+

File: groff.info, Node: grolbp, Next: grohtml, Prev: grolj4, Up: Output Devices
-7.6 `grolbp'
+7.7 `grolbp'
============
+The postprocessor `grolbp' translates the output from GNU `troff' into
+the *LBP* output format suitable for printing on *Canon CAPSL*
+printers. It is fully documented on its manual page, `grolbp(1)'.
+
* Menu:
* Invoking grolbp::
@@ -3010,13 +3336,43 @@ File: groff.info, Node: grolbp, Next: grohtml, Prev: grolj4, Up: Output Devi

File: groff.info, Node: Invoking grolbp, Prev: grolbp, Up: grolbp
-7.6.1 Invoking `grolbp'
+7.7.1 Invoking `grolbp'
-----------------------
+The postprocessor `grolbp' accepts the following command-line options:
+
+`-cN'
+ Print N copies of each page.
+
+`-FDIR'
+ Put the directory `DIR/devNAME' in front of the search path for
+ the font, prologue and device description files, given the target
+ device NAME, usually *lbp*.
+
+`-l'
+ Use landscape orientation.
+
+`-oORIENTATION'
+ Use the ORIENTATION specified: `portrait' or `landscape'.
+
+`-pPAPERSIZE'
+ Set the page dimensions. See `groff_font(5)' manual page for
+ details.
+
+`-wN'
+ Set the line thickness to N/1000em. Overrides the default value N
+ = 40.
+
+`-v'
+ Print the version number.
+
+`-h'
+ Print command-line help.
+

File: groff.info, Node: grohtml, Next: gxditview, Prev: grolbp, Up: Output Devices
-7.7 `grohtml'
+7.8 `grohtml'
=============
The `grohtml' front end (which consists of a preprocessor,
@@ -3040,6 +3396,9 @@ ignored unless the special characters appear inside a table or
equation, in which case glyphs for these characters must be defined for
the `ps' device as well.
+ This output device is fully documented on its manual page,
+`grohtml(1)'.
+
* Menu:
* Invoking grohtml::
@@ -3048,13 +3407,86 @@ the `ps' device as well.

File: groff.info, Node: Invoking grohtml, Next: grohtml specific registers and strings, Prev: grohtml, Up: grohtml
-7.7.1 Invoking `grohtml'
+7.8.1 Invoking `grohtml'
------------------------
+The postprocessor `grohtml' accepts the following command-line options:
+
+`-aBITS'
+ Use this number of BITS (= 1, 2 or 4) for text antialiasing.
+ Default: BITS = 4.
+
+`-a0'
+ Do not use text antialiasing.
+
+`-b'
+ Use white background.
+
+`-DDIR'
+ Store rendered images in the directory `DIR'.
+
+`-FDIR'
+ Put the directory `DIR/devNAME' in front of the search path for
+ the font, prologue and device description files, given the target
+ device NAME, usually *html*.
+
+`-gBITS'
+ Use this number of BITS (= 1, 2 or 4) for antialiasing of
+ drawings. Default: BITS = 4.
+
+`-g0'
+ Do not use antialiasing for drawings.
+
+`-h'
+ Use the `B' element for section headings.
+
+`-iRESOLUTION'
+ Use the RESOLUTION for rendered images. Default: RESOLUTION =
+ 100dpi.
+
+`-ISTEM'
+ Set the images' STEM NAME. Default: STEM = `grohtml-XXX' (XXX is
+ the process ID).
+
+`-jSTEM'
+ Place each section in a separate file called `STEM-N.html' (where
+ N is a generated section number).
+
+`-l'
+ Do not generate the table of contents.
+
+`-n'
+ Generate simple fragment identifiers.
+
+`-oOFFSET'
+ Use vertical paddding OFFSET for images.
+
+`-p'
+ Display the page rendering progress to `stderr'.
+
+`-r'
+ Do not use horizontal rules to separate headers and footers.
+
+`-sSIZE'
+ Set the base font size, to be modified using the elements `BIG'
+ and `SMALL'.
+
+`-SLEVEL'
+ Generate separate files for sections at level LEVEL.
+
+`-v'
+ Print the version number.
+
+`-V'
+ Generate a validator button at the bottom.
+
+`-y'
+ Generate a signature of groff after the validator button, if any.
+

File: groff.info, Node: grohtml specific registers and strings, Prev: Invoking grohtml, Up: grohtml
-7.7.2 `grohtml' specific registers and strings
+7.8.2 `grohtml' specific registers and strings
----------------------------------------------
-- Register: \n[ps4html]
@@ -3077,7 +3509,7 @@ File: groff.info, Node: grohtml specific registers and strings, Prev: Invoking
troff -Txhtml
- The PostScript device is used to create all the image files (for
+ The POSTSCRIPT device is used to create all the image files (for
`-Thtml'; if `-Txhtml' is used, all equations are passed to `geqn'
to produce MathML, and the register `ps4html' enables the macro
sets to ignore floating keeps, footers, and headings.
@@ -3088,7 +3520,7 @@ File: groff.info, Node: grohtml specific registers and strings, Prev: Invoking

File: groff.info, Node: gxditview, Prev: grohtml, Up: Output Devices
-7.8 `gxditview'
+7.9 `gxditview'
===============
* Menu:
@@ -3098,7 +3530,7 @@ File: groff.info, Node: gxditview, Prev: grohtml, Up: Output Devices

File: groff.info, Node: Invoking gxditview, Prev: gxditview, Up: gxditview
-7.8.1 Invoking `gxditview'
+7.9.1 Invoking `gxditview'
--------------------------

@@ -3797,7 +4229,7 @@ High-resolution device `ps'
x stop
This output can be fed into `grops' to get its representation as a
- PostScript file.
+ POSTSCRIPT file.
Low-resolution device `latin1'
This is similar to the high-resolution device except that the
@@ -3882,7 +4314,7 @@ specification except for the following features.
* The old hardware was very different from what we use today. So the
`groff' devices are also fundamentally different from the ones in
- AT&T `troff'. For example, the AT&T PostScript device is called
+ AT&T `troff'. For example, the AT&T POSTSCRIPT device is called
`post' and has a resolution of only 720 units per inch, suitable
for printers 20 years ago, while `groff''s `ps' device has a
resolution of 72000 units per inch. Maybe, by implementing some
@@ -3962,7 +4394,7 @@ override previous values.
`image_generator STRING'
Needed for `grohtml' only. It specifies the program to generate
- PNG images from PostScript input. Under GNU/Linux this is usually
+ PNG images from POSTSCRIPT input. Under GNU/Linux this is usually
`gs' but under other systems (notably cygwin) it might be set to
another name.
@@ -4743,37 +5175,37 @@ Requests appear without the leading control character (normally either
* ad: Manipulating Filling and Adjusting.
(line 52)
* af: Assigning Formats. (line 12)
-* aln: Setting Registers. (line 114)
-* als: Strings. (line 237)
-* am: Writing Macros. (line 114)
-* am1: Writing Macros. (line 115)
-* ami: Writing Macros. (line 116)
-* ami1: Writing Macros. (line 117)
-* as: Strings. (line 183)
-* as1: Strings. (line 184)
-* asciify: Diversions. (line 200)
+* aln: Setting Registers. (line 118)
+* als: Strings. (line 241)
+* am: Writing Macros. (line 119)
+* am1: Writing Macros. (line 120)
+* ami: Writing Macros. (line 121)
+* ami1: Writing Macros. (line 122)
+* as: Strings. (line 187)
+* as1: Strings. (line 188)
+* asciify: Diversions. (line 204)
* backtrace: Debugging. (line 98)
-* bd: Artificial Fonts. (line 96)
+* bd: Artificial Fonts. (line 98)
* blm: Blank Line Traps. (line 7)
-* box: Diversions. (line 30)
-* boxa: Diversions. (line 31)
+* box: Diversions. (line 34)
+* boxa: Diversions. (line 35)
* bp: Page Control. (line 7)
* br: Manipulating Filling and Adjusting.
(line 12)
* break: while. (line 73)
* brp: Manipulating Filling and Adjusting.
- (line 112)
+ (line 134)
* c2: Character Translations.
(line 16)
* cc: Character Translations.
(line 10)
* ce: Manipulating Filling and Adjusting.
- (line 189)
+ (line 211)
* cf: I/O. (line 51)
* cflags: Using Symbols. (line 242)
* ch: Page Location Traps. (line 119)
* char: Using Symbols. (line 329)
-* chop: Strings. (line 276)
+* chop: Strings. (line 280)
* class: Character Classes. (line 12)
* close: I/O. (line 241)
* color: Colors. (line 7)
@@ -4781,23 +5213,23 @@ Requests appear without the leading control character (normally either
* continue: while. (line 77)
* cp: Implementation Differences.
(line 23)
-* cs: Artificial Fonts. (line 127)
-* cu: Artificial Fonts. (line 87)
-* da: Diversions. (line 18)
-* de: Writing Macros. (line 11)
-* de1: Writing Macros. (line 12)
+* cs: Artificial Fonts. (line 129)
+* cu: Artificial Fonts. (line 89)
+* da: Diversions. (line 22)
+* de: Writing Macros. (line 15)
+* de1: Writing Macros. (line 16)
* defcolor: Colors. (line 21)
-* dei: Writing Macros. (line 13)
-* dei1: Writing Macros. (line 14)
+* dei: Writing Macros. (line 17)
+* dei1: Writing Macros. (line 18)
* device: Postprocessor Access.
(line 11)
* devicem: Postprocessor Access.
(line 29)
-* di: Diversions. (line 17)
+* di: Diversions. (line 21)
* do: Implementation Differences.
(line 24)
-* ds: Strings. (line 11)
-* ds1: Strings. (line 12)
+* ds: Strings. (line 15)
+* ds1: Strings. (line 16)
* dt: Diversion Traps. (line 7)
* ec: Character Translations.
(line 49)
@@ -4812,7 +5244,7 @@ Requests appear without the leading control character (normally either
* ev: Environments. (line 38)
* evc: Environments. (line 72)
* ex: Debugging. (line 45)
-* fam: Font Families. (line 19)
+* fam: Font Families. (line 20)
* fc: Fields. (line 18)
* fchar: Using Symbols. (line 330)
* fcolor: Colors. (line 85)
@@ -4858,7 +5290,7 @@ Requests appear without the leading control character (normally either
* kern: Ligatures and Kerning.
(line 41)
* lc: Leaders. (line 23)
-* length: Strings. (line 217)
+* length: Strings. (line 221)
* lf: Debugging. (line 10)
* lg: Ligatures and Kerning.
(line 23)
@@ -4868,12 +5300,12 @@ Requests appear without the leading control character (normally either
(line 69)
* lsm: Leading Spaces Traps.
(line 7)
-* lt: Page Layout. (line 60)
+* lt: Page Layout. (line 64)
* mc: Miscellaneous. (line 76)
* mk: Page Motions. (line 10)
* mso: I/O. (line 41)
* na: Manipulating Filling and Adjusting.
- (line 104)
+ (line 126)
* ne: Page Control. (line 34)
* nf: Manipulating Filling and Adjusting.
(line 41)
@@ -4883,7 +5315,7 @@ Requests appear without the leading control character (normally either
* nn: Miscellaneous. (line 72)
* nop: if-else. (line 24)
* nr <1>: Auto-increment. (line 11)
-* nr: Setting Registers. (line 9)
+* nr: Setting Registers. (line 13)
* nroff: Troff and Nroff Mode.
(line 32)
* ns: Manipulating Spacing.
@@ -4892,13 +5324,13 @@ Requests appear without the leading control character (normally either
* open: I/O. (line 209)
* opena: I/O. (line 210)
* os: Page Control. (line 55)
-* output: Diversions. (line 185)
-* pc: Page Layout. (line 89)
+* output: Diversions. (line 189)
+* pc: Page Layout. (line 93)
* pev: Debugging. (line 64)
* pi: I/O. (line 149)
* pl: Page Layout. (line 10)
* pm: Debugging. (line 68)
-* pn: Page Layout. (line 77)
+* pn: Page Layout. (line 81)
* pnr: Debugging. (line 79)
* po: Line Layout. (line 61)
* ps: Changing Type Sizes. (line 7)
@@ -4908,14 +5340,14 @@ Requests appear without the leading control character (normally either
* pvs: Changing Type Sizes. (line 133)
* rchar: Using Symbols. (line 388)
* rd: I/O. (line 90)
-* return: Writing Macros. (line 151)
+* return: Writing Macros. (line 156)
* rfschar: Using Symbols. (line 389)
* rj: Manipulating Filling and Adjusting.
- (line 238)
-* rm: Strings. (line 232)
-* rn: Strings. (line 229)
-* rnn: Setting Registers. (line 110)
-* rr: Setting Registers. (line 106)
+ (line 260)
+* rm: Strings. (line 236)
+* rn: Strings. (line 233)
+* rnn: Setting Registers. (line 114)
+* rr: Setting Registers. (line 110)
* rs: Manipulating Spacing.
(line 132)
* rt: Page Motions. (line 11)
@@ -4930,9 +5362,9 @@ Requests appear without the leading control character (normally either
* special: Special Fonts. (line 17)
* spreadwarn: Debugging. (line 136)
* ss: Manipulating Filling and Adjusting.
- (line 134)
-* sty: Font Families. (line 60)
-* substring: Strings. (line 201)
+ (line 156)
+* sty: Font Families. (line 61)
+* substring: Strings. (line 205)
* sv: Page Control. (line 54)
* sy: I/O. (line 171)
* ta: Tabs and Fields. (line 14)
@@ -4953,9 +5385,9 @@ Requests appear without the leading control character (normally either
(line 247)
* troff: Troff and Nroff Mode.
(line 24)
-* uf: Artificial Fonts. (line 91)
-* ul: Artificial Fonts. (line 65)
-* unformat: Diversions. (line 220)
+* uf: Artificial Fonts. (line 93)
+* ul: Artificial Fonts. (line 67)
+* unformat: Diversions. (line 228)
* vpt: Page Location Traps. (line 17)
* vs: Changing Type Sizes. (line 84)
* warn: Debugging. (line 159)
@@ -4979,7 +5411,7 @@ printing glyph X.
* Menu:
* \: Using Symbols. (line 137)
-* \!: Diversions. (line 138)
+* \!: Diversions. (line 142)
* \": Comments. (line 10)
* \#: Comments. (line 50)
* \$: Parameters. (line 19)
@@ -4994,7 +5426,7 @@ printing glyph X.
* \': Using Symbols. (line 227)
* \): Ligatures and Kerning.
(line 131)
-* \*: Strings. (line 13)
+* \*: Strings. (line 17)
* \,: Ligatures and Kerning.
(line 92)
* \-: Using Symbols. (line 236)
@@ -5007,7 +5439,7 @@ printing glyph X.
(line 85)
* \<RET>: Line Control. (line 43)
* \<SP>: Page Motions. (line 123)
-* \?: Diversions. (line 139)
+* \?: Diversions. (line 143)
* \\: Character Translations.
(line 70)
* \^: Page Motions. (line 139)
@@ -5026,7 +5458,7 @@ printing glyph X.
* \e: Character Translations.
(line 71)
* \f: Font Positions. (line 59)
-* \F: Font Families. (line 21)
+* \F: Font Families. (line 22)
* \f: Changing Fonts. (line 8)
* \g: Assigning Formats. (line 74)
* \h: Page Motions. (line 112)
@@ -5043,11 +5475,11 @@ printing glyph X.
* \O: Suppressing output. (line 7)
* \o: Page Motions. (line 226)
* \p: Manipulating Filling and Adjusting.
- (line 113)
+ (line 135)
* \r: Page Motions. (line 103)
-* \R: Setting Registers. (line 10)
+* \R: Setting Registers. (line 14)
* \s: Changing Type Sizes. (line 10)
-* \S: Artificial Fonts. (line 45)
+* \S: Artificial Fonts. (line 46)
* \t: Tabs and Fields. (line 10)
* \u: Page Motions. (line 106)
* \V: I/O. (line 259)
@@ -5113,31 +5545,31 @@ length can be accessed as `\n[xxx]'.
* $$: Built-in Registers. (line 100)
* % <1>: Page Control. (line 10)
-* %: Page Layout. (line 89)
+* %: Page Layout. (line 93)
* .$: Parameters. (line 10)
* .a: Manipulating Spacing.
(line 90)
* .A: Built-in Registers. (line 107)
-* .b: Artificial Fonts. (line 98)
+* .b: Artificial Fonts. (line 100)
* .br: Requests. (line 58)
* .C: Implementation Differences.
(line 25)
* .c: Built-in Registers. (line 77)
* .cdp: Environments. (line 96)
* .ce: Manipulating Filling and Adjusting.
- (line 190)
+ (line 212)
* .cht: Environments. (line 95)
* .color: Colors. (line 8)
* .csk: Environments. (line 97)
-* .d: Diversions. (line 67)
+* .d: Diversions. (line 71)
* .ev: Environments. (line 39)
* .f: Font Positions. (line 12)
* .F: Built-in Registers. (line 12)
-* .fam: Font Families. (line 20)
-* .fn: Font Families. (line 24)
+* .fam: Font Families. (line 21)
+* .fn: Font Families. (line 25)
* .fp: Font Positions. (line 13)
* .g: Built-in Registers. (line 103)
-* .h: Diversions. (line 74)
+* .h: Diversions. (line 78)
* .H: Built-in Registers. (line 15)
* .height: Artificial Fonts. (line 16)
* .hla: Manipulating Hyphenation.
@@ -5167,7 +5599,7 @@ length can be accessed as `\n[xxx]'.
(line 24)
* .linetabs: Tabs and Fields. (line 148)
* .ll: Line Layout. (line 149)
-* .lt: Page Layout. (line 63)
+* .lt: Page Layout. (line 67)
* .M: Colors. (line 89)
* .m: Colors. (line 55)
* .n: Environments. (line 112)
@@ -5179,7 +5611,7 @@ length can be accessed as `\n[xxx]'.
* .p: Page Layout. (line 13)
* .P: Built-in Registers. (line 116)
* .pe: Page Location Traps. (line 152)
-* .pn: Page Layout. (line 80)
+* .pn: Page Layout. (line 84)
* .ps: Fractional Type Sizes.
(line 35)
* .psr: Fractional Type Sizes.
@@ -5187,15 +5619,15 @@ length can be accessed as `\n[xxx]'.
* .pvs: Changing Type Sizes. (line 136)
* .R: Built-in Registers. (line 18)
* .rj: Manipulating Filling and Adjusting.
- (line 239)
+ (line 261)
* .s: Changing Type Sizes. (line 11)
-* .slant: Artificial Fonts. (line 46)
+* .slant: Artificial Fonts. (line 47)
* .sr: Fractional Type Sizes.
(line 43)
* .ss: Manipulating Filling and Adjusting.
- (line 135)
+ (line 157)
* .sss: Manipulating Filling and Adjusting.
- (line 136)
+ (line 158)
* .sty: Changing Fonts. (line 11)
* .t: Page Location Traps. (line 110)
* .T: Built-in Registers. (line 122)
@@ -5212,14 +5644,14 @@ length can be accessed as `\n[xxx]'.
* .x: Built-in Registers. (line 89)
* .Y: Built-in Registers. (line 97)
* .y: Built-in Registers. (line 93)
-* .z: Diversions. (line 66)
+* .z: Diversions. (line 70)
* .zoom: Changing Fonts. (line 74)
* c.: Built-in Registers. (line 78)
* ct: Page Motions. (line 160)
* DD [ms]: ms Document Control Registers.
(line 239)
-* dl: Diversions. (line 92)
-* dn: Diversions. (line 91)
+* dl: Diversions. (line 96)
+* dn: Diversions. (line 95)
* dw: Built-in Registers. (line 43)
* dy: Built-in Registers. (line 46)
* FAM [ms]: ms Document Control Registers.
@@ -5418,7 +5850,7 @@ They appear without the leading control character (normally `.').
(line 15)
* LG [ms]: Highlighting in ms. (line 52)
* LP [man]: Man usage. (line 69)
-* LP [ms]: Paragraphs in ms. (line 10)
+* LP [ms]: Paragraphs in ms. (line 12)
* MC [ms]: ms Multiple Columns. (line 19)
* MS [man]: Optional man extensions.
(line 73)
@@ -5452,7 +5884,7 @@ They appear without the leading control character (normally `.').
* PT [ms]: ms Headers and Footers.
(line 38)
* PX [ms]: ms TOC. (line 65)
-* QP [ms]: Paragraphs in ms. (line 13)
+* QP [ms]: Paragraphs in ms. (line 15)
* R [man]: Optional man extensions.
(line 98)
* R [ms]: Highlighting in ms. (line 27)
@@ -5495,7 +5927,7 @@ They appear without the leading control character (normally `.').
(line 104)
* XA [ms]: ms TOC. (line 13)
* XE [ms]: ms TOC. (line 14)
-* XP [ms]: Paragraphs in ms. (line 18)
+* XP [ms]: Paragraphs in ms. (line 20)
* XS [ms]: ms TOC. (line 12)

@@ -5677,10 +6109,10 @@ Anhang I Font File Keyword Index
* spare1: DESC File Format. (line 144)
* spare2: DESC File Format. (line 144)
* special <1>: Font File Format. (line 28)
-* special: Artificial Fonts. (line 116)
+* special: Artificial Fonts. (line 118)
* styles <1>: DESC File Format. (line 102)
* styles <2>: Font Positions. (line 61)
-* styles <3>: Font Families. (line 75)
+* styles <3>: Font Families. (line 76)
* styles: Changing Fonts. (line 11)
* tcommand: DESC File Format. (line 105)
* unicode: DESC File Format. (line 109)
@@ -5707,7 +6139,7 @@ Anhang J Program and File Index
* DESC <1>: Special Fonts. (line 18)
* DESC <2>: Using Symbols. (line 14)
* DESC <3>: Font Positions. (line 61)
-* DESC <4>: Font Families. (line 75)
+* DESC <4>: Font Families. (line 76)
* DESC: Changing Fonts. (line 11)
* DESC file format: DESC File Format. (line 6)
* DESC, and font mounting: Font Positions. (line 37)
@@ -5717,6 +6149,7 @@ Anhang J Program and File Index
* ec.tmac: Input Encodings. (line 46)
* eqn: ms Insertions. (line 7)
* freeeuro.pfa: Input Encodings. (line 46)
+* gchem: Groff Options. (line 6)
* geqn: Groff Options. (line 6)
* geqn, invocation in manual pages: Preprocessors in man pages.
(line 12)
@@ -5742,6 +6175,7 @@ Anhang J Program and File Index
* latin1.tmac: Input Encodings. (line 14)
* latin2.tmac: Input Encodings. (line 18)
* latin9.tmac: Input Encodings. (line 28)
+* less: Invoking grotty. (line 51)
* makeindex: Indices. (line 10)
* man, invocation of preprocessors: Preprocessors in man pages.
(line 12)
@@ -5756,25 +6190,25 @@ Anhang J Program and File Index
* papersize.tmac: Paper Size. (line 16)
* perl: I/O. (line 182)
* pic: ms Insertions. (line 7)
-* post-grohtml: Groff Options. (line 269)
-* pre-grohtml: Groff Options. (line 269)
+* post-grohtml: Groff Options. (line 275)
+* pre-grohtml: Groff Options. (line 275)
* preconv: Groff Options. (line 6)
* refer: ms Insertions. (line 7)
* soelim: Debugging. (line 10)
* tbl: ms Insertions. (line 7)
-* trace.tmac: Writing Macros. (line 105)
+* trace.tmac: Writing Macros. (line 110)
* troffrc <1>: Line Layout. (line 64)
* troffrc <2>: Troff and Nroff Mode.
(line 24)
* troffrc <3>: Manipulating Hyphenation.
(line 163)
* troffrc <4>: Paper Size. (line 16)
-* troffrc: Groff Options. (line 205)
+* troffrc: Groff Options. (line 208)
* troffrc-end <1>: Troff and Nroff Mode.
(line 24)
* troffrc-end <2>: Manipulating Hyphenation.
(line 163)
-* troffrc-end: Groff Options. (line 205)
+* troffrc-end: Groff Options. (line 208)
* tty.tmac: Troff and Nroff Mode.
(line 32)
diff --git a/doc/groff.info-3 b/doc/groff.info-3
index e6e2551..d57a910 100644
--- a/doc/groff.info-3
+++ b/doc/groff.info-3
Binary files differ
diff --git a/doc/groff.texinfo b/doc/groff.texinfo
index 5f7a5e8..2eae72e 100644
--- a/doc/groff.texinfo
+++ b/doc/groff.texinfo
@@ -1,4 +1,4 @@
-\input texinfo @c -*-texinfo-*-
+\input texinfo
@c
@c Please convert this manual with `texi2dvi -e groff.texinfo' due to
@@ -24,11 +24,9 @@
@copying
-This manual documents GNU @code{troff} version 1.21.
+This manual documents GNU @code{troff} version 1.22.2.
-Copyright @copyright{} 1994-2000, 2001, 2002, 2003, 2004, 2005, 2006,
-2007, 2008, 2009, 2010
-Free Software Foundation, Inc.
+Copyright @copyright{} 1994-2013 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -313,7 +311,7 @@ developing GNU and promoting software freedom.''
@end macro
-@c our example macro
+@c our example macros
@macro Example
@example
@@ -325,6 +323,16 @@ developing GNU and promoting software freedom.''
@end example
@end macro
+@macro CartoucheExample
+@cartouche
+@example
+@end macro
+
+@macro endCartoucheExample
+@end example
+@end cartouche
+@end macro
+
@c <text>
@@ -473,8 +481,8 @@ developing GNU and promoting software freedom.''
@titlepage
@title groff
@subtitle The GNU implementation of @code{troff}
-@subtitle Edition 1.21
-@subtitle Winter 2010
+@subtitle Edition 1.22.2
+@subtitle Spring 2013
@author by Trent A.@tie{}Fisher
@author and Werner Lemberg (@email{bug-groff@@gnu.org})
@@ -834,9 +842,10 @@ preprocessors to use.
@code{groff} currently has preprocessors for producing tables
(@code{tbl}), typesetting equations (@code{eqn}), drawing pictures
-(@code{pic} and @code{grn}), and for processing bibliographies
-(@code{refer}). An associated program which is useful when dealing with
-preprocessors is @code{soelim}.
+(@code{pic} and @code{grn}), processing bibliographies
+(@code{refer}), and drawing chemical structures (@code{chem}). An
+associated program which is useful when dealing with preprocessors is
+@code{soelim}.
A free implementation of @code{grap}, a preprocessor for drawing graphs,
can be obtained as an extra package; @code{groff} can use @code{grap}
@@ -846,9 +855,8 @@ Unique to @code{groff} is the @code{preconv} preprocessor which enables
@code{groff} to handle documents in various input encodings.
There are other preprocessors in existence, but, unfortunately, no free
-implementations are available. Among them are preprocessors for drawing
-mathematical pictures (@code{ideal}) and chemical structures
-(@code{chem}).
+implementations are available. Among them is a preprocessor for drawing
+mathematical pictures (@code{ideal}).
@c =====================================================================
@@ -864,7 +872,7 @@ into a postprocessor to produce output for a particular device.
Currently, @code{groff} has postprocessors for @sc{PostScript} devices,
character terminals, X@tie{}Windows (for previewing), @TeX{} DVI format,
HP LaserJet@tie{}4 and Canon LBP printers (which use @acronym{CAPSL}),
-@acronym{HTML}, and @acronym{XHTML}.
+@acronym{HTML}, @acronym{XHTML}, and PDF.
@c =====================================================================
@@ -936,29 +944,31 @@ Similarly, we say @samp{gpic}, @samp{geqn}, etc.
@pindex ggrn
@pindex grap
@pindex gtbl
+@pindex gchem
@pindex grefer
@pindex gsoelim
@pindex preconv
-@code{groff} normally runs the @code{gtroff} program and a postprocessor
-appropriate for the selected device. The default device is @samp{ps}
-(but it can be changed when @code{groff} is configured and built). It
-can optionally preprocess with any of @code{gpic}, @code{geqn},
-@code{gtbl}, @code{ggrn}, @code{grap}, @code{grefer}, @code{gsoelim}, or
-@code{preconv}.
+@code{groff} normally runs the @code{gtroff} program and a
+postprocessor appropriate for the selected device. The default device
+is @samp{ps} (but it can be changed when @code{groff} is configured and
+built). It can optionally preprocess with any of @code{gpic},
+@code{geqn}, @code{gtbl}, @code{ggrn}, @code{grap}, @code{gchem},
+@code{grefer}, @code{gsoelim}, or @code{preconv}.
This section only documents options to the @code{groff} front end. Many
of the arguments to @code{groff} are passed on to @code{gtroff},
therefore those are also included. Arguments to pre- or postprocessors
can be found in @ref{Invoking gpic}, @ref{Invoking geqn}, @ref{Invoking
-gtbl}, @ref{Invoking ggrn}, @ref{Invoking grefer}, @ref{Invoking
-gsoelim}, @ref{Invoking preconv}, @ref{Invoking grotty}, @ref{Invoking
-grops}, @ref{Invoking grohtml}, @ref{Invoking grodvi}, @ref{Invoking
-grolj4}, @ref{Invoking grolbp}, and @ref{Invoking gxditview}.
+gtbl}, @ref{Invoking ggrn}, @ref{Invoking grefer}, @ref{Invoking gchem},
+@ref{Invoking gsoelim}, @ref{Invoking preconv}, @ref{Invoking grotty},
+@ref{Invoking grops}, @ref{Invoking gropdf}, @ref{Invoking grohtml},
+@ref{Invoking grodvi}, @ref{Invoking grolj4}, @ref{Invoking grolbp}, and
+@ref{Invoking gxditview}.
The command line format for @code{groff} is:
@Example
-groff [ -abceghiklpstvzCEGNRSUVXZ ] [ -d@var{cs} ] [ -D@var{arg} ]
+groff [ -abceghijklpstvzCEGNRSUVXZ ] [ -d@var{cs} ] [ -D@var{arg} ]
[ -f@var{fam} ] [ -F@var{dir} ] [ -I@var{dir} ] [ -K@var{arg} ]
[ -L@var{arg} ] [ -m@var{name} ] [ -M@var{dir} ] [ -n@var{num} ]
[ -o@var{list} ] [ -P@var{arg} ] [ -r@var{cn} ] [ -T@var{def} ]
@@ -1050,7 +1060,7 @@ using the @env{GROFF_FONT_PATH} environment variable.
Preprocess with @code{ggrn}.
@item -G
-Preprocess with @code{grap}.
+Preprocess with @code{grap}. Implies @option{-p}.
@item -h
Print a help message.
@@ -1082,6 +1092,9 @@ specified more than once; the directories are searched in the order
specified. No directory search is performed for files specified using
an absolute path.
+@item -j
+Preprocess with @code{gchem}. Implies @option{-p}.
+
@item -k
Preprocess with @code{preconv}. This is run before any other
preprocessor. Please refer to @code{preconv}'s manual page for its
@@ -1191,6 +1204,9 @@ following are the output devices currently available:
@item ps
For @sc{PostScript} printers and previewers.
+@item pdf
+For PDF viewers or printers.
+
@item dvi
For @TeX{} DVI format.
@@ -1331,10 +1347,10 @@ by @code{groff}.
@cindex prefix, for commands
If this is set to@tie{}@var{X}, then @code{groff} runs
@code{@var{X}troff} instead of @code{gtroff}. This also applies to
-@code{tbl}, @code{pic}, @code{eqn}, @code{grn}, @code{refer}, and
-@code{soelim}. It does not apply to @code{grops}, @code{grodvi},
-@code{grotty}, @code{pre-grohtml}, @code{post-grohtml}, @code{preconv},
-@code{grolj4}, and @code{gxditview}.
+@code{tbl}, @code{pic}, @code{eqn}, @code{grn}, @code{chem},
+@code{refer}, and @code{soelim}. It does not apply to @code{grops},
+@code{grodvi}, @code{grotty}, @code{pre-grohtml}, @code{post-grohtml},
+@code{preconv}, @code{grolj4}, @code{gropdf}, and @code{gxditview}.
The default command prefix is determined during the installation
process. If a non-GNU troff system is found, prefix @samp{g} is used,
@@ -1442,11 +1458,11 @@ directory, and the main tmac directory; the default locations are
@Example
/usr/local/lib/groff/site-tmac
/usr/local/share/groff/site-tmac
-/usr/local/share/groff/1.21/tmac
+/usr/local/share/groff/1.22.2/tmac
@endExample
@noindent
-assuming that the version of @code{groff} is 1.21, and the
+assuming that the version of @code{groff} is 1.22.2, and the
installation prefix was @file{/usr/local}. It is possible to fine-tune
those directories during the installation process.
@end itemize
@@ -1499,11 +1515,11 @@ locations are
@Example
/usr/local/share/groff/site-font
-/usr/local/share/groff/1.21/font
+/usr/local/share/groff/1.22.2/font
@endExample
@noindent
-assuming that the version of @code{groff} is 1.21, and the
+assuming that the version of @code{groff} is 1.22.2, and the
installation prefix was @file{/usr/local}. It is possible to fine-tune
those directories during the installation process.
@end itemize
@@ -2128,6 +2144,7 @@ groff -m man -m ms foo.man bar.doc
* ms::
* me::
* mm::
+* mom::
@end menu
@@ -2531,8 +2548,8 @@ release number (such as ``System V Release 3'').
@Defmac {UC, [@Var{version}], man}
@cindex @code{man}macros, BSD compatibility
-Alters the footer for use with @acronym{BSD} manpages. This command
-exists only for compatibility; don't use it. The argument can be:
+Alters the footer for use with BSD manpages. This command exists only
+for compatibility; don't use it. The argument can be:
@table @code
@item 3
@@ -3211,8 +3228,7 @@ The following is example mark-up for a title page.
@cindex title page, example markup
@cindex example markup, title page
-@Example
-@cartouche
+@CartoucheExample
.RP
.TL
The Inevitability of Code Bloat
@@ -3240,8 +3256,7 @@ user demand.
.AE
... the rest of the paper follows ...
-@end cartouche
-@endExample
+@endCartoucheExample
@c ---------------------------------------------------------------------
@@ -3273,11 +3288,14 @@ Examples include paragraphs, sections, and other groups.
The following paragraph types are available.
-@DefmacList {PP, , ms}
-@DefmacListEnd {LP, , ms}
+@Defmac {PP, , ms}
Sets a paragraph with an initial indentation.
@endDefmac
+@Defmac {LP, , ms}
+Sets a paragraph without an initial indentation.
+@endDefmac
+
@Defmac {QP, , ms}
Sets a paragraph that is indented at both left and right margins. The
effect is identical to the @acronym{HTML} @code{<BLOCKQUOTE>} element.
@@ -3291,8 +3309,7 @@ This is a Berkeley extension.
The following markup uses all four paragraph macros.
-@Example
-@cartouche
+@CartoucheExample
.NH 2
Cases used in the study
.LP
@@ -3322,8 +3339,7 @@ Underground Press, March 2002.
A definitive work that answers all questions
and criticisms about the quality and usability of
free software.
-@end cartouche
-@endExample
+@endCartoucheExample
The @code{PORPHANS} register (@pxref{ms Document Control Registers})
operates in conjunction with each of these macros, to inhibit the
@@ -3611,8 +3627,7 @@ a break.
The first workaround uses the @code{br} request to force a break after
printing the term or label.
-@Example
-@cartouche
+@CartoucheExample
A glossary-style list:
.IP lawyers 0.4i
Two or more attorneys.
@@ -3621,16 +3636,14 @@ Two or more attorneys.
Firearms, preferably large-caliber.
.IP money
Gotta pay for those lawyers and guns!
-@end cartouche
-@endExample
+@endCartoucheExample
The second workaround uses the @code{\p} escape to force the break.
Note the space following the escape; this is important. If you omit the
space, @code{groff} prints the first word on the same line as the term
or label (if it fits) @strong{then} breaks the line.
-@Example
-@cartouche
+@CartoucheExample
A glossary-style list:
.IP lawyers 0.4i
Two or more attorneys.
@@ -3638,8 +3651,7 @@ Two or more attorneys.
\p Firearms, preferably large-caliber.
.IP money
Gotta pay for those lawyers and guns!
-@end cartouche
-@endExample
+@endCartoucheExample
To set nested lists, use the @code{RS} and @code{RE} macros.
@xref{Indentation values in ms}, for more information.
@@ -3648,8 +3660,7 @@ To set nested lists, use the @code{RS} and @code{RE} macros.
For example:
-@Example
-@cartouche
+@CartoucheExample
.IP \[bu] 2
Lawyers:
.RS
@@ -3662,8 +3673,7 @@ and Howe.
.RE
.IP \[bu]
Guns
-@end cartouche
-@endExample
+@endCartoucheExample
Produces:
@@ -3873,9 +3883,8 @@ equation.
@DefmacList {[, , ms}
@DefmacListEnd {], , ms}
Denotes a reference, to be processed by the @code{refer} preprocessor.
-The @acronym{GNU} @cite{refer(1)} man page provides a comprehensive
-reference to the preprocessor and the format of the bibliographic
-database.
+The GNU @cite{refer(1)} man page provides a comprehensive reference to
+the preprocessor and the format of the bibliographic database.
@endDefmac
@menu
@@ -3892,8 +3901,7 @@ database.
The following is an example of how to set up a table that may print
across two or more pages.
-@Example
-@cartouche
+@CartoucheExample
.TS H
allbox expand;
cb | cb .
@@ -3905,8 +3913,7 @@ l | l .
... the rest of the table follows...
.CW
.TE
-@end cartouche
-@endExample
+@endCartoucheExample
@c ---------------------------------------------------------------------
@@ -4079,8 +4086,7 @@ they cannot indent a heading based on its level. The easiest way to
work around this is to add tabs to the table of contents string. The
following is an example:
-@Example
-@cartouche
+@CartoucheExample
.NH 1
Introduction
.XS
@@ -4096,8 +4102,7 @@ Methodology
.XE
.LP
...
-@end cartouche
-@endExample
+@endCartoucheExample
You can manually create a table of contents by beginning with the
@code{XS} macro for the first entry, specifying the page number for that
@@ -4105,8 +4110,7 @@ entry as the argument to @code{XS}. Add subsequent entries using the
@code{XA} macro, specifying the page number for that entry as the
argument to @code{XA}. The following is an example:
-@Example
-@cartouche
+@CartoucheExample
.XS 1
Introduction
.XA 2
@@ -4115,8 +4119,7 @@ A Brief History of the Universe
Details of Galactic Formation
...
.XE
-@end cartouche
-@endExample
+@endCartoucheExample
@endDefmac
@Defmac {TC, [@code{no}], ms}
@@ -4542,7 +4545,7 @@ See the @file{meintro.me} and @file{meref.me} documents in groff's
@c =====================================================================
-@node mm, , me, Macro Packages
+@node mm, mom, me, Macro Packages
@section @file{mm}
@cindex @code{mm} macro package
@@ -4552,6 +4555,19 @@ See the @cite{groff_mm(7)} man page (type @command{man groff_mm} at the
command line).
+@c =====================================================================
+
+@node mom, , mm, Macro Packages
+@section @file{mom}
+@cindex @code{mom} macro package
+
+@c XXX documentation
+@c XXX this is a placeholder until we get stuff knocked into shape
+See the @cite{groff_mom(7)} man page (type @command{man groff_mom} at
+the command line), which gives a short overview and a link to its
+extensive documentation in HTML format.
+
+
@c =====================================================================
@c =====================================================================
@@ -5139,7 +5155,7 @@ and negates the entire expression.
Attempting to insert the @samp{!} operator
within the expression results in a
@samp{numeric expression expected} warning. This
-maintains bug-compatibility
+maintains compatibility
with old versions of @code{troff}.
Example:
@@ -6013,6 +6029,10 @@ details of formatting parameters.
Define or set registers using the @code{nr} request or the @code{\R}
escape.
+Although the following requests and escapes can be used to create
+registers, simply using an undefined register will cause it to be
+set to zero.
+
@DefreqList {nr, ident value}
@DefescListEnd {\\R, ', ident value, '}
Set number register @var{ident} to @var{value}. If @var{ident} doesn't
@@ -6051,13 +6071,13 @@ aaa bbb ccc ddd eee fff ggg hhh\h'0'\R':k \n[.k]'
@result{} :k == 15000
@endExample
-If you process this with the PostScript device (@code{-Tps}), there
-will be a line break eventually after @code{ggg} in both input lines.
-However, after processing the space after @code{ggg}, the partially
-collected line is not overfull yet, so @code{troff} continues to
-collect input until it sees the space (or in this case, the newline)
-after @code{hhh}. At this point, the line is longer than the line
-length, and the line gets broken.
+If you process this with the @sc{PostScript} device (@code{-Tps}),
+there will be a line break eventually after @code{ggg} in both input
+lines. However, after processing the space after @code{ggg}, the
+partially collected line is not overfull yet, so @code{troff}
+continues to collect input until it sees the space (or in this case,
+the newline) after @code{hhh}. At this point, the line is longer
+than the line length, and the line gets broken.
In the first input line, since the @code{\R} escape leaves no traces,
the check for the overfull line hasn't been done yet at the point where
@@ -6671,28 +6691,52 @@ Justify to both margins. This is the default used by @code{gtroff}.
Finally, @var{mode} can be the numeric argument returned by the
@code{.j} register.
-With no argument, @code{gtroff} adjusts lines in the same way it did
-before adjusting was deactivated (with a call to @code{na}, for
-example).
+Using @code{ad} without argument is the same as saying
+@w{@code{.ad \[.j]}}. In particular, @code{gtroff} adjusts lines
+in the same way it did before adjusting was deactivated (with a call
+to @code{na}, say). For example, this input code
@Example
-text
-.ad r
+.de AD
+. br
+. ad \\$1
+..
+.
+.de NA
+. br
+. na
+..
+.
+textA
+.AD r
.nr ad \n[.j]
-text
-.ad c
-text
-.na
-text
-.ad \" back to centering
-text
-.ad \n[ad] \" back to right justifying
+textB
+.AD c
+textC
+.NA
+textD
+.AD \" back to centering
+textE
+.AD \n[ad] \" back to right justifying
+textF
+@endExample
+
+@noindent
+produces the following output:
+
+@Example
+textA
+ textB
+ textC
+textD
+ textE
+ textF
@endExample
@cindex adjustment mode register (@code{.j})
-The current adjustment mode is available in the read-only number
-register @code{.j}; it can be stored and subsequently used to set
-adjustment.
+As just demonstrated, the current adjustment mode is available in the
+read-only number register @code{.j}; it can be stored and
+subsequently used to set adjustment.
The adjustment mode status is associated with the current environment
(@pxref{Environments}).
@@ -8505,6 +8549,11 @@ Some notes:
@itemize @bullet
@item
+The line length set by the @code{ll} request is not honoured by
+@code{tl}; use the @code{lt} request (described below) instead, to
+control line length for text set by @code{tl}.
+
+@item
A title line is not restricted to the top or bottom of a page.
@item
@@ -8889,10 +8938,10 @@ the current family.
@cindex PostScript fonts
@cindex fonts, PostScript
-Currently, fonts for the devices @option{-Tps}, @option{-Tdvi},
-@option{-Tlj4}, @option{-Tlbp}, and the X11 fonts are set up to this
-mechanism. By default, @code{gtroff} uses the Times family with the
-four styles @samp{R}, @samp{I}, @samp{B}, and @samp{BI}.
+Currently, fonts for the devices @option{-Tps}, @option{-Tpdf},
+@option{-Tdvi}, @option{-Tlj4}, @option{-Tlbp}, and the X11 fonts are
+set up to this mechanism. By default, @code{gtroff} uses the Times
+family with the four styles @samp{R}, @samp{I}, @samp{B}, and @samp{BI}.
This way, it is possible to use the basic four fonts and to select a
different font family on the command line (@pxref{Groff Options}).
@@ -9338,7 +9387,7 @@ Any component @code{u@var{XXXX}} which is found in the list of
decomposable glyphs is decomposed.
@item
-The resulting elements are then concatenated with @samp{_} inbetween,
+The resulting elements are then concatenated with @samp{_} in between,
dropping the leading @samp{u} in all elements but the first.
@end itemize
@@ -9707,7 +9756,7 @@ Unicode values (according to the groff glyph gist) which then give the
start and end value of the range. If that fails, the class definition
is skipped.
-Finally, classes can be nested, too.
+Finally, classes can be nested, too.
Here is a more complex example:
@@ -9801,7 +9850,8 @@ Default scaling indicator is @samp{z}.
The read-only number register @code{.height} contains the font height as
set by @code{\H}.
-Currently, only the @option{-Tps} device supports this feature.
+Currently, only the @option{-Tps} and @option{-Tpdf} devices support
+this feature.
Note that @code{\H} doesn't produce an input token in @code{gtroff}. As
a consequence, it can be used in requests like @code{mc} (which expects
@@ -9837,7 +9887,8 @@ the right. Only integer values are possible.
The read-only number register @code{.slant} contains the font slant as
set by @code{\S}.
-Currently, only the @option{-Tps} device supports this feature.
+Currently, only the @option{-Tps} and @option{-Tpdf} devices support
+this feature.
Note that @code{\S} doesn't produce an input token in @code{gtroff}. As
a consequence, it can be used in requests like @code{mc} (which expects
@@ -10514,6 +10565,10 @@ with a default scale indicator of @samp{z}.
convenience (i.e.@: there are no built-in strings exept @code{.T}, but
even this is a read-write string variable).
+Although the following requests can be used to create strings,
+simply using an undefined string will cause it to be defined as empty.
+@xref{Identifiers}.
+
@DefreqList {ds, name [@Var{string}]}
@DefreqItem {ds1, name [@Var{string}]}
@DefescItem {\\*, , n, }
@@ -11236,14 +11291,19 @@ A @dfn{macro} is a collection of text and embedded commands which can be
invoked multiple times. Use macros to define common operations.
@xref{Strings}, for a (limited) alternative syntax to call macros.
+Although the following requests can be used to create macros,
+simply using an undefined macro will cause it to be defined as empty.
+@xref{Identifiers}.
+
@DefreqList {de, name [@Var{end}]}
@DefreqItem {de1, name [@Var{end}]}
@DefreqItem {dei, name [@Var{end}]}
@DefreqListEnd {dei1, name [@Var{end}]}
Define a new macro named @var{name}. @code{gtroff} copies subsequent
lines (starting with the next one) into an internal buffer until it
-encounters the line @samp{..} (two dots). The optional second argument
-to @code{de} changes this to a macro to @samp{.@var{end}}.
+encounters the line @samp{..} (two dots). If the optional second
+argument to @code{de} is present it is used as the macro closure
+request instead of @samp{..}.
There can be whitespace after the first dot in the line containing the
ending token (either @samp{.} or macro @samp{@var{end}}). Don't insert
@@ -12672,6 +12732,33 @@ line three
Note that this specific feature affects only the first potential page
break caused by the end macro; further page breaks emitted by the end
macro are handled normally.
+
+Another possible use of the @code{em} request is to make @code{gtroff}
+emit a single large page instead of multiple pages. For example, one
+may want to produce a long plain-text file for reading on-screen. The
+idea is to set the page length at the beginning of the document to a
+very large value to hold all the text, and automatically adjust it to
+the exact height of the document after the text has been output.
+
+@Example
+.de adjust-page-length
+. br
+. pl \\n[nl]u \" \n[nl] holds the current page length
+..
+.
+.de single-page-mode
+. pl 99999
+. em adjust-page-length
+..
+.
+.\" activate the above code
+.single-page-mode
+@endExample
+
+Since only one end-of-input trap does exist and other macro packages
+may already use it, care must be taken not to break the mechanism. A
+simple solution would be to append the above macro to the macro
+package's end-of-input macro using the @code{.am} request.
@endDefreq
@@ -12693,6 +12780,10 @@ For orthogonality it is said that @code{gtroff} is in the @dfn{top-level
diversion} if no diversion is active (i.e., the data is diverted to the
output device).
+Although the following requests can be used to create diversions,
+simply using an undefined diversion will cause it to be defined as empty.
+@xref{Identifiers}.
+
@DefreqList {di, macro}
@DefreqListEnd {da, macro}
@cindex beginning diversion (@code{di})
@@ -12956,6 +13047,10 @@ the following sets register@tie{}@code{n} to@tie{}1.
.x
@endExample
+Note that @code{asciify} cannot return all items in a diversion back
+to their source equivalent, nodes such as @code{\N[...]} will still
+remain as nodes, so the result cannot be guaranteed to be a pure string.
+
@xref{Copy-in Mode}.
@endDefreq
@@ -13915,7 +14010,7 @@ But we can fake it with `\&'. |
@DefregListEnd {ury}
@cindex PostScript, bounding box
@cindex bounding box
-Retrieve the bounding box of the PostScript image found in
+Retrieve the bounding box of the @sc{PostScript} image found in
@var{filename}. The file must conform to Adobe's @dfn{Document
Structuring Conventions} (DSC); the command searches for a
@code{%%BoundingBox} comment and extracts the bounding box values into
@@ -14664,6 +14759,7 @@ which are freely available.
* gpic::
* ggrn::
* grap::
+* gchem::
* grefer::
* gsoelim::
* preconv::
@@ -14764,7 +14860,7 @@ which are freely available.
@c =====================================================================
-@node grap, grefer, ggrn, Preprocessors
+@node grap, gchem, ggrn, Preprocessors
@section @code{grap}
@cindex @code{grap}, the program
@@ -14778,7 +14874,30 @@ is available as an extra package from the following address:
@c =====================================================================
-@node grefer, gsoelim, grap, Preprocessors
+@node gchem, grefer, grap, Preprocessors
+@section @code{gchem}
+@cindex @code{chem}, the program
+@cindex @code{gchem}, the program
+
+@c XXX
+
+@menu
+* Invoking gchem::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Invoking gchem, , gchem, gchem
+@subsection Invoking @code{gchem}
+@cindex invoking @code{gchem}
+@cindex @code{gchem}, invoking
+
+@c XXX
+
+
+@c =====================================================================
+
+@node grefer, gsoelim, gchem, Preprocessors
@section @code{grefer}
@cindex @code{refer}, the program
@cindex @code{grefer}, the program
@@ -14858,6 +14977,7 @@ is available as an extra package from the following address:
* Special Characters::
* grotty::
* grops::
+* gropdf::
* grodvi::
* grolj4::
* grolbp::
@@ -14884,7 +15004,9 @@ is available as an extra package from the following address:
@section @code{grotty}
@cindex @code{grotty}, the program
-@c XXX
+The postprocessor @code{grotty} translates the output from GNU
+@code{troff} into a form suitable for typewriter-like devices. It is
+fully documented on its manual page, @cite{grotty(1)}.
@menu
* Invoking grotty::
@@ -14897,34 +15019,83 @@ is available as an extra package from the following address:
@cindex invoking @code{grotty}
@cindex @code{grotty}, invoking
-@c XXX
+The postprocessor @command{grotty} accepts the following command-line
+options:
+
+@table @option
+@item -b
+Do not overstrike bold glyphs. Ignored if @option{-c} isn't used.
+
+@item -B
+Do not underline bold-italic glyphs. Ignored if @option{-c} isn't
+used.
+
+@item -c
+Use overprint and disable colours for printing on legacy Teletype
+printers (see below).
+
+@item -d
+Do not render lines (this is, ignore all @code{\D} escapes).
+
+@item -f
+Use form feed control characters in the output.
+
+@item -F@var{dir}
+Put the directory @file{@var{dir}/dev@var{name}} in front of the
+search path for the font and device description files, given the
+target device @var{name}.
+
+@item -h
+Use horizontal tabs for sequences of 8 space characters.
+
+@item -i
+Request italic glyphs from the terminal. Ignored if @option{-c} is
+active.
+
+@item -o
+Do not overstrike.
-@c The following is no longer true; fix and extend it.
-
-@c @pindex less
-@c @cindex Teletype
-@c @cindex ISO 6249 SGR
-@c @cindex terminal control sequences
-@c @cindex control sequences, for terminals
-@c For TTY output devices, underlining is done by emitting sequences of
-@c @samp{_} and @samp{\b} (the backspace character) before the actual
-@c character. Literally, this is printing an underline character, then
-@c moving back one character position, and printing the actual character
-@c at the same position as the underline character (similar to a
-@c typewriter). Usually, a modern terminal can't interpret this (and
-@c the original Teletype machines for which this sequence was
-@c appropriate are no longer in use). You need a pager program like
-@c @code{less} which translates this into ISO 6429 SGR sequences to
-@c control terminals.
+@item -r
+Highlight italic glyphs. Ignored if @option{-c} is active.
+
+@item -u
+Do not underline italic glyphs. Ignored if @option{-c} isn't used.
+
+@item -U
+Do not overstrike bold-italic glyphs. Ignored if @option{-c} isn't
+used.
+
+@item -v
+Print the version number.
+@end table
+
+@pindex less
+@cindex Teletype
+@cindex ISO 6249 SGR
+@cindex terminal control sequences
+@cindex control sequences, for terminals
+The @option{-c} mode for TTY output devices means that underlining is
+done by emitting sequences of @samp{_} and @samp{^H} (the backspace
+character) before the actual character. Literally, this is printing
+an underline character, then moving the caret back one character
+position, and printing the actual character at the same position as
+the underline character (similar to a typewriter). Usually, a modern
+terminal can't interpret this (and the original Teletype machines for
+which this sequence was appropriate are no longer in use). You need
+a pager program like @code{less} which translates this into
+ISO@tie{}6429 SGR sequences to control terminals.
@c =====================================================================
-@node grops, grodvi, grotty, Output Devices
+@node grops, gropdf, grotty, Output Devices
@section @code{grops}
@cindex @code{grops}, the program
-@c XXX
+The postprocessor @command{grops} translates the output from GNU
+@command{troff} into a form suitable for Adobe @sc{PostScript}
+devices. It is fully documented on its manual page, @cite{grops(1)}.
+
@menu
* Invoking grops::
@@ -14938,7 +15109,56 @@ is available as an extra package from the following address:
@cindex invoking @code{grops}
@cindex @code{grops}, invoking
-@c XXX
+The postprocessor @code{grops} accepts the following command-line
+options:
+
+@table @option
+@item -b@var{flags}
+Use backward compatibility settings given by @var{flags} as
+documented in the @cite{grops(1)} manual page. Overrides the command
+@option{broken} in the @file{DESC} file.
+
+@item -c@var{n}
+Print @var{n} copies of each page.
+
+@item -F@var{dir}
+Put the directory @file{@var{dir}/dev@var{name}} in front of the
+search path for the font, prologue and device description files,
+given the target device @var{name}, usually @strong{ps}.
+
+@item -g
+Tell the printer to guess the page length. Useful for printing
+vertically centered pages when the paper dimensions are determined at
+print time.
+
+@item -I@var{path} @dots{}
+Consider the directory @file{@var{path}} for searching included files
+specified with relative paths. The current directory is searched as
+fallback.
+
+@item -l
+Use landscape orientation.
+
+@item -m
+Use manual feed.
+
+@item -p@var{papersize}
+Set the page dimensions. Overrides the commands @option{papersize},
+@option{paperlength}, and @option{paperwidth} in the @file{DESC}
+file. See the @cite{groff_font(5)} manual page for details.
+
+@item -P@var{prologue}
+Use the @var{prologue} in the font path as the prologue instead of
+the default @file{prologue}. Overrides the environment variable
+@env{GROPS_PROLOGUE}.
+
+@item -w@var{n}
+Set the line thickness to @var{n}/1000@dmn{em}. Overrides the
+default value @var{n} = 40.
+
+@item -v
+Print the version number.
+@end table
@c ---------------------------------------------------------------------
@@ -14947,16 +15167,122 @@ is available as an extra package from the following address:
@cindex embedding PostScript
@cindex PostScript, embedding
-@c XXX
+The escape sequence
+
+@code{\X'ps: import @var{file} @var{llx} @var{lly} @var{urx} @var{ury}
+ @var{width} [@var{height}]'}
+
+@noindent
+places a rectangle of the specified @var{width} containing the
+@sc{PostScript} drawing from file @var{file} bound by the box from
+@var{llx} @var{lly} to @var{urx} @var{ury} (in @sc{PostScript}
+coordinates) at the insertion point. If @var{height} is not
+specified, the embedded drawing is scaled proportionally.
+
+@xref{Miscellaneous}, for the @code{psbb} request which automatically
+generates the bounding box.
+
+This escape sequence is used internally by the macro @code{PSPIC}
+(see the @cite{groff_tmac(5)} manual page).
@c =====================================================================
-@node grodvi, grolj4, grops, Output Devices
+@node gropdf, grodvi, grops, Output Devices
+@section @code{gropdf}
+@cindex @code{gropdf}, the program
+
+The postprocessor @command{gropdf} translates the output from GNU
+@command{troff} into a form suitable for Adobe PDF devices. It is fully
+documented on its manual page, @cite{gropdf(1)}.
+
+@menu
+* Invoking gropdf::
+* Embedding PDF::
+@end menu
+
+@c ---------------------------------------------------------------------
+
+@node Invoking gropdf, Embedding PDF, gropdf, gropdf
+@subsection Invoking @code{gropdf}
+@cindex invoking @code{gropdf}
+@cindex @code{gropdf}, invoking
+
+The postprocessor @code{gropdf} accepts the following command-line
+options:
+
+@table @option
+@item -d
+Produce uncompressed PDFs which include debugging comments.
+
+@item -e
+This forces @code{gropdf} to embed all used fonts in the PDF,
+even if they are one of the 14 base Adobe fonts.
+
+@item -F@var{dir}
+Put the directory @file{@var{dir}/dev@var{name}} in front of the
+search path for the font, prologue and device description files,
+given the target device @var{name}, usually @strong{pdf}.
+
+@item -y@var{foundry}
+This forces the use of a different font foundry.
+
+@item -l
+Use landscape orientation.
+
+@item -p@var{papersize}
+Set the page dimensions. Overrides the commands @option{papersize},
+@option{paperlength}, and @option{paperwidth} in the @file{DESC}
+file. See the @cite{groff_font(5)} manual page for details.
+
+@item -v
+Print the version number.
+
+@item -s
+Append a comment line to end of PDF showing statistics, i.e. number of
+pages in document. Ghostscript's @cite{ps2pdf(1)} complains about this
+line if it is included, but works anyway.
+
+@item -u@var{filename}
+@code{gropdf} normally includes a ToUnicode CMap with any font created
+using @file{text.enc} as the encoding file, this makes it easier to
+search for words which contain ligatures. You can include your own CMap
+by specifying a @var{filename} or have no CMap at all by omitting the
+@var{filename}.
+@end table
+
+@c ---------------------------------------------------------------------
+
+@node Embedding PDF, , Invoking gropdf, gropdf
+@subsection Embedding PDF
+@cindex embedding PDF
+@cindex PDF, embedding
+
+The escape sequence
+
+@code{\X'pdf: pdfpic @var{file} @var{alignment} @var{width} [@var{height}]
+ [@var{linelength}]'}
+
+@noindent
+places a rectangle of the specified @var{width} containing the PDF
+drawing from file @var{file} of desired @var{width} and @var{height} (if
+@var{height} is missing or zero then it is scaled proportionally). If
+@var{alignment} is @code{-L} the drawing is left aligned. If it is
+@code{-C} or @code{-R} a @var{linelength} greater than the width of the
+drawing is required as well. If @var{width} is specified as zero then
+the width is scaled in proportion to the height.
+
+
+@c =====================================================================
+
+@node grodvi, grolj4, gropdf, Output Devices
@section @code{grodvi}
@cindex @code{grodvi}, the program
-@c XXX
+The postprocessor @command{grodvi} translates the output from GNU
+@command{troff} into the @strong{DVI} output format compatible with
+the @strong{@TeX{}} document preparation system. It is fully
+documented on its manual page, @cite{grodvi(1)}.
@menu
* Invoking grodvi::
@@ -14969,7 +15295,33 @@ is available as an extra package from the following address:
@cindex invoking @code{grodvi}
@cindex @code{grodvi}, invoking
-@c XXX
+The postprocessor @code{grodvi} accepts the following command-line
+options:
+
+@table @option
+@item -d
+Do not use @strong{tpic} specials to implement drawing commands.
+
+@item -F@var{dir}
+Put the directory @file{@var{dir}/dev@var{name}} in front of the
+search path for the font and device description files, given the
+target device @var{name}, usually @strong{dvi}.
+
+@item -l
+Use landscape orientation.
+
+@item -p@var{papersize}
+Set the page dimensions. Overrides the commands @option{papersize},
+@option{paperlength}, and @option{paperwidth} in the @file{DESC}
+file. See @cite{groff_font(5)} manual page for details.
+
+@item -v
+Print the version number.
+
+@item -w@var{n}
+Set the line thickness to @var{n}/1000@dmn{em}. Overrides the
+default value @var{n} = 40.
+@end table
@c =====================================================================
@@ -14978,7 +15330,10 @@ is available as an extra package from the following address:
@section @code{grolj4}
@cindex @code{grolj4}, the program
-@c XXX
+The postprocessor @command{grolj4} translates the output from GNU
+@command{troff} into the @strong{PCL5} output format suitable for
+printing on a @strong{HP LaserJet@tie{}4} printer. It is fully
+documented on its manual page, @cite{grolj4(1)}.
@menu
* Invoking grolj4::
@@ -14991,7 +15346,37 @@ is available as an extra package from the following address:
@cindex invoking @code{grolj4}
@cindex @code{grolj4}, invoking
-@c XXX
+The postprocessor @code{grolj4} accepts the following command-line
+options:
+
+@table @option
+@item -c@var{n}
+Print @var{n} copies of each page.
+
+@item -F@var{dir}
+Put the directory @file{@var{dir}/dev@var{name}} in front of the
+search path for the font and device description files, given the
+target device @var{name}, usually @strong{lj4}.
+
+@item -l
+Use landscape orientation.
+
+@item -p@var{size}
+Set the page dimensions. Valid values for @var{size} are:
+@code{letter}, @code{legal}, @code{executive}, @code{a4},
+@code{com10}, @code{monarch}, @code{c5}, @code{b5}, @code{d1}.
+
+@item -v
+Print the version number.
+
+@item -w@var{n}
+Set the line thickness to @var{n}/1000@dmn{em}. Overrides the
+default value @var{n} = 40.
+@end table
+
+The special drawing command @code{\D'R @var{dh} @var{dv}'} draws a
+horizontal rectangle from the current position to the position at
+offset (@var{dh},@var{dv}).
@c =====================================================================
@@ -15000,7 +15385,10 @@ is available as an extra package from the following address:
@section @code{grolbp}
@cindex @code{grolbp}, the program
-@c XXX
+The postprocessor @command{grolbp} translates the output from GNU
+@command{troff} into the @strong{LBP} output format suitable for
+printing on @strong{Canon CAPSL} printers. It is fully documented on
+its manual page, @cite{grolbp(1)}.
@menu
* Invoking grolbp::
@@ -15013,7 +15401,39 @@ is available as an extra package from the following address:
@cindex invoking @code{grolbp}
@cindex @code{grolbp}, invoking
-@c XXX
+The postprocessor @code{grolbp} accepts the following command-line
+options:
+
+@table @option
+@item -c@var{n}
+Print @var{n} copies of each page.
+
+@item -F@var{dir}
+Put the directory @file{@var{dir}/dev@var{name}} in front of the
+search path for the font, prologue and device description files,
+given the target device @var{name}, usually @strong{lbp}.
+
+@item -l
+Use landscape orientation.
+
+@item -o@var{orientation}
+Use the @var{orientation} specified: @code{portrait} or
+@code{landscape}.
+
+@item -p@var{papersize}
+Set the page dimensions. See @cite{groff_font(5)} manual page for
+details.
+
+@item -w@var{n}
+Set the line thickness to @var{n}/1000@dmn{em}. Overrides the
+default value @var{n} = 40.
+
+@item -v
+Print the version number.
+
+@item -h
+Print command-line help.
+@end table
@c =====================================================================
@@ -15030,7 +15450,7 @@ option. If no files are given, @code{grohtml} will read the standard
input. A filename of @code{-} will also cause @code{grohtml} to read
the standard input. @acronym{HTML} output is written to the standard
output. When @code{grohtml} is run by @code{groff}, options can be
-passed to @code{grohtml} using @code{groff}'s @code{-P} option.
+passed to @code{grohtml} using @code{groff}'s @option{-P} option.
@code{grohtml} invokes @code{groff} twice. In the first pass, pictures,
equations, and tables are rendered using the @code{ps} device, and in
@@ -15045,6 +15465,9 @@ safely ignored unless the special characters appear inside a table or
equation, in which case glyphs for these characters must be defined for
the @code{ps} device as well.
+This output device is fully documented on its manual page,
+@cite{grohtml(1)}.
+
@menu
* Invoking grohtml::
* grohtml specific registers and strings::
@@ -15057,7 +15480,83 @@ the @code{ps} device as well.
@cindex invoking @code{grohtml}
@cindex @code{grohtml}, invoking
-@c XXX
+The postprocessor @code{grohtml} accepts the following command-line
+options:
+
+@table @option
+@item -a@var{bits}
+Use this number of @var{bits} (= 1, 2 or 4) for text antialiasing.
+Default: @var{bits} = 4.
+
+@item -a0
+Do not use text antialiasing.
+
+@item -b
+Use white background.
+
+@item -D@var{dir}
+Store rendered images in the directory @file{@var{dir}}.
+
+@item -F@var{dir}
+Put the directory @file{@var{dir}/dev@var{name}} in front of the
+search path for the font, prologue and device description files,
+given the target device @var{name}, usually @strong{html}.
+
+@item -g@var{bits}
+Use this number of @var{bits} (= 1, 2 or 4) for antialiasing of
+drawings. Default: @var{bits} = 4.
+
+@item -g0
+Do not use antialiasing for drawings.
+
+@item -h
+Use the @code{B} element for section headings.
+
+@item -i@var{resolution}
+Use the @var{resolution} for rendered images. Default:
+@var{resolution} = 100@dmn{dpi}.
+
+@item -I@var{stem}
+Set the images' @var{stem name}. Default: @var{stem} =
+@file{grohtml-@var{XXX}} (@var{XXX} is the process ID).
+
+@item -j@var{stem}
+Place each section in a separate file called
+@file{@var{stem}-@var{n}.html} (where @var{n} is a generated section
+number).
+
+@item -l
+Do not generate the table of contents.
+
+@item -n
+Generate simple fragment identifiers.
+
+@item -o@var{offset}
+Use vertical paddding @var{offset} for images.
+
+@item -p
+Display the page rendering progress to @code{stderr}.
+
+@item -r
+Do not use horizontal rules to separate headers and footers.
+
+@item -s@var{size}
+Set the base font size, to be modified using the elements @code{BIG}
+and @code{SMALL}.
+
+@item -S@var{level}
+Generate separate files for sections at level @var{level}.
+
+@item -v
+Print the version number.
+
+@item -V
+Generate a validator button at the bottom.
+
+@item -y
+Generate a signature of groff after the validator button, if any.
+@end table
+
@c ---------------------------------------------------------------------
@@ -15093,7 +15592,7 @@ troff -Txhtml
@endExample
@cindex MathML
-The PostScript device is used to create all the image files (for
+The @sc{PostScript} device is used to create all the image files (for
@option{-Thtml}; if @option{-Txhtml} is used, all equations are passed
to @code{geqn} to produce @acronym{MathML}, and the register
@code{ps4html} enables the macro sets to ignore floating keeps, footers,
@@ -15865,7 +16364,7 @@ x stop
@noindent
This output can be fed into @code{grops} to get its representation as a
-PostScript file.
+@sc{PostScript} file.
@item Low-resolution device @code{latin1}
@@ -15968,14 +16467,14 @@ The classical quasi device independence is not yet implemented.
@item
The old hardware was very different from what we use today. So the
-@code{groff} devices are also fundamentally different from the ones in
-@acronym{AT&T} @code{troff}. For example, the @acronym{AT&T} PostScript
-device is called @code{post} and has a resolution of only 720 units per
-inch, suitable for printers 20 years ago, while @code{groff}'s @code{ps}
-device has a resolution of 72000 units per inch. Maybe, by implementing
-some rescaling mechanism similar to the classical quasi device
-independence, @code{groff} could emulate @acronym{AT&T}'s @code{post}
-device.
+@code{groff} devices are also fundamentally different from the ones
+in @acronym{AT&T} @code{troff}. For example, the @acronym{AT&T}
+@sc{PostScript} device is called @code{post} and has a resolution of
+only 720 units per inch, suitable for printers 20 years ago, while
+@code{groff}'s @code{ps} device has a resolution of 72000 units per
+inch. Maybe, by implementing some rescaling mechanism similar to the
+classical quasi device independence, @code{groff} could emulate
+@acronym{AT&T}'s @code{post} device.
@item
The B-spline command @samp{D~} is correctly handled by the intermediate
@@ -16083,9 +16582,9 @@ quantities are rounded to be multiples of this value.
@cindex PostScript, PNG image generation
@cindex PNG image generation from PostScript
Needed for @code{grohtml} only. It specifies the program to generate
-PNG images from PostScript input. Under GNU/Linux this is usually
-@code{gs} but under other systems (notably cygwin) it might be set to
-another name.
+PNG images from @sc{PostScript} input. Under GNU/Linux this is
+usually @code{gs} but under other systems (notably cygwin) it might
+be set to another name.
@item paperlength @var{n}
@kindex paperlength
@@ -16577,3 +17076,8 @@ accessed as @samp{\[xxx]}.
@bye
+
+@c Local Variables:
+@c mode: texinfo
+@c coding: latin-1
+@c End:
diff --git a/doc/meref.me b/doc/meref.me
index 848b6c8..1685561 100644
--- a/doc/meref.me
+++ b/doc/meref.me
@@ -1329,12 +1329,25 @@ on each page.
.TL
.b .n2
.i N
+.i c
.DE
Number lines from
.i N ,
stop if
.i N
-= 0.
+missing; resume where stopped with (unsigned) value
+.i N
+or increment
+.i N
+if
+.i N
+is \(+-\c
+.i N .
+If
+.i c
+is c, maintain compatibility with original
+.b .n2
+by narrowing line width to accommodate numbers.
.TL
.b .sk
.DE
diff --git a/doc/pic.ms b/doc/pic.ms
index 1e94bb5..d1bd42c 100644
--- a/doc/pic.ms
+++ b/doc/pic.ms
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2006, 2007, 2008, 2009
+.\" Copyright (C) 2006-2011
.\" Free Software Foundation, Inc.
.\" Written by Eric S. Raymond <esr@thyrsus.com>
.\"
@@ -30,7 +30,7 @@
.\" Eric S. Raymond <esr@thyrsus.com> in August 1995. It has been put
.\" under the GPL in March 2006.
.\"
-.\" $Id: pic.ms,v 1.45 2010/09/19 07:46:27 wl Exp $
+.\" $Id: pic.ms,v 1.49 2011/07/26 17:11:10 wl Exp $
.
.
.\" Set a proper TeX and LaTeX
@@ -188,7 +188,7 @@ This was produced from the following \fBpic\fP program:
\&.PS
ellipse "document";
arrow;
-box width 0.6 "\efIpic\e/\efP(1)"
+box width 0.6 "\efIgpic\e/\efP(1)"
arrow;
box width 1.1 "\efIgtbl\e/\efP(1) or \efIgeqn\e/\efP(1)" "(optional)" dashed;
arrow;
@@ -862,7 +862,7 @@ In GNU \fBgpic\fR, objects can have an
.B aligned
attribute.
This only works if the postprocessor is
-\fBgrops\fP.
+\fBgrops\fP or \fBgropdf\fP.
Any text associated with an object having the
.B aligned
attribute is rotated about the center of the object
@@ -1202,12 +1202,12 @@ Interpolation Between Positions
A position may be interpolated between any two positions. The syntax
is `\fIfraction\fP \fBof the way between\fP \fIposition1\fP \fBand\fP
\fIposition2\fP'. For example, you can say \fB1/3 of the way between
-here and last ellipse .ne\fP. The fraction may be in
+Here and last ellipse .ne\fP. The fraction may be in
numerator/denominator form or may be an ordinary number (values are
\fInot\fP restricted to [0,1]). As an alternative to this verbose
syntax, you can say `\fIfraction\fP \fB<\,\fP\fIposition1\fP \fB,\fP
\fIposition2\/\fP\fB>\fP'; thus, the example could also be written as
-\fB1/3 <here, last ellipse>\fP.
+\fB1/3 <Here, last ellipse>\fP.
.KS
.PS
arrow up right;
diff --git a/doc/texinfo.tex b/doc/texinfo.tex
index 1130b8f..85f184c 100644
--- a/doc/texinfo.tex
+++ b/doc/texinfo.tex
@@ -3,11 +3,11 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2010-12-23.17}
+\def\texinfoversion{2013-02-01.11}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
%
% This texinfo.tex file is free software: you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
@@ -24,13 +24,14 @@
%
% As a special exception, when this file is read by TeX when processing
% a Texinfo source document, you may use the result without
-% restriction. (This has been our intent since Texinfo was invented.)
+% restriction. This Exception is an additional permission under section 7
+% of the GNU General Public License, version 3 ("GPLv3").
%
% Please try the latest version of texinfo.tex before submitting bug
% reports; you can get the latest version from:
-% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
-% ftp://tug.org/tex/texinfo.tex
-% (and all CTAN mirrors, see http://www.ctan.org).
+% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
+% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
+% http://www.gnu.org/software/texinfo/ (the Texinfo home page)
% The texinfo.tex in any given distribution could well be out
% of date, so if that's what you're using, please check.
%
@@ -116,10 +117,11 @@
% Set up fixed words for English if not already set.
\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined \gdef\putworderror{error}\fi
\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
\ifx\putwordin\undefined \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
@@ -158,15 +160,18 @@
\def\spaceisspace{\catcode`\ =\spacecat}
% sometimes characters are active, so we need control sequences.
+\chardef\ampChar = `\&
\chardef\colonChar = `\:
\chardef\commaChar = `\,
\chardef\dashChar = `\-
\chardef\dotChar = `\.
\chardef\exclamChar= `\!
+\chardef\hashChar = `\#
\chardef\lquoteChar= `\`
\chardef\questChar = `\?
\chardef\rquoteChar= `\'
\chardef\semiChar = `\;
+\chardef\slashChar = `\/
\chardef\underChar = `\_
% Ignore a token.
@@ -215,7 +220,7 @@
\tracingmacros2
\tracingrestores1
\showboxbreadth\maxdimen \showboxdepth\maxdimen
- \ifx\eTeXversion\undefined\else % etex gives us more logging
+ \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
\tracingscantokens1
\tracingifs1
\tracinggroups1
@@ -226,6 +231,13 @@
\errorcontextlines16
}%
+% @errormsg{MSG}. Do the index-like expansions on MSG, but if things
+% aren't perfect, it's not the end of the world, being an error message,
+% after all.
+%
+\def\errormsg{\begingroup \indexnofonts \doerrormsg}
+\def\doerrormsg#1{\errmessage{#1}}
+
% add check for \lastpenalty to plain's definitions. If the last thing
% we did was a \nobreak, we don't want to insert more space.
%
@@ -545,7 +557,7 @@
}
\def\inenvironment#1{%
\ifx#1\empty
- out of any environment%
+ outside of any environment%
\else
in environment \expandafter\string#1%
\fi
@@ -557,7 +569,7 @@
\parseargdef\end{%
\if 1\csname iscond.#1\endcsname
\else
- % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+ % The general wording of \badenverr may not be ideal.
\expandafter\checkenv\csname#1\endcsname
\csname E#1\endcsname
\endgroup
@@ -583,7 +595,7 @@
\def\:{\spacefactor=1000 }
% @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
+\def\*{\unskip\hfil\break\hbox{}\ignorespaces}
% @/ allows a line break.
\let\/=\allowbreak
@@ -608,7 +620,7 @@
\else\ifx\temp\offword \plainnonfrenchspacing
\else
\errhelp = \EMsimple
- \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+ \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
\fi\fi
}
@@ -690,15 +702,6 @@ where each line of input produces a line of output.}
\newdimen\mil \mil=0.001in
-% Old definition--didn't work.
-%\parseargdef\need{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
\parseargdef\need{%
% Ensure vertical mode, so we don't make a big box in the middle of a
% paragraph.
@@ -849,6 +852,7 @@ where each line of input produces a line of output.}
\makevalueexpandable % we want to expand any @value in FILE.
\turnoffactive % and allow special characters in the expansion
\indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @include of #1^^J}%
\edef\temp{\noexpand\input #1 }%
%
% This trickery is to read FILE outside of a group, in case it makes
@@ -884,7 +888,7 @@ where each line of input produces a line of output.}
\def\popthisfilestack{\errthisfilestackempty}
\def\errthisfilestackempty{\errmessage{Internal error:
the stack of filenames is empty.}}
-
+%
\def\thisfile{}
% @center line
@@ -892,36 +896,46 @@ where each line of input produces a line of output.}
%
\parseargdef\center{%
\ifhmode
- \let\next\centerH
+ \let\centersub\centerH
\else
- \let\next\centerV
+ \let\centersub\centerV
\fi
- \next{\hfil \ignorespaces#1\unskip \hfil}%
+ \centersub{\hfil \ignorespaces#1\unskip \hfil}%
+ \let\centersub\relax % don't let the definition persist, just in case
}
-\def\centerH#1{%
- {%
- \hfil\break
- \advance\hsize by -\leftskip
- \advance\hsize by -\rightskip
- \line{#1}%
- \break
- }%
+\def\centerH#1{{%
+ \hfil\break
+ \advance\hsize by -\leftskip
+ \advance\hsize by -\rightskip
+ \line{#1}%
+ \break
+}}
+%
+\newcount\centerpenalty
+\def\centerV#1{%
+ % The idea here is the same as in \startdefun, \cartouche, etc.: if
+ % @center is the first thing after a section heading, we need to wipe
+ % out the negative parskip inserted by \sectionheading, but still
+ % prevent a page break here.
+ \centerpenalty = \lastpenalty
+ \ifnum\centerpenalty>10000 \vskip\parskip \fi
+ \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
+ \line{\kern\leftskip #1\kern\rightskip}%
}
-\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
% @sp n outputs n lines of vertical space
-
+%
\parseargdef\sp{\vskip #1\baselineskip}
% @comment ...line which is ignored...
% @c is the same as @comment
% @ignore ... @end ignore is another way to write a comment
-
+%
\def\comment{\begingroup \catcode`\^^M=\other%
\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
\commentxxx}
{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-
+%
\let\c=\comment
% @paragraphindent NCHARS
@@ -1078,9 +1092,8 @@ where each line of input produces a line of output.}
\newif\ifpdfmakepagedest
% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
-% can be set). So we test for \relax and 0 as well as \undefined,
-% borrowed from ifpdf.sty.
-\ifx\pdfoutput\undefined
+% can be set). So we test for \relax and 0 as well as being undefined.
+\ifx\pdfoutput\thisisundefined
\else
\ifx\pdfoutput\relax
\else
@@ -1095,50 +1108,24 @@ where each line of input produces a line of output.}
% for display in the outlines, and in other places. Thus, we have to
% double any backslashes. Otherwise, a name like "\node" will be
% interpreted as a newline (\n), followed by o, d, e. Not good.
-% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
-% (and related messages, the final outcome is that it is up to the TeX
-% user to double the backslashes and otherwise make the string valid, so
-% that's what we do).
-
-% double active backslashes.
-%
-{\catcode`\@=0 \catcode`\\=\active
- @gdef@activebackslashdouble{%
- @catcode`@\=@active
- @let\=@doublebackslash}
-}
-
-% To handle parens, we must adopt a different approach, since parens are
-% not active characters. hyperref.dtx (which has the same problem as
-% us) handles it with this amazing macro to replace tokens, with minor
-% changes for Texinfo. It is included here under the GPL by permission
-% from the author, Heiko Oberdiek.
-%
-% #1 is the tokens to replace.
-% #2 is the replacement.
-% #3 is the control sequence with the string.
-%
-\def\HyPsdSubst#1#2#3{%
- \def\HyPsdReplace##1#1##2\END{%
- ##1%
- \ifx\\##2\\%
- \else
- #2%
- \HyReturnAfterFi{%
- \HyPsdReplace##2\END
- }%
- \fi
- }%
- \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
-}
-\long\def\HyReturnAfterFi#1\fi{\fi#1}
-
-% #1 is a control sequence in which to do the replacements.
-\def\backslashparens#1{%
- \xdef#1{#1}% redefine it as its expansion; the definition is simply
- % \lastnode when called from \setref -> \pdfmkdest.
- \HyPsdSubst{(}{\realbackslash(}{#1}%
- \HyPsdSubst{)}{\realbackslash)}{#1}%
+%
+% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
+% related messages. The final outcome is that it is up to the TeX user
+% to double the backslashes and otherwise make the string valid, so
+% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to
+% do this reliably, so we use it.
+
+% #1 is a control sequence in which to do the replacements,
+% which we \xdef.
+\def\txiescapepdf#1{%
+ \ifx\pdfescapestring\thisisundefined
+ % No primitive available; should we give a warning or log?
+ % Many times it won't matter.
+ \else
+ % The expandable \pdfescapestring primitive escapes parentheses,
+ % backslashes, and other special chars.
+ \xdef#1{\pdfescapestring{#1}}%
+ \fi
}
\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
@@ -1197,32 +1184,34 @@ output) for that.)}
%
% #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
\def\dopdfimage#1#2#3{%
- \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
- \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+ \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+ \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
%
- % pdftex (and the PDF format) support .png, .jpg, .pdf (among
- % others). Let's try in that order.
+ % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+ % others). Let's try in that order, PDF first since if
+ % someone has a scalable image, presumably better to use that than a
+ % bitmap.
\let\pdfimgext=\empty
\begingroup
- \openin 1 #1.png \ifeof 1
- \openin 1 #1.jpg \ifeof 1
- \openin 1 #1.jpeg \ifeof 1
- \openin 1 #1.JPG \ifeof 1
- \openin 1 #1.pdf \ifeof 1
- \openin 1 #1.PDF \ifeof 1
+ \openin 1 #1.pdf \ifeof 1
+ \openin 1 #1.PDF \ifeof 1
+ \openin 1 #1.png \ifeof 1
+ \openin 1 #1.jpg \ifeof 1
+ \openin 1 #1.jpeg \ifeof 1
+ \openin 1 #1.JPG \ifeof 1
\errhelp = \nopdfimagehelp
\errmessage{Could not find image file #1 for pdf}%
- \else \gdef\pdfimgext{PDF}%
+ \else \gdef\pdfimgext{JPG}%
\fi
- \else \gdef\pdfimgext{pdf}%
+ \else \gdef\pdfimgext{jpeg}%
\fi
- \else \gdef\pdfimgext{JPG}%
+ \else \gdef\pdfimgext{jpg}%
\fi
- \else \gdef\pdfimgext{jpeg}%
+ \else \gdef\pdfimgext{png}%
\fi
- \else \gdef\pdfimgext{jpg}%
+ \else \gdef\pdfimgext{PDF}%
\fi
- \else \gdef\pdfimgext{png}%
+ \else \gdef\pdfimgext{pdf}%
\fi
\closein 1
\endgroup
@@ -1234,8 +1223,8 @@ output) for that.)}
\else
\immediate\pdfximage
\fi
- \ifdim \wd0 >0pt width \imagewidth \fi
- \ifdim \wd2 >0pt height \imageheight \fi
+ \ifdim \wd0 >0pt width \pdfimagewidth \fi
+ \ifdim \wd2 >0pt height \pdfimageheight \fi
\ifnum\pdftexversion<13
#1.\pdfimgext
\else
@@ -1250,10 +1239,9 @@ output) for that.)}
% such as \, aren't expanded when present in a section title.
\indexnofonts
\turnoffactive
- \activebackslashdouble
\makevalueexpandable
\def\pdfdestname{#1}%
- \backslashparens\pdfdestname
+ \txiescapepdf\pdfdestname
\safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}}
%
@@ -1285,28 +1273,22 @@ output) for that.)}
% page number. We could generate a destination for the section
% text in the case where a section has no node, but it doesn't
% seem worth the trouble, since most documents are normally structured.
- \def\pdfoutlinedest{#3}%
+ \edef\pdfoutlinedest{#3}%
\ifx\pdfoutlinedest\empty
\def\pdfoutlinedest{#4}%
\else
- % Doubled backslashes in the name.
- {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
- \backslashparens\pdfoutlinedest}%
+ \txiescapepdf\pdfoutlinedest
\fi
%
- % Also double the backslashes in the display string.
- {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
- \backslashparens\pdfoutlinetext}%
+ % Also escape PDF chars in the display string.
+ \edef\pdfoutlinetext{#1}%
+ \txiescapepdf\pdfoutlinetext
%
\pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
}
%
\def\pdfmakeoutlines{%
\begingroup
- % Thanh's hack / proper braces in bookmarks
- \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
- \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
- %
% Read toc silently, to get counts of subentries for \pdfoutline.
\def\partentry##1##2##3##4{}% ignore parts in the outlines
\def\numchapentry##1##2##3##4{%
@@ -1362,25 +1344,41 @@ output) for that.)}
% Latin 2 (0xea) gets translated to a | character. Info from
% Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
%
- % xx to do this right, we have to translate 8-bit characters to
- % their "best" equivalent, based on the @documentencoding. Right
- % now, I guess we'll just let the pdf reader have its way.
+ % TODO this right, we have to translate 8-bit characters to
+ % their "best" equivalent, based on the @documentencoding. Too
+ % much work for too little return. Just use the ASCII equivalents
+ % we use for the index sort strings.
+ %
\indexnofonts
\setupdatafile
+ % We can have normal brace characters in the PDF outlines, unlike
+ % Texinfo index files. So set that up.
+ \def\{{\lbracecharliteral}%
+ \def\}{\rbracecharliteral}%
\catcode`\\=\active \otherbackslash
\input \tocreadfilename
\endgroup
}
+ {\catcode`[=1 \catcode`]=2
+ \catcode`{=\other \catcode`}=\other
+ \gdef\lbracecharliteral[{]%
+ \gdef\rbracecharliteral[}]%
+ ]
%
\def\skipspaces#1{\def\PP{#1}\def\D{|}%
\ifx\PP\D\let\nextsp\relax
\else\let\nextsp\skipspaces
- \ifx\p\space\else\addtokens{\filename}{\PP}%
- \advance\filenamelength by 1
- \fi
+ \addtokens{\filename}{\PP}%
+ \advance\filenamelength by 1
\fi
\nextsp}
- \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+ \def\getfilename#1{%
+ \filenamelength=0
+ % If we don't expand the argument now, \skipspaces will get
+ % snagged on things like "@value{foo}".
+ \edef\temp{#1}%
+ \expandafter\skipspaces\temp|\relax
+ }
\ifnum\pdftexversion < 14
\let \startlink \pdfannotlink
\else
@@ -1477,9 +1475,6 @@ output) for that.)}
\def\ttsl{\setfontstyle{ttsl}}
-% Default leading.
-\newdimen\textleading \textleading = 13.2pt
-
% Set the baselineskip to #1, and the lineskip and strut size
% correspondingly. There is no deep meaning behind these magic numbers
% used as factors; they just match (closely enough) what Knuth defined.
@@ -1491,6 +1486,7 @@ output) for that.)}
% can get a sort of poor man's double spacing by redefining this.
\def\baselinefactor{1}
%
+\newdimen\textleading
\def\setleading#1{%
\dimen0 = #1\relax
\normalbaselineskip = \baselinefactor\dimen0
@@ -1512,7 +1508,7 @@ output) for that.)}
% if we are producing pdf, and we have \pdffontattr, then define cmaps.
% (\pdffontattr was introduced many years ago, but people still run
% older pdftex's; it's easy to conditionalize, so we do.)
-\ifpdf \ifx\pdffontattr\undefined \else
+\ifpdf \ifx\pdffontattr\thisisundefined \else
\begingroup
\catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
\catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
@@ -1763,28 +1759,34 @@ end
\fi\fi
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
+% Set the font macro #1 to the font named \fontprefix#2.
% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
-% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
-% empty to omit).
+% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
+% Example:
+% #1 = \textrm
+% #2 = \rmshape
+% #3 = 10
+% #4 = \mainmagstep
+% #5 = OT1
+%
\def\setfont#1#2#3#4#5{%
\font#1=\fontprefix#2#3 scaled #4
\csname cmap#5\endcsname#1%
}
% This is what gets called when #5 of \setfont is empty.
\let\cmap\gobble
-% emacs-page end of cmaps
+%
+% (end of cmaps)
% Use cm as the default font prefix.
% To specify the font prefix, you must define \fontprefix
% before you read in texinfo.tex.
-\ifx\fontprefix\undefined
+\ifx\fontprefix\thisisundefined
\def\fontprefix{cm}
\fi
% Support font families that don't use the same naming scheme as CM.
\def\rmshape{r}
-\def\rmbshape{bx} %where the normal face is bold
+\def\rmbshape{bx} % where the normal face is bold
\def\bfshape{b}
\def\bxshape{bx}
\def\ttshape{tt}
@@ -1799,8 +1801,7 @@ end
\def\scshape{csc}
\def\scbshape{csc}
-% Definitions for a main text size of 11pt. This is the default in
-% Texinfo.
+% Definitions for a main text size of 11pt. (The default in Texinfo.)
%
\def\definetextfontsizexi{%
% Text fonts (11.2pt, magstep1).
@@ -1925,7 +1926,7 @@ end
\textleading = 13.2pt % line spacing for 11pt CM
\textfonts % reset the current fonts
\rm
-} % end of 11pt text font size definitions
+} % end of 11pt text font size definitions, \definetextfontsizexi
% Definitions to make the main text be 10pt Computer Modern, with
@@ -2057,7 +2058,7 @@ end
\textleading = 12pt % line spacing for 10pt CM
\textfonts % reset the current fonts
\rm
-} % end of 10pt text font size definitions
+} % end of 10pt text font size definitions, \definetextfontsizex
% We provide the user-level command
@@ -2070,7 +2071,7 @@ end
%
\parseargdef\fonttextsize{%
\def\textsizearg{#1}%
- \wlog{doing @fonttextsize \textsizearg}%
+ %\wlog{doing @fonttextsize \textsizearg}%
%
% Set \globaldefs so that documents can use this inside @tex, since
% makeinfo 4.8 does not support it, but we need it nonetheless.
@@ -2252,12 +2253,14 @@ end
% Markup style setup for left and right quotes.
\defmarkupstylesetup\markupsetuplq{%
- \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname
+ \expandafter\let\expandafter \temp
+ \csname markupsetuplq\currentmarkupstyle\endcsname
\ifx\temp\relax \markupsetuplqdefault \else \temp \fi
}
\defmarkupstylesetup\markupsetuprq{%
- \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname
+ \expandafter\let\expandafter \temp
+ \csname markupsetuprq\currentmarkupstyle\endcsname
\ifx\temp\relax \markupsetuprqdefault \else \temp \fi
}
@@ -2270,8 +2273,6 @@ end
\gdef\markupsetcodequoteleft{\let`\codequoteleft}
\gdef\markupsetcodequoteright{\let'\codequoteright}
-
-\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
}
\let\markupsetuplqcode \markupsetcodequoteleft
@@ -2280,6 +2281,9 @@ end
\let\markupsetuplqexample \markupsetcodequoteleft
\let\markupsetuprqexample \markupsetcodequoteright
%
+\let\markupsetuplqkbd \markupsetcodequoteleft
+\let\markupsetuprqkbd \markupsetcodequoteright
+%
\let\markupsetuplqsamp \markupsetcodequoteleft
\let\markupsetuprqsamp \markupsetcodequoteright
%
@@ -2289,14 +2293,11 @@ end
\let\markupsetuplqverbatim \markupsetcodequoteleft
\let\markupsetuprqverbatim \markupsetcodequoteright
-\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
-
-% Allow an option to not replace quotes with a regular directed right
-% quote/apostrophe (char 0x27), but instead use the undirected quote
-% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
-% the default, but it works for pasting with more pdf viewers (at least
-% evince), the lilypond developers report. xpdf does work with the
-% regular 0x27.
+% Allow an option to not use regular directed right quote/apostrophe
+% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
+% The undirected quote is ugly, so don't make it the default, but it
+% works for pasting with more pdf viewers (at least evince), the
+% lilypond developers report. xpdf does work with the regular 0x27.
%
\def\codequoteright{%
\expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
@@ -2320,6 +2321,36 @@ end
\else \char'22 \fi
}
+% Commands to set the quote options.
+%
+\parseargdef\codequoteundirected{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxicodequoteundirected\endcsname
+ = t%
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxicodequoteundirected\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
+ \fi\fi
+}
+%
+\parseargdef\codequotebacktick{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxicodequotebacktick\endcsname
+ = t%
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxicodequotebacktick\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
+ \fi\fi
+}
+
% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
\def\noligaturesquoteleft{\relax\lq}
@@ -2347,19 +2378,26 @@ end
\else\ifx\next-%
\else\ifx\next.%
\else\ptexslash
- \fi\fi\fi}
+ \fi\fi\fi
+ \aftersmartic
+}
-% like \smartslanted except unconditionally uses \ttsl, and no ic.
-% @var is set to this for defun arguments.
+% Unconditional use \ttsl, and no ic. @var is set to this for defuns.
\def\ttslanted#1{{\ttsl #1}}
% @cite is like \smartslanted except unconditionally use \sl. We never want
% ttsl for book titles, do we?
\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
+\def\aftersmartic{}
+\def\var#1{%
+ \let\saveaftersmartic = \aftersmartic
+ \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+ \smartslanted{#1}%
+}
+
\let\i=\smartitalic
\let\slanted=\smartslanted
-\def\var#1{\smartslanted{#1}}
\let\dfn=\smartslanted
\let\emph=\smartitalic
@@ -2409,34 +2447,12 @@ end
% @samp.
\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
-% definition of @key that produces a lozenge. Doesn't adjust to text size.
-%\setfont\keyrm\rmshape{8}{1000}{OT1}
-%\font\keysy=cmsy9
-%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
-% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
-% \vbox{\hrule\kern-0.4pt
-% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
-% \kern-0.4pt\hrule}%
-% \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-
-% definition of @key with no lozenge. If the current font is already
-% monospace, don't change it; that way, we respect @kbdinputstyle. But
-% if it isn't monospace, then use \tt.
-%
-\def\key#1{{\setupmarkupstyle{key}%
- \nohyphenation
- \ifmonospace\else\tt\fi
- #1}\null}
-
-% ctrl is no longer a Texinfo command.
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-% @file, @option are the same as @samp.
-\let\file=\samp
-\let\option=\samp
+% @indicateurl is \samp, that is, with quotes.
+\let\indicateurl=\samp
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
+% @code (and similar) prints in typewriter, but with spaces the same
+% size as normal in the surrounding text, without hyphenation, etc.
+% This is a subroutine for that.
\def\tclose#1{%
{%
% Change normal interword space to be same as for the current font.
@@ -2455,13 +2471,13 @@ end
\plainfrenchspacing
#1%
}%
- \null
+ \null % reset spacefactor to 1000
}
% We *must* turn on hyphenation at `-' and `_' in @code.
% Otherwise, it is too hard to avoid overfull hboxes
% in the Emacs manual, the Library manual, etc.
-
+%
% Unfortunately, TeX uses one parameter (\hyphenchar) to control
% both hyphenation at - and hyphenation within words.
% We must therefore turn them both off (\tclose does that)
@@ -2480,14 +2496,16 @@ end
\let-\codedash
\let_\codeunder
\else
- \let-\realdash
+ \let-\normaldash
\let_\realunder
\fi
\codex
}
}
-\def\realdash{-}
+\def\codex #1{\tclose{#1}\endgroup}
+
+\def\normaldash{-}
\def\codedash{-\discretionary{}{}{}}
\def\codeunder{%
% this is all so @math{@code{var_name}+1} can work. In math mode, _
@@ -2500,12 +2518,11 @@ end
\discretionary{}{}{}}%
{\_}%
}
-\def\codex #1{\tclose{#1}\endgroup}
% An additional complication: the above will allow breaks after, e.g.,
-% each of the four underscores in __typeof__. This is undesirable in
-% some manuals, especially if they don't have long identifiers in
-% general. @allowcodebreaks provides a way to control this.
+% each of the four underscores in __typeof__. This is bad.
+% @allowcodebreaks provides a document-level way to turn breaking at -
+% and _ on and off.
%
\newif\ifallowcodebreaks \allowcodebreakstrue
@@ -2520,63 +2537,25 @@ end
\allowcodebreaksfalse
\else
\errhelp = \EMsimple
- \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+ \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
\fi\fi
}
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-% `example' (@kbd uses ttsl only inside of @example and friends),
-% or `code' (@kbd uses normal tty font always).
-\parseargdef\kbdinputstyle{%
- \def\txiarg{#1}%
- \ifx\txiarg\worddistinct
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
- \else\ifx\txiarg\wordexample
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
- \else\ifx\txiarg\wordcode
- \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
- \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct'.
-\kbdinputstyle distinct
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
-\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
-
-% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
-\let\indicateurl=\code
-\let\env=\code
+% For @command, @env, @file, @option quotes seem unnecessary,
+% so use \code rather than \samp.
\let\command=\code
-
-% @clicksequence{File @click{} Open ...}
-\def\clicksequence#1{\begingroup #1\endgroup}
-
-% @clickstyle @arrow (by default)
-\parseargdef\clickstyle{\def\click{#1}}
-\def\click{\arrow}
+\let\env=\code
+\let\file=\code
+\let\option=\code
% @uref (abbreviation for `urlref') takes an optional (comma-separated)
% second argument specifying the text to display and an optional third
% arg as text to display instead of (rather than in addition to) the url
-% itself. First (mandatory) arg is the url. Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#1,#2,#3,#4\finish{\begingroup
+% itself. First (mandatory) arg is the url.
+% (This \urefnobreak definition isn't used now, leaving it for a while
+% for comparison.)
+\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
+\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
\unsepspaces
\pdfurl{#1}%
\setbox0 = \hbox{\ignorespaces #3}%
@@ -2597,6 +2576,103 @@ end
\endlink
\endgroup}
+% This \urefbreak definition is the active one.
+\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
+\let\uref=\urefbreak
+\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
+\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
+ \unsepspaces
+ \pdfurl{#1}%
+ \setbox0 = \hbox{\ignorespaces #3}%
+ \ifdim\wd0 > 0pt
+ \unhbox0 % third arg given, show only that
+ \else
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \ifpdf
+ \unhbox0 % PDF: 2nd arg given, show only it
+ \else
+ \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
+ \fi
+ \else
+ \urefcode{#1}% only url given, so show it
+ \fi
+ \fi
+ \endlink
+\endgroup}
+
+% Allow line breaks around only a few characters (only).
+\def\urefcatcodes{%
+ \catcode\ampChar=\active \catcode\dotChar=\active
+ \catcode\hashChar=\active \catcode\questChar=\active
+ \catcode\slashChar=\active
+}
+{
+ \urefcatcodes
+ %
+ \global\def\urefcode{\begingroup
+ \setupmarkupstyle{code}%
+ \urefcatcodes
+ \let&\urefcodeamp
+ \let.\urefcodedot
+ \let#\urefcodehash
+ \let?\urefcodequest
+ \let/\urefcodeslash
+ \codex
+ }
+ %
+ % By default, they are just regular characters.
+ \global\def&{\normalamp}
+ \global\def.{\normaldot}
+ \global\def#{\normalhash}
+ \global\def?{\normalquest}
+ \global\def/{\normalslash}
+}
+
+% we put a little stretch before and after the breakable chars, to help
+% line breaking of long url's. The unequal skips make look better in
+% cmtt at least, especially for dots.
+\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
+\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
+%
+\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
+\def\urefcodedot{\urefprestretch .\urefpoststretch}
+\def\urefcodehash{\urefprestretch \#\urefpoststretch}
+\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
+{
+ \catcode`\/=\active
+ \global\def\urefcodeslashfinish{%
+ \urefprestretch \slashChar
+ % Allow line break only after the final / in a sequence of
+ % slashes, to avoid line break between the slashes in http://.
+ \ifx\next/\else \urefpoststretch \fi
+ }
+}
+
+% One more complication: by default we'll break after the special
+% characters, but some people like to break before the special chars, so
+% allow that. Also allow no breaking at all, for manual control.
+%
+\parseargdef\urefbreakstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\wordnone
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
+ \else\ifx\txiarg\wordbefore
+ \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+ \else\ifx\txiarg\wordafter
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
+ \fi\fi\fi
+}
+\def\wordafter{after}
+\def\wordbefore{before}
+\def\wordnone{none}
+
+\urefbreakstyle after
+
% @url synonym for @uref, since that's how everyone uses it.
%
\let\url=\uref
@@ -2618,6 +2694,67 @@ end
\let\email=\uref
\fi
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+% `example' (@kbd uses ttsl only inside of @example and friends),
+% or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\worddistinct
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+ \else\ifx\txiarg\wordexample
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+ \else\ifx\txiarg\wordcode
+ \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
+ \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
+
+\def\xkey{\key}
+\def\kbdsub#1#2#3\par{%
+ \def\one{#1}\def\three{#3}\def\threex{??}%
+ \ifx\one\xkey\ifx\threex\three \key{#2}%
+ \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+ \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+}
+
+% definition of @key that produces a lozenge. Doesn't adjust to text size.
+%\setfont\keyrm\rmshape{8}{1000}{OT1}
+%\font\keysy=cmsy9
+%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+% \vbox{\hrule\kern-0.4pt
+% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+% \kern-0.4pt\hrule}%
+% \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+
+% definition of @key with no lozenge. If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle. But
+% if it isn't monospace, then use \tt.
+%
+\def\key#1{{\setupmarkupstyle{key}%
+ \nohyphenation
+ \ifmonospace\else\tt\fi
+ #1}\null}
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
%
@@ -2639,6 +2776,7 @@ end
\ifx\temp\empty \else
\space ({\unsepspaces \ignorespaces \temp \unskip})%
\fi
+ \null % reset \spacefactor=1000
}
% @abbr for "Comput. J." and the like.
@@ -2651,6 +2789,7 @@ end
\ifx\temp\empty \else
\space ({\unsepspaces \ignorespaces \temp \unskip})%
\fi
+ \null % reset \spacefactor=1000
}
% @asis just yields its argument. Used with @table, for example.
@@ -2715,20 +2854,51 @@ end
}
}
+% ctrl is no longer a Texinfo command, but leave this definition for fun.
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
+% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
+% except specified as a normal braced arg, so no newlines to worry about.
+%
+\def\outfmtnametex{tex}
+%
+\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
+\long\def\doinlinefmt#1,#2,\finish{%
+ \def\inlinefmtname{#1}%
+ \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
+}
+% For raw, must switch into @tex before parsing the argument, to avoid
+% setting catcodes prematurely. Doing it this way means that, for
+% example, @inlineraw{html, foo{bar} gets a parse error instead of being
+% ignored. But this isn't important because if people want a literal
+% *right* brace they would have to use a command anyway, so they may as
+% well use a command to get a left brace too. We could re-use the
+% delimiter character idea from \verb, but it seems like overkill.
+%
+\long\def\inlineraw{\tex \doinlineraw}
+\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
+\def\doinlinerawtwo#1,#2,\finish{%
+ \def\inlinerawname{#1}%
+ \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
+ \endgroup % close group opened by \tex.
+}
+
\message{glyphs,}
% and logos.
-% @@ prints an @.
+% @@ prints an @, as does @atchar{}.
\def\@{\char64 }
+\let\atchar=\@
-% Used to generate quoted braces. Unless we're in typewriter, use
-% \ecfont because the CM text fonts do not have braces, and we don't
-% want to switch into math.
+% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
+% Unless we're in typewriter, use \ecfont because the CM text fonts do
+% not have braces, and we don't want to switch into math.
\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
+\let\{=\mylbrace \let\lbracechar=\{
+\let\}=\myrbrace \let\rbracechar=\}
\begingroup
% Definitions to produce \{ and \} commands for indices,
% and @{ and @} for the aux/toc files.
@@ -2856,7 +3026,7 @@ end
{\tentt \global\dimen0 = 3em}% Width of the box.
\dimen2 = .55pt % Thickness of rules
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
%
\setbox\errorbox=\hbox to \dimen0{\hfil
\hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
@@ -2977,12 +3147,17 @@ end
% hopefully nobody will notice/care.
\edef\ecsize{\csname\curfontsize ecsize\endcsname}%
\edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
- \ifx\curfontstyle\bfstylename
- % bold:
- \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+ \ifmonospace
+ % typewriter:
+ \font\thisecfont = ectt\ecsize \space at \nominalsize
\else
- % regular:
- \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+ \ifx\curfontstyle\bfstylename
+ % bold:
+ \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+ \else
+ % regular:
+ \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+ \fi
\fi
\thisecfont
}
@@ -3005,7 +3180,7 @@ end
% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
% so we'll define it if necessary.
%
-\ifx\Orb\undefined
+\ifx\Orb\thisisundefined
\def\Orb{\mathhexbox20D}
\fi
@@ -3033,8 +3208,9 @@ end
\newif\ifsetshortcontentsaftertitlepage
\let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
+\parseargdef\shorttitlepage{%
+ \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+ \endgroup\page\hbox{}\page}
\envdef\titlepage{%
% Open one extra group, as we want to close it in the middle of \Etitlepage.
@@ -3094,14 +3270,28 @@ end
\finishedtitlepagetrue
}
-%%% Macros to be used within @titlepage:
+% Settings used for typesetting titles: no hyphenation, no indentation,
+% don't worry much about spacing, ragged right. This should be used
+% inside a \vbox, and fonts need to be set appropriately first. Because
+% it is always used for titles, nothing else, we call \rmisbold. \par
+% should be specified before the end of the \vbox, since a vbox is a group.
+%
+\def\raggedtitlesettings{%
+ \rmisbold
+ \hyphenpenalty=10000
+ \parindent=0pt
+ \tolerance=5000
+ \ptexraggedright
+}
+
+% Macros to be used within @titlepage:
\let\subtitlerm=\tenrm
\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
\parseargdef\title{%
\checkenv\titlepage
- \leftline{\titlefonts\rmisbold #1}
+ \vbox{\titlefonts \raggedtitlesettings #1\par}%
% print a rule at the page bottom also.
\finishedtitlepagefalse
\vskip4pt \hrule height 4pt width \hsize \vskip4pt
@@ -3127,7 +3317,7 @@ end
}
-%%% Set up page headings and footings.
+% Set up page headings and footings.
\let\thispage=\folio
@@ -3279,7 +3469,7 @@ end
% This produces Day Month Year style of output.
% Only define if not already defined, in case a txi-??.tex file has set
% up a different format (e.g., txi-cs.tex does this).
-\ifx\today\undefined
+\ifx\today\thisisundefined
\def\today{%
\number\day\space
\ifcase\month
@@ -3826,18 +4016,18 @@ end
\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
\global\advance\multitablelinespace by-\ht0
\fi
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%% If so, set to same dimension as multitablelinespace.
+% Test to see if parskip is larger than space between lines of
+% table. If not, do nothing.
+% If so, set to same dimension as multitablelinespace.
\ifdim\multitableparskip>\multitablelinespace
\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+ % than skip between lines in the table.
\fi%
\ifdim\multitableparskip=0pt
\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+ % than skip between lines in the table.
\fi}
@@ -3998,7 +4188,7 @@ end
% ..., but we might end up with active ones in the argument if
% we're called from @code, as @code{@value{foo-bar_}}, though.
% So \let them to their normal equivalents.
- \let-\realdash \let_\normalunderscore
+ \let-\normaldash \let_\normalunderscore
}
}
@@ -4038,7 +4228,7 @@ end
}
\def\ifsetfail{\doignore{ifset}}
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% @ifclear VAR ... @end executes the `...' iff VAR has never been
% defined with @set, or has been undefined with @clear.
%
% The `\else' inside the `\doifset' parameter is a trick to reuse the
@@ -4049,6 +4239,35 @@ end
\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
\def\ifclearfail{\doignore{ifclear}}
+% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written
+% without the @) is in fact defined. We can only feasibly check at the
+% TeX level, so something like `mathcode' is going to considered
+% defined even though it is not a Texinfo command.
+%
+\makecond{ifcommanddefined}
+\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
+%
+\def\doifcmddefined#1#2{{%
+ \makevalueexpandable
+ \let\next=\empty
+ \expandafter\ifx\csname #2\endcsname\relax
+ #1% If not defined, \let\next as above.
+ \fi
+ \expandafter
+ }\next
+}
+\def\ifcmddefinedfail{\doignore{ifcommanddefined}}
+
+% @ifcommandnotdefined CMD ... handled similar to @ifclear above.
+\makecond{ifcommandnotdefined}
+\def\ifcommandnotdefined{%
+ \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}}
+\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}}
+
+% Set the `txicommandconditionals' variable, so documents have a way to
+% test if the @ifcommand...defined conditionals are available.
+\set txicommandconditionals
+
% @dircategory CATEGORY -- specify a category of the dir file
% which this file should belong to. Ignore this in TeX.
\let\dircategory=\comment
@@ -4285,6 +4504,7 @@ end
\definedummyword\guillemetright
\definedummyword\guilsinglleft
\definedummyword\guilsinglright
+ \definedummyword\lbracechar
\definedummyword\leq
\definedummyword\minus
\definedummyword\ogonek
@@ -4297,6 +4517,7 @@ end
\definedummyword\quoteleft
\definedummyword\quoteright
\definedummyword\quotesinglbase
+ \definedummyword\rbracechar
\definedummyword\result
\definedummyword\textdegree
%
@@ -4348,7 +4569,9 @@ end
\definedummyword\t
%
% Commands that take arguments.
+ \definedummyword\abbr
\definedummyword\acronym
+ \definedummyword\anchor
\definedummyword\cite
\definedummyword\code
\definedummyword\command
@@ -4358,7 +4581,9 @@ end
\definedummyword\emph
\definedummyword\env
\definedummyword\file
+ \definedummyword\image
\definedummyword\indicateurl
+ \definedummyword\inforef
\definedummyword\kbd
\definedummyword\key
\definedummyword\math
@@ -4405,7 +4630,10 @@ end
% content at all. So for index sorting, we map @{ and @} to strings
% starting with |, since that ASCII character is between ASCII { and }.
\def\{{|a}%
+ \def\lbracechar{|a}%
+ %
\def\}{|b}%
+ \def\rbracechar{|b}%
%
% Non-English letters.
\def\AA{AA}%
@@ -4581,10 +4809,9 @@ end
%
% ..., ready, GO:
%
-\def\safewhatsit#1{%
-\ifhmode
+\def\safewhatsit#1{\ifhmode
#1%
-\else
+ \else
% \lastskip and \lastpenalty cannot both be nonzero simultaneously.
\whatsitskip = \lastskip
\edef\lastskipmacro{\the\lastskip}%
@@ -4608,7 +4835,6 @@ end
% to re-insert the same penalty (values >10000 are used for various
% signals); since we just inserted a non-discardable item, any
% following glue (such as a \parskip) would be a breakpoint. For example:
- %
% @deffn deffn-whatever
% @vindex index-whatever
% Description.
@@ -4621,8 +4847,7 @@ end
% (the whatsit from the \write), so we must insert a \nobreak.
\nobreak\vskip\whatsitskip
\fi
-\fi
-}
+\fi}
% The index entry written in the file actually looks like
% \entry {sortstring}{page}{topic}
@@ -5242,7 +5467,8 @@ end
\global\let\subsubsection = \appendixsubsubsec
}
-\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+% normally unnmhead0 calls unnumberedzzz:
+\outer\parseargdef\unnumbered{\unnmhead0{#1}}
\def\unnumberedzzz#1{%
\global\secno=0 \global\subsecno=0 \global\subsubsecno=0
\global\advance\unnumberedno by 1
@@ -5286,40 +5512,47 @@ end
\let\top\unnumbered
% Sections.
+%
\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
\def\seczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
}
-\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+% normally calls appendixsectionzzz:
+\outer\parseargdef\appendixsection{\apphead1{#1}}
\def\appendixsectionzzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
}
\let\appendixsec\appendixsection
-\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+% normally calls unnumberedseczzz:
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
\def\unnumberedseczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
}
% Subsections.
-\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+%
+% normally calls numberedsubseczzz:
+\outer\parseargdef\numberedsubsec{\numhead2{#1}}
\def\numberedsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
}
-\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+% normally calls appendixsubseczzz:
+\outer\parseargdef\appendixsubsec{\apphead2{#1}}
\def\appendixsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Yappendix}%
{\appendixletter.\the\secno.\the\subsecno}%
}
-\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+% normally calls unnumberedsubseczzz:
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
\def\unnumberedsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Ynothing}%
@@ -5327,21 +5560,25 @@ end
}
% Subsubsections.
-\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+%
+% normally numberedsubsubseczzz:
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
\def\numberedsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Ynumbered}%
{\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
}
-\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+% normally appendixsubsubseczzz:
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
\def\appendixsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Yappendix}%
{\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
}
-\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+% normally unnumberedsubsubseczzz:
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
\def\unnumberedsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Ynothing}%
@@ -5357,14 +5594,6 @@ end
% Define @majorheading, @heading and @subheading
-% NOTE on use of \vbox for chapter headings, section headings, and such:
-% 1) We use \vbox rather than the earlier \line to permit
-% overlong headings to fold.
-% 2) \hyphenpenalty is set to 10000 because hyphenation in a
-% heading is obnoxious; this forbids it.
-% 3) Likewise, headings look best if no \parindent is used, and
-% if justification is not attempted. Hence \raggedright.
-
\def\majorheading{%
{\advance\chapheadingskip by 10pt \chapbreak }%
\parsearg\chapheadingzzz
@@ -5372,10 +5601,8 @@ end
\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
\def\chapheadingzzz#1{%
- {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\ptexraggedright
- \rmisbold #1\hfill}}%
- \bigskip \par\penalty 200\relax
+ \vbox{\chapfonts \raggedtitlesettings #1\par}%
+ \nobreak\bigskip \nobreak
\suppressfirstparagraphindent
}
@@ -5391,14 +5618,13 @@ end
% (including whitespace, linebreaking, etc. around it),
% given all the information in convenient, parsed form.
-%%% Args are the skip and penalty (usually negative)
+% Args are the skip and penalty (usually negative)
\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-%%% Define plain chapter starts, and page on/off switching for it
% Parameter controlling skip before chapter headings (if needed)
-
\newskip\chapheadingskip
+% Define plain chapter starts, and page on/off switching for it.
\def\chapbreak{\dobreak \chapheadingskip {-4000}}
\def\chappager{\par\vfill\supereject}
% Because \domark is called before \chapoddpage, the filler page will
@@ -5535,8 +5761,7 @@ end
%
% Typeset the actual heading.
\nobreak % Avoid page breaks at the interline glue.
- \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
- \hangindent=\wd0 \centerparametersmaybe
+ \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe
\unhbox0 #1\par}%
}%
\nobreak\bigskip % no page break after a chapter title
@@ -5558,18 +5783,18 @@ end
\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
%
\def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\ptexraggedright
- \rmisbold #1\hfill}}\bigskip \par\nobreak
+ \chapoddpage
+ \vbox{\chapfonts \raggedtitlesettings #1\par}%
+ \nobreak\bigskip\nobreak
}
\def\chfopen #1#2{\chapoddpage {\chapfonts
\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
\par\penalty 5000 %
}
\def\centerchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt
- \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
+ \chapoddpage
+ \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
+ \nobreak\bigskip \nobreak
}
\def\CHAPFopen{%
\global\let\chapmacro=\chfopen
@@ -5601,6 +5826,8 @@ end
%
\def\sectionheading#1#2#3#4{%
{%
+ \checkenv{}% should not be in an environment.
+ %
% Switch to the right set of fonts.
\csname #2fonts\endcsname \rmisbold
%
@@ -5712,15 +5939,15 @@ end
%
% We'll almost certainly start a paragraph next, so don't let that
% glue accumulate. (Not a breakpoint because it's preceded by a
- % discardable item.)
+ % discardable item.) However, when a paragraph is not started next
+ % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
+ % or the negative glue will cause weirdly wrong output, typically
+ % obscuring the section heading with something else.
\vskip-\parskip
%
- % This is purely so the last item on the list is a known \penalty >
- % 10000. This is so \startdefun can avoid allowing breakpoints after
- % section headings. Otherwise, it would insert a valid breakpoint between:
- %
- % @section sec-whatever
- % @deffn def-whatever
+ % This is so the last item on the main vertical list is a known
+ % \penalty > 10000, so \startdefun, etc., can recognize the situation
+ % and do the needful.
\penalty 10001
}
@@ -6136,6 +6363,12 @@ end
\normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
% Flag to tell @lisp, etc., not to narrow margin.
\let\nonarrowing = t%
+ %
+ % If this cartouche directly follows a sectioning command, we need the
+ % \parskip glue (backspaced over by default) or the cartouche can
+ % collide with the section heading.
+ \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
+ %
\vbox\bgroup
\baselineskip=0pt\parskip=0pt\lineskip=0pt
\carttop
@@ -6149,7 +6382,7 @@ end
\lineskip=\normlskip
\parskip=\normpskip
\vskip -\parskip
- \comment % For explanation, see the end of \def\group.
+ \comment % For explanation, see the end of def\group.
}
\def\Ecartouche{%
\ifhmode\par\fi
@@ -6327,16 +6560,9 @@ end
\makedispenvdef{quotation}{\quotationstart}
%
\def\quotationstart{%
- {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
- \parindent=0pt
- %
- % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+ \indentedblockstart % same as \indentedblock, but increase right margin too.
\ifx\nonarrowing\relax
- \advance\leftskip by \lispnarrowing
\advance\rightskip by \lispnarrowing
- \exdentamount = \lispnarrowing
- \else
- \let\nonarrowing = \relax
\fi
\parsearg\quotationlabel
}
@@ -6346,7 +6572,7 @@ end
%
\def\Equotation{%
\par
- \ifx\quotationauthor\undefined\else
+ \ifx\quotationauthor\thisisundefined\else
% indent a bit.
\leftline{\kern 2\leftskip \sl ---\quotationauthor}%
\fi
@@ -6362,6 +6588,32 @@ end
\fi
}
+% @indentedblock is like @quotation, but indents only on the left and
+% has no optional argument.
+%
+\makedispenvdef{indentedblock}{\indentedblockstart}
+%
+\def\indentedblockstart{%
+ {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+ \parindent=0pt
+ %
+ % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+ \ifx\nonarrowing\relax
+ \advance\leftskip by \lispnarrowing
+ \exdentamount = \lispnarrowing
+ \else
+ \let\nonarrowing = \relax
+ \fi
+}
+
+% Keep a nonzero parskip for the environment, since we're doing normal filling.
+%
+\def\Eindentedblock{%
+ \par
+ {\parskip=0pt \afterenvbreak}%
+}
+\def\Esmallindentedblock{\Eindentedblock}
+
% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
% If we want to allow any <char> as delimiter,
@@ -6505,6 +6757,7 @@ end
\makevalueexpandable
\setupverbatim
\indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
\input #1
\afterenvbreak
}%
@@ -6554,7 +6807,7 @@ end
% commands also insert a nobreak penalty, and we don't want to allow
% a break between a section heading and a defun.
%
- % As a minor refinement, we avoid "club" headers by signalling
+ % As a further refinement, we avoid "club" headers by signalling
% with penalty of 10003 after the very first @deffn in the
% sequence (see above), and penalty of 10002 after any following
% @def command.
@@ -6621,13 +6874,36 @@ end
\def\domakedefun#1#2#3{%
\envdef#1{%
\startdefun
+ \doingtypefnfalse % distinguish typed functions from all else
\parseargusing\activeparens{\printdefunline#3}%
}%
\def#2{\dodefunx#1}%
\def#3%
}
-%%% Untyped functions:
+\newif\ifdoingtypefn % doing typed function?
+\newif\ifrettypeownline % typeset return type on its own line?
+
+% @deftypefnnewline on|off says whether the return type of typed functions
+% are printed on their own line. This affects @deftypefn, @deftypefun,
+% @deftypeop, and @deftypemethod.
+%
+\parseargdef\deftypefnnewline{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxideftypefnnl\endcsname
+ = \empty
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxideftypefnnl\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @txideftypefnnl value `\temp',
+ must be on|off}%
+ \fi\fi
+}
+
+% Untyped functions:
% @deffn category name args
\makedefun{deffn}{\deffngeneral{}}
@@ -6646,7 +6922,7 @@ end
\defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
}
-%%% Typed functions:
+% Typed functions:
% @deftypefn category type name args
\makedefun{deftypefn}{\deftypefngeneral{}}
@@ -6661,10 +6937,11 @@ end
%
\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
\dosubind{fn}{\code{#4}}{#1}%
+ \doingtypefntrue
\defname{#2}{#3}{#4}\defunargs{#5\unskip}%
}
-%%% Typed variables:
+% Typed variables:
% @deftypevr category type var args
\makedefun{deftypevr}{\deftypecvgeneral{}}
@@ -6682,7 +6959,7 @@ end
\defname{#2}{#3}{#4}\defunargs{#5\unskip}%
}
-%%% Untyped variables:
+% Untyped variables:
% @defvr category var args
\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
@@ -6693,7 +6970,8 @@ end
% \defcvof {category of}class var args
\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
-%%% Type:
+% Types:
+
% @deftp category name args
\makedefun{deftp}#1 #2 #3\endheader{%
\doind{tp}{\code{#2}}%
@@ -6721,25 +6999,49 @@ end
% We are followed by (but not passed) the arguments, if any.
%
\def\defname#1#2#3{%
+ \par
% Get the values of \leftskip and \rightskip as they were outside the @def...
\advance\leftskip by -\defbodyindent
%
- % How we'll format the type name. Putting it in brackets helps
+ % Determine if we are typesetting the return type of a typed function
+ % on a line by itself.
+ \rettypeownlinefalse
+ \ifdoingtypefn % doing a typed function specifically?
+ % then check user option for putting return type on its own line:
+ \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
+ \rettypeownlinetrue
+ \fi
+ \fi
+ %
+ % How we'll format the category name. Putting it in brackets helps
% distinguish it from the body text that may end up on the next line
% just below it.
\def\temp{#1}%
\setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
%
- % Figure out line sizes for the paragraph shape.
+ % Figure out line sizes for the paragraph shape. We'll always have at
+ % least two.
+ \tempnum = 2
+ %
% The first line needs space for \box0; but if \rightskip is nonzero,
% we need only space for the part of \box0 which exceeds it:
\dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip
+ %
+ % If doing a return type on its own line, we'll have another line.
+ \ifrettypeownline
+ \advance\tempnum by 1
+ \def\maybeshapeline{0in \hsize}%
+ \else
+ \def\maybeshapeline{}%
+ \fi
+ %
% The continuations:
\dimen2=\hsize \advance\dimen2 by -\defargsindent
- % (plain.tex says that \dimen1 should be used only as global.)
- \parshape 2 0in \dimen0 \defargsindent \dimen2
%
- % Put the type name to the right margin.
+ % The final paragraph shape:
+ \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2
+ %
+ % Put the category name at the right margin.
\noindent
\hbox to 0pt{%
\hfil\box0 \kern-\hsize
@@ -6761,8 +7063,16 @@ end
% . this still does not fix the ?` and !` ligatures, but so far no
% one has made identifiers using them :).
\df \tt
- \def\temp{#2}% return value type
- \ifx\temp\empty\else \tclose{\temp} \fi
+ \def\temp{#2}% text of the return type
+ \ifx\temp\empty\else
+ \tclose{\temp}% typeset the return type
+ \ifrettypeownline
+ % put return type on its own line; prohibit line break following:
+ \hfil\vadjust{\nobreak}\break
+ \else
+ \space % type on same line, so just followed by a space
+ \fi
+ \fi % no return type
#3% output function name
}%
{\rm\enskip}% hskip 0.5 em of \tenrm
@@ -6782,7 +7092,10 @@ end
\df \sl \hyphenchar\font=0
%
% On the other hand, if an argument has two dashes (for instance), we
- % want a way to get ttsl. Let's try @var for that.
+ % want a way to get ttsl. We used to recommend @var for that, so
+ % leave the code in, but it's strange for @var to lead to typewriter.
+ % Nowadays we recommend @code, since the difference between a ttsl hyphen
+ % and a tt hyphen is pretty tiny. @code also disables ?` !`.
\def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
#1%
\sl\hyphenchar\font=45
@@ -6880,7 +7193,7 @@ end
% To do this right we need a feature of e-TeX, \scantokens,
% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
+\ifx\eTeXversion\thisisundefined
\newwrite\macscribble
\def\scantokens#1{%
\toks0={#1}%
@@ -6905,12 +7218,14 @@ end
% ... and for \example:
\spaceisspace
%
- % The \empty here causes a following catcode 5 newline to be eaten
- % as part of reading whitespace after a control sequence. It does
- % not eat a catcode 13 newline. There's no good way to handle the
- % two cases. See the Macro Details node in the manual for the
- % workaround we currently have to recommend for macros and
+ % The \empty here causes a following catcode 5 newline to be eaten as
+ % part of reading whitespace after a control sequence. It does not
+ % eat a catcode 13 newline. There's no good way to handle the two
+ % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
+ % would then have different behavior). See the Macro Details node in
+ % the manual for the workaround we recommend for macros and
% line-oriented commands.
+ %
\scantokens{#1\empty}%
\endgroup}
@@ -7045,9 +7360,15 @@ end
\def\macroxxx#1{%
\getargs{#1}% now \macname is the macname and \argl the arglist
\ifx\argl\empty % no arguments
- \paramno=0
+ \paramno=0\relax
\else
\expandafter\parsemargdef \argl;%
+ \if\paramno>256\relax
+ \ifx\eTeXversion\thisisundefined
+ \errhelp = \EMsimple
+ \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
+ \fi
+ \fi
\fi
\if1\csname ismacro.\the\macname\endcsname
\message{Warning: redefining \the\macname}%
@@ -7097,9 +7418,17 @@ end
\def\getmacname#1 #2\relax{\macname={#1}}
\def\getmacargs#1{\def\argl{#1}}
+% For macro processing make @ a letter so that we can make Texinfo private macro names.
+\edef\texiatcatcode{\the\catcode`\@}
+\catcode `@=11\relax
+
% Parse the optional {params} list. Set up \paramno and \paramlist
-% so \defmacro knows what to do. Define \macarg.blah for each blah
-% in the params list to be ##N where N is the position in that list.
+% so \defmacro knows what to do. Define \macarg.BLAH for each BLAH
+% in the params list to some hook where the argument si to be expanded. If
+% there are less than 10 arguments that hook is to be replaced by ##N where N
+% is the position in that list, that is to say the macro arguments are to be
+% defined `a la TeX in the macro body.
+%
% That gets used by \mbodybackslash (above).
%
% We need to get `macro parameter char #' into several definitions.
@@ -7109,12 +7438,33 @@ end
%
% The same technique is used to protect \eatspaces till just before
% the macro is used.
-
+%
+% If there are 10 or more arguments, a different technique is used, where the
+% hook remains in the body, and when macro is to be expanded the body is
+% processed again to replace the arguments.
+%
+% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
+% argument N value and then \edef the body (nothing else will expand because of
+% the catcode regime underwhich the body was input).
+%
+% If you compile with TeX (not eTeX), and you have macros with 10 or more
+% arguments, you need that no macro has more than 256 arguments, otherwise an
+% error is produced.
\def\parsemargdef#1;{%
\paramno=0\def\paramlist{}%
\let\hash\relax
\let\xeatspaces\relax
\parsemargdefxxx#1,;,%
+ % In case that there are 10 or more arguments we parse again the arguments
+ % list to set new definitions for the \macarg.BLAH macros corresponding to
+ % each BLAH argument. It was anyhow needed to parse already once this list
+ % in order to count the arguments, and as macros with at most 9 arguments
+ % are by far more frequent than macro with 10 or more arguments, defining
+ % twice the \macarg.BLAH macros does not cost too much processing power.
+ \ifnum\paramno<10\relax\else
+ \paramno0\relax
+ \parsemmanyargdef@@#1,;,% 10 or more arguments
+ \fi
}
\def\parsemargdefxxx#1,{%
\if#1;\let\next=\relax
@@ -7125,16 +7475,205 @@ end
\edef\paramlist{\paramlist\hash\the\paramno,}%
\fi\next}
+\def\parsemmanyargdef@@#1,{%
+ \if#1;\let\next=\relax
+ \else
+ \let\next=\parsemmanyargdef@@
+ \edef\tempb{\eatspaces{#1}}%
+ \expandafter\def\expandafter\tempa
+ \expandafter{\csname macarg.\tempb\endcsname}%
+ % Note that we need some extra \noexpand\noexpand, this is because we
+ % don't want \the to be expanded in the \parsermacbody as it uses an
+ % \xdef .
+ \expandafter\edef\tempa
+ {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
+ \advance\paramno by 1\relax
+ \fi\next}
+
% These two commands read recursive and nonrecursive macro bodies.
% (They're different since rec and nonrec macros end differently.)
%
+
+\catcode `\@\texiatcatcode
\long\def\parsemacbody#1@end macro%
{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
\long\def\parsermacbody#1@end rmacro%
{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\catcode `\@=11\relax
+
+\let\endargs@\relax
+\let\nil@\relax
+\def\nilm@{\nil@}%
+\long\def\nillm@{\nil@}%
+
+% This macro is expanded during the Texinfo macro expansion, not during its
+% definition. It gets all the arguments values and assigns them to macros
+% macarg.ARGNAME
+%
+% #1 is the macro name
+% #2 is the list of argument names
+% #3 is the list of argument values
+\def\getargvals@#1#2#3{%
+ \def\macargdeflist@{}%
+ \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
+ \def\paramlist{#2,\nil@}%
+ \def\macroname{#1}%
+ \begingroup
+ \macroargctxt
+ \def\argvaluelist{#3,\nil@}%
+ \def\@tempa{#3}%
+ \ifx\@tempa\empty
+ \setemptyargvalues@
+ \else
+ \getargvals@@
+ \fi
+}
+
+%
+\def\getargvals@@{%
+ \ifx\paramlist\nilm@
+ % Some sanity check needed here that \argvaluelist is also empty.
+ \ifx\argvaluelist\nillm@
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Too many arguments in macro `\macroname'!}%
+ \fi
+ \let\next\macargexpandinbody@
+ \else
+ \ifx\argvaluelist\nillm@
+ % No more arguments values passed to macro. Set remaining named-arg
+ % macros to empty.
+ \let\next\setemptyargvalues@
+ \else
+ % pop current arg name into \@tempb
+ \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
+ \expandafter\@tempa\expandafter{\paramlist}%
+ % pop current argument value into \@tempc
+ \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
+ \expandafter\@tempa\expandafter{\argvaluelist}%
+ % Here \@tempb is the current arg name and \@tempc is the current arg value.
+ % First place the new argument macro definition into \@tempd
+ \expandafter\macname\expandafter{\@tempc}%
+ \expandafter\let\csname macarg.\@tempb\endcsname\relax
+ \expandafter\def\expandafter\@tempe\expandafter{%
+ \csname macarg.\@tempb\endcsname}%
+ \edef\@tempd{\long\def\@tempe{\the\macname}}%
+ \push@\@tempd\macargdeflist@
+ \let\next\getargvals@@
+ \fi
+ \fi
+ \next
+}
+
+\def\push@#1#2{%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#2%
+ \expandafter\expandafter\expandafter{%
+ \expandafter#1#2}%
+}
+
+% Replace arguments by their values in the macro body, and place the result
+% in macro \@tempa
+\def\macvalstoargs@{%
+ % To do this we use the property that token registers that are \the'ed
+ % within an \edef expand only once. So we are going to place all argument
+ % values into respective token registers.
+ %
+ % First we save the token context, and initialize argument numbering.
+ \begingroup
+ \paramno0\relax
+ % Then, for each argument number #N, we place the corresponding argument
+ % value into a new token list register \toks#N
+ \expandafter\putargsintokens@\saveparamlist@,;,%
+ % Then, we expand the body so that argument are replaced by their
+ % values. The trick for values not to be expanded themselves is that they
+ % are within tokens and that tokens expand only once in an \edef .
+ \edef\@tempc{\csname mac.\macroname .body\endcsname}%
+ % Now we restore the token stack pointer to free the token list registers
+ % which we have used, but we make sure that expanded body is saved after
+ % group.
+ \expandafter
+ \endgroup
+ \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
+ }
+
+\def\macargexpandinbody@{%
+ %% Define the named-macro outside of this group and then close this group.
+ \expandafter
+ \endgroup
+ \macargdeflist@
+ % First the replace in body the macro arguments by their values, the result
+ % is in \@tempa .
+ \macvalstoargs@
+ % Then we point at the \norecurse or \gobble (for recursive) macro value
+ % with \@tempb .
+ \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
+ % Depending on whether it is recursive or not, we need some tailing
+ % \egroup .
+ \ifx\@tempb\gobble
+ \let\@tempc\relax
+ \else
+ \let\@tempc\egroup
+ \fi
+ % And now we do the real job:
+ \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
+ \@tempd
+}
+
+\def\putargsintokens@#1,{%
+ \if#1;\let\next\relax
+ \else
+ \let\next\putargsintokens@
+ % First we allocate the new token list register, and give it a temporary
+ % alias \@tempb .
+ \toksdef\@tempb\the\paramno
+ % Then we place the argument value into that token list register.
+ \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
+ \expandafter\@tempb\expandafter{\@tempa}%
+ \advance\paramno by 1\relax
+ \fi
+ \next
+}
+
+% Save the token stack pointer into macro #1
+\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
+% Restore the token stack pointer from number in macro #1
+\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
+% newtoks that can be used non \outer .
+\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
+
+% Tailing missing arguments are set to empty
+\def\setemptyargvalues@{%
+ \ifx\paramlist\nilm@
+ \let\next\macargexpandinbody@
+ \else
+ \expandafter\setemptyargvaluesparser@\paramlist\endargs@
+ \let\next\setemptyargvalues@
+ \fi
+ \next
+}
+
+\def\setemptyargvaluesparser@#1,#2\endargs@{%
+ \expandafter\def\expandafter\@tempa\expandafter{%
+ \expandafter\def\csname macarg.#1\endcsname{}}%
+ \push@\@tempa\macargdeflist@
+ \def\paramlist{#2}%
+}
+
+% #1 is the element target macro
+% #2 is the list macro
+% #3,#4\endargs@ is the list value
+\def\pop@#1#2#3,#4\endargs@{%
+ \def#1{#3}%
+ \def#2{#4}%
+}
+\long\def\longpop@#1#2#3,#4\endargs@{%
+ \long\def#1{#3}%
+ \long\def#2{#4}%
+}
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, and many arguments.
+% This defines a Texinfo @macro. There are eight cases: recursive and
+% nonrecursive macros of zero, one, up to nine, and many arguments.
% Much magic with \expandafter here.
% \xdef is used so that macro definitions will survive the file
% they're defined in; @include reads the file inside a group.
@@ -7153,17 +7692,25 @@ end
\expandafter\noexpand\csname\the\macname xxx\endcsname}%
\expandafter\xdef\csname\the\macname xxx\endcsname##1{%
\egroup\noexpand\scanmacro{\temp}}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \else
+ \ifnum\paramno<10\relax % at most 9
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \else % 10 or more
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
+ \fi
\fi
\else
\ifcase\paramno
@@ -7180,23 +7727,33 @@ end
\egroup
\noexpand\norecurse{\the\macname}%
\noexpand\scanmacro{\temp}\egroup}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \expandafter\noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
+ \else % at most 9
+ \ifnum\paramno<10\relax
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \expandafter\noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{%
+ \egroup
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \else % 10 or more:
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
+ \fi
\fi
\fi}
+\catcode `\@\texiatcatcode\relax
+
\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
% \braceorline decides whether the next nonwhitespace character is a
@@ -7235,7 +7792,8 @@ end
% @inforef is relatively simple.
\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+\def\inforefzzz #1,#2,#3,#4**{%
+ \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
node \samp{\ignorespaces#1{}}}
% @node's only job in TeX is to define \lastnode, which is used in
@@ -7296,11 +7854,32 @@ end
\toks0 = \expandafter{\lastsection}%
\immediate \writexrdef{title}{\the\toks0 }%
\immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
- \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
+ \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
}%
\fi
}
+% @xrefautosectiontitle on|off says whether @section(ing) names are used
+% automatically in xrefs, if the third arg is not explicitly specified.
+% This was provided as a "secret" @set xref-automatic-section-title
+% variable, now it's official.
+%
+\parseargdef\xrefautomaticsectiontitle{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETxref-automatic-section-title\endcsname
+ = \empty
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETxref-automatic-section-title\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
+ must be on|off}%
+ \fi\fi
+}
+
+%
% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
% the node name, #2 the name of the Info cross-reference, #3 the printed
% node name, #4 the name of the Info file, #5 the name of the printed
@@ -7309,26 +7888,41 @@ end
\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
\def\ref#1{\xrefX[#1,,,,,,,]}
+%
+\newbox\toprefbox
+\newbox\printedrefnamebox
+\newbox\infofilenamebox
+\newbox\printedmanualbox
+%
\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
\unsepspaces
- \def\printedmanual{\ignorespaces #5}%
+ %
+ % Get args without leading/trailing spaces.
\def\printedrefname{\ignorespaces #3}%
- \setbox1=\hbox{\printedmanual\unskip}%
- \setbox0=\hbox{\printedrefname\unskip}%
- \ifdim \wd0 = 0pt
+ \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
+ %
+ \def\infofilename{\ignorespaces #4}%
+ \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
+ %
+ \def\printedmanual{\ignorespaces #5}%
+ \setbox\printedmanualbox = \hbox{\printedmanual\unskip}%
+ %
+ % If the printed reference name (arg #3) was not explicitly given in
+ % the @xref, figure out what we want to use.
+ \ifdim \wd\printedrefnamebox = 0pt
% No printed node name was explicitly given.
- \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
- % Use the node name inside the square brackets.
+ \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
+ % Not auto section-title: use node name inside the square brackets.
\def\printedrefname{\ignorespaces #1}%
\else
- % Use the actual chapter/section title appear inside
- % the square brackets. Use the real section title if we have it.
- \ifdim \wd1 > 0pt
- % It is in another manual, so we don't have it.
+ % Auto section-title: use chapter/section title inside
+ % the square brackets if we have it.
+ \ifdim \wd\printedmanualbox > 0pt
+ % It is in another manual, so we don't have it; use node name.
\def\printedrefname{\ignorespaces #1}%
\else
\ifhavexrefs
- % We know the real title if we have the xref values.
+ % We (should) know the real title if we have the xref values.
\def\printedrefname{\refx{#1-title}{}}%
\else
% Otherwise just copy the Info node name.
@@ -7342,13 +7936,20 @@ end
\ifpdf
{\indexnofonts
\turnoffactive
+ \makevalueexpandable
% This expands tokens, so do it after making catcode changes, so _
- % etc. don't get their TeX definitions.
+ % etc. don't get their TeX definitions. This ignores all spaces in
+ % #4, including (wrongly) those in the middle of the filename.
\getfilename{#4}%
%
- % See comments at \activebackslashdouble.
- {\activebackslashdouble \xdef\pdfxrefdest{#1}%
- \backslashparens\pdfxrefdest}%
+ % This (wrongly) does not take account of leading or trailing
+ % spaces in #1, which should be ignored.
+ \edef\pdfxrefdest{#1}%
+ \ifx\pdfxrefdest\empty
+ \def\pdfxrefdest{Top}% no empty targets
+ \else
+ \txiescapepdf\pdfxrefdest % escape PDF special chars
+ \fi
%
\leavevmode
\startlink attr{/Border [0 0 0]}%
@@ -7375,29 +7976,42 @@ end
\iffloat\Xthisreftitle
% If the user specified the print name (third arg) to the ref,
% print it instead of our usual "Figure 1.2".
- \ifdim\wd0 = 0pt
+ \ifdim\wd\printedrefnamebox = 0pt
\refx{#1-snt}{}%
\else
\printedrefname
\fi
%
- % if the user also gave the printed manual name (fifth arg), append
+ % If the user also gave the printed manual name (fifth arg), append
% "in MANUALNAME".
- \ifdim \wd1 > 0pt
+ \ifdim \wd\printedmanualbox > 0pt
\space \putwordin{} \cite{\printedmanual}%
\fi
\else
% node/anchor (non-float) references.
+ %
+ % If we use \unhbox to print the node names, TeX does not insert
+ % empty discretionaries after hyphens, which means that it will not
+ % find a line break at a hyphen in a node names. Since some manuals
+ % are best written with fairly long node names, containing hyphens,
+ % this is a loss. Therefore, we give the text of the node name
+ % again, so it is as if TeX is seeing it for the first time.
+ %
+ \ifdim \wd\printedmanualbox > 0pt
+ % Cross-manual reference with a printed manual name.
+ %
+ \crossmanualxref{\cite{\printedmanual\unskip}}%
+ %
+ \else\ifdim \wd\infofilenamebox > 0pt
+ % Cross-manual reference with only an info filename (arg 4), no
+ % printed manual name (arg 5). This is essentially the same as
+ % the case above; we output the filename, since we have nothing else.
+ %
+ \crossmanualxref{\code{\infofilename\unskip}}%
%
- % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
- % insert empty discretionaries after hyphens, which means that it will
- % not find a line break at a hyphen in a node names. Since some manuals
- % are best written with fairly long node names, containing hyphens, this
- % is a loss. Therefore, we give the text of the node name again, so it
- % is as if TeX is seeing it for the first time.
- \ifdim \wd1 > 0pt
- \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
\else
+ % Reference within this manual.
+ %
% _ (for example) has to be the character _ for the purposes of the
% control sequence corresponding to the node, but it has to expand
% into the usual \leavevmode...\vrule stuff for purposes of
@@ -7409,7 +8023,7 @@ end
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
\ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
}%
- % output the `[mynode]' via a macro so it can be overridden.
+ % output the `[mynode]' via the macro below so it can be overridden.
\xrefprintnodename\printedrefname
%
% But we always want a comma and a space:
@@ -7417,11 +8031,37 @@ end
%
% output the `page 3'.
\turnoffactive \putwordpage\tie\refx{#1-pg}{}%
- \fi
+ \fi\fi
\fi
\endlink
\endgroup}
+% Output a cross-manual xref to #1. Used just above (twice).
+%
+% Only include the text "Section ``foo'' in" if the foo is neither
+% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply
+% "see The Foo Manual", the idea being to refer to the whole manual.
+%
+% But, this being TeX, we can't easily compare our node name against the
+% string "Top" while ignoring the possible spaces before and after in
+% the input. By adding the arbitrary 7sp below, we make it much less
+% likely that a real node name would have the same width as "Top" (e.g.,
+% in a monospaced font). Hopefully it will never happen in practice.
+%
+% For the same basic reason, we retypeset the "Top" at every
+% reference, since the current font is indeterminate.
+%
+\def\crossmanualxref#1{%
+ \setbox\toprefbox = \hbox{Top\kern7sp}%
+ \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
+ \ifdim \wd2 > 7sp % nonempty?
+ \ifdim \wd2 = \wd\toprefbox \else % same as Top?
+ \putwordSection{} ``\printedrefname'' \putwordin{}\space
+ \fi
+ \fi
+ #1%
+}
+
% This macro is called from \xrefX for the `[nodename]' part of xref
% output. It's a separate macro only so it can be changed more easily,
% since square brackets don't work well in some documents. Particularly
@@ -7637,7 +8277,7 @@ end
% space to prevent strange expansion errors.)
\def\supereject{\par\penalty -20000\footnoteno =0 }
-% @footnotestyle is meaningful for info output only.
+% @footnotestyle is meaningful for Info output only.
\let\footnotestyle=\comment
{\catcode `\@=11
@@ -7700,6 +8340,8 @@ end
% expands into a box, it must come within the paragraph, lest it
% provide a place where TeX can split the footnote.
\footstrut
+ %
+ % Invoke rest of plain TeX footnote routine.
\futurelet\next\fo@t
}
}%end \catcode `\@=11
@@ -7787,7 +8429,7 @@ end
it from ftp://tug.org/tex/epsf.tex.}
%
\def\image#1{%
- \ifx\epsfbox\undefined
+ \ifx\epsfbox\thisisundefined
\ifwarnednoepsf \else
\errhelp = \noepsfhelp
\errmessage{epsf.tex not found, images will be ignored}%
@@ -7811,6 +8453,13 @@ end
% If the image is by itself, center it.
\ifvmode
\imagevmodetrue
+ \else \ifx\centersub\centerV
+ % for @center @image, we need a vbox so we can have our vertical space
+ \imagevmodetrue
+ \vbox\bgroup % vbox has better behavior than vtop herev
+ \fi\fi
+ %
+ \ifimagevmode
\nobreak\medskip
% Usually we'll have text after the image which will insert
% \parskip glue, so insert it here too to equalize the space
@@ -7820,9 +8469,13 @@ end
\fi
%
% Leave vertical mode so that indentation from an enclosing
- % environment such as @quotation is respected. On the other hand, if
- % it's at the top level, we don't want the normal paragraph indentation.
- \noindent
+ % environment such as @quotation is respected.
+ % However, if we're at the top level, we don't want the
+ % normal paragraph indentation.
+ % On the other hand, if we are in the case of @center @image, we don't
+ % want to start a paragraph, which will create a hsize-width box and
+ % eradicate the centering.
+ \ifx\centersub\centerV\else \noindent \fi
%
% Output the image.
\ifpdf
@@ -7834,7 +8487,10 @@ end
\epsfbox{#1.eps}%
\fi
%
- \ifimagevmode \medskip \fi % space after the standalone image
+ \ifimagevmode
+ \medskip % space after a standalone image
+ \fi
+ \ifx\centersub\centerV \egroup \fi
\endgroup}
@@ -8252,7 +8908,7 @@ directory should work if nowhere else does.}
%
% Latin1 (ISO-8859-1) character definitions.
\def\latonechardefs{%
- \gdef^^a0{~}
+ \gdef^^a0{\tie}
\gdef^^a1{\exclamdown}
\gdef^^a2{\missingcharmsg{CENT SIGN}}
\gdef^^a3{{\pounds}}
@@ -8282,7 +8938,7 @@ directory should work if nowhere else does.}
\gdef^^b9{$^1$}
\gdef^^ba{\ordm}
%
- \gdef^^bb{\guilletright}
+ \gdef^^bb{\guillemetright}
\gdef^^bc{$1\over4$}
\gdef^^bd{$1\over2$}
\gdef^^be{$3\over4$}
@@ -8374,7 +9030,7 @@ directory should work if nowhere else does.}
% Latin2 (ISO-8859-2) character definitions.
\def\lattwochardefs{%
- \gdef^^a0{~}
+ \gdef^^a0{\tie}
\gdef^^a1{\ogonek{A}}
\gdef^^a2{\u{}}
\gdef^^a3{\L}
@@ -8547,7 +9203,7 @@ directory should work if nowhere else does.}
\gdef\DeclareUnicodeCharacter#1#2{%
\countUTFz = "#1\relax
- \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+ %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
\begingroup
\parseXMLCharref
\def\UTFviiiTwoOctets##1##2{%
@@ -9223,28 +9879,21 @@ directory should work if nowhere else does.}
\message{and turning on texinfo input format.}
+\def^^L{\par} % remove \outer, so ^L can appear in an @comment
+
% DEL is a comment character, in case @c does not suffice.
\catcode`\^^? = 14
% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}%$ font-lock fix
+\catcode`\"=\other \def\normaldoublequote{"}
+\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
+\catcode`\+=\other \def\normalplus{+}
+\catcode`\<=\other \def\normalless{<}
+\catcode`\>=\other \def\normalgreater{>}
+\catcode`\^=\other \def\normalcaret{^}
+\catcode`\_=\other \def\normalunderscore{_}
+\catcode`\|=\other \def\normalverticalbar{|}
+\catcode`\~=\other \def\normaltilde{~}
% This macro is used to make a character print one way in \tt
% (where it can probably be output as-is), and another way in other fonts,
@@ -9322,34 +9971,48 @@ directory should work if nowhere else does.}
% In texinfo, backslash is an active character; it prints the backslash
% in fixed width font.
-\catcode`\\=\active
-@def@normalbackslash{{@tt@backslashcurfont}}
+\catcode`\\=\active % @ for escape char from now on.
+
+% The story here is that in math mode, the \char of \backslashcurfont
+% ends up printing the roman \ from the math symbol font (because \char
+% in math mode uses the \mathcode, and plain.tex sets
+% \mathcode`\\="026E). It seems better for @backslashchar{} to always
+% print a typewriter backslash, hence we use an explicit \mathchar,
+% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
+% ignored family value; char position "5C). We can't use " for the
+% usual hex value because it has already been made active.
+@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
+@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
+
% On startup, @fixbackslash assigns:
% @let \ = @normalbackslash
-
% \rawbackslash defines an active \ to do \backslashcurfont.
% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
+% catcode other. We switch back and forth between these.
@gdef@rawbackslash{@let\=@backslashcurfont}
@gdef@otherbackslash{@let\=@realbackslash}
% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.
-%
-@def@normalturnoffactive{%
- @let\=@normalbackslash
- @let"=@normaldoublequote
- @let~=@normaltilde
- @let^=@normalcaret
- @let_=@normalunderscore
- @let|=@normalverticalbar
- @let<=@normalless
- @let>=@normalgreater
- @let+=@normalplus
- @let$=@normaldollar %$ font-lock fix
- @markupsetuplqdefault
- @markupsetuprqdefault
- @unsepspaces
+% the literal character `\'. Also revert - to its normal character, in
+% case the active - from code has slipped in.
+%
+{@catcode`- = @active
+ @gdef@normalturnoffactive{%
+ @let-=@normaldash
+ @let"=@normaldoublequote
+ @let$=@normaldollar %$ font-lock fix
+ @let+=@normalplus
+ @let<=@normalless
+ @let>=@normalgreater
+ @let\=@normalbackslash
+ @let^=@normalcaret
+ @let_=@normalunderscore
+ @let|=@normalverticalbar
+ @let~=@normaltilde
+ @markupsetuplqdefault
+ @markupsetuprqdefault
+ @unsepspaces
+ }
}
% Make _ and + \other characters, temporarily.
@@ -9378,10 +10041,19 @@ directory should work if nowhere else does.}
% Say @foo, not \foo, in error messages.
@escapechar = `@@
+% These (along with & and #) are made active for url-breaking, so need
+% active definitions as the normal characters.
+@def@normaldot{.}
+@def@normalquest{?}
+@def@normalslash{/}
+
% These look ok in all fonts, so just make them not special.
-@catcode`@& = @other
-@catcode`@# = @other
-@catcode`@% = @other
+% @hashchar{} gets its own user-level command, because of #line.
+@catcode`@& = @other @def@normalamp{&}
+@catcode`@# = @other @def@normalhash{#}
+@catcode`@% = @other @def@normalpercent{%}
+
+@let @hashchar = @normalhash
@c Finally, make ` and ' active, so that txicodequoteundirected and
@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we
diff --git a/doc/webpage.ms b/doc/webpage.ms
index 9281f47..5f79727 100644
--- a/doc/webpage.ms
+++ b/doc/webpage.ms
@@ -39,8 +39,12 @@ Home of Groff (GNU Troff).
.
.HTML-IMAGE-LEFT
.PSPIC -L gnu.eps 2i 2i
-.ie r ps4html \
+.ie r ps4html \{\
+. ll 10i
+. br
. nop \v'-0.66i'\h'2.0i'\s[80]\*[GNU] Troff\s0
+. ll
+.\}
.el \
. nop \v'-0.66i'\h'2.0i'\s[60]\*[GNU] Troff\s0
.HTML-IMAGE-END
@@ -111,10 +115,10 @@ README
This is the GNU groff document formatting system.
The version number is given in the file VERSION.
-Included in this release are implementations of troff, pic, eqn, tbl,
-grn, refer, \-man, \-mdoc, \-mom, and \-ms macros, and drivers for
-PostScript, TeX dvi format, HP LaserJet\~4 printers, Canon CAPSL printers,
-HTML and XHTML formats (beta status), and typewriter-like devices.
+Included in this release are implementations of troff, pic, eqn, tbl, grn,
+refer, \-man, \-mdoc, \-mom, and \-ms macros, and drivers for PostScript,
+PDF, TeX DVI format, HP LaserJet\~4 printers, Canon CAPSL printers, HTML and
+XHTML formats (beta status), and typewriter-like devices.
Also included is a modified version of the Berkeley \-me macros, the enhanced
version gxditview of the X11 xditview previewer, and an implementation of the
\-mm macros contributed by
@@ -179,7 +183,7 @@ The complete groff source as a single file is available
.URL http://\:groff.ffii.org/\:groff/\:devel/\:groff-current.tar.gz here .
A diff file relative to groff-\[la]version\[ra], the latest official groff
-release is available at
+release, is available at
.in 2m
.ft C
@@ -232,6 +236,9 @@ output.
If you don't intend to produce output in either of these formats, then
these packages are unnecessary.
+Additionally, producing `PDF' output directly with the `gropdf' device
+needs a working installation of Perl.
+
In Linux Debian, the installation of texinfo is dangerous, for it creates a
file install-info that blocks the system installation.
So the created /usr/local/bin/install-info must be renamed.
@@ -292,6 +299,123 @@ postings to the corresponding mailing list.
.
.
.SH
+NEWS VERSION 1.22.2
+.LP
+.SH 2
+tbl
+
+.ULS
+.LI
+The character `#' can now be used as an eqn delimiter within tables.
+.ULE
+.
+.
+.SH 2
+eqn
+
+.ULS
+.LI
+A GNU extension
+
+.in 2m
+.nf
+.ft C
+delim on
+.ft P
+.fi
+.in
+
+has been added to reactivate delimiters which have been disabled with
+`delim off'.
+.ULE
+.
+.
+.SH
+NEWS VERSION 1.22.1
+.LP
+(There was no release 1.22.)
+.LP
+.SH 2
+groff
+
+.ULS
+.LI
+A new option `\-j' has been added to call the `chem' preprocessor.
+.ULE
+.
+.
+.SH 2
+tbl
+
+.ULS
+.LI
+Improved line numbering support.
+.ULE
+.
+.
+.SH 2
+macro packages
+
+.ULS
+.LI
+Support for the `refer' preprocessor has been added to the \-mm macro
+package.
+
+.LI
+In \-me, the `TH' macro was changed for compatibility with line number
+support in tables.
+
+`bl' now works inside of blocks.
+
+The behaviour of centered blocks has been improved.
+
+Line numbering support has been improved.
+
+.LI
+The \-mom macro package has reached version 2.0, focusing on PDF output
+with gropdf (using the new `pdfmom' wrapper script).
+See the file `version-2.html' of the \-mom documentation for a list of the
+many changes.
+
+.LI
+Some generic Unicode fallback characters (mainly Roman numerals) have been
+added.
+.ULE
+.
+.
+.SH 2
+tbl
+
+.ULS
+.LI
+Added numbered line support in tables.
+.ULE
+.
+.
+.SH 2
+gropdf
+
+.ULS
+.LI
+A new driver for generating PDF output directly, contributed by
+.MTO deri@chuzzlewit.myzen.co.uk "Deri James" .
+
+Note that this driver is written in Perl, thus you need a working Perl
+installation to run this output device.
+.ULE
+.
+.
+.SH 2
+pdfmom
+
+.ULS
+.LI
+A new wrapper around groff that facilitates the production of PDF documents
+from files formatted with the \-mom macros.
+.ULE
+.
+.
+.SH
NEWS VERSION 1.21
.LP
.SH 2
@@ -685,7 +809,7 @@ Here the same table using a more expanded syntax:
Tables can be nested; `hdtbl' works without a preprocessor so that the
full capability of groff's macro engine is available.
-This package currently works with `-Tps' only.
+This package currently works with `\-Tps' only.
.LI
\-mandoc now supports multiple man pages (in either man or mdoc format).
@@ -2131,7 +2255,7 @@ Groffer
.ULS
.LI
A new script contributed by
-.MTO bwarken@mayn.de "Bernd Warken" .
+.MTO groff-bernd.warken-72@web.de "Bernd Warken" .
It displays groff files and man pages on X and tty, taking care of most
parameters automatically.
.ULE
diff --git a/font/devpdf/DESC.in b/font/devpdf/DESC.in
new file mode 100644
index 0000000..5cb254f
--- /dev/null
+++ b/font/devpdf/DESC.in
@@ -0,0 +1,11 @@
+res 72000
+hor 1
+vert 1
+sizescale 1000
+unitwidth 1000
+sizes 1000-10000000 0
+styles R I B BI
+family T
+fonts 8 0 0 0 0 0 0 S ZD
+tcommand
+postpro gropdf
diff --git a/font/devpdf/Foundry.in b/font/devpdf/Foundry.in
new file mode 100644
index 0000000..a6e968f
--- /dev/null
+++ b/font/devpdf/Foundry.in
@@ -0,0 +1,113 @@
+# Foundry file
+
+# Copyright (C) 2011 Free Software Foundation, Inc.
+# Written by Deri James <deri@chuzzlewit.demon.co.uk>
+#
+# This file is part of groff.
+#
+# groff is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# groff is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+#=====================================================================
+#Foundry|Name|Searchpath
+foundry||(gs)
+
+# These are just copies of the grops fonts so MUST not have any flags etc set
+
+#Font|IsBase14|Flags|Map|Encoding|File(!file...)
+AB|N||||URWGothicL-Demi!a010015l.pfb
+ABI|N||||URWGothicL-DemiObli!a010035l.pfb
+AI|N||||URWGothicL-BookObli!a010033l.pfb
+AR|N||||URWGothicL-Book!a010013l.pfb
+BMB|N||||URWBookmanL-DemiBold!b018015l.pfb
+BMBI|N||||URWBookmanL-DemiBoldItal!b018035l.pfb
+BMI|N||||URWBookmanL-LighItal!b018032l.pfb
+BMR|N||||URWBookmanL-Ligh!b018012l.pfb
+CB|Y||||NimbusMonL-Bold!n022004l.pfb
+CBI|Y||||NimbusMonL-BoldObli!n022024l.pfb
+CI|Y||||NimbusMonL-ReguObli!n022023l.pfb
+CR|Y||||NimbusMonL-Regu!n022003l.pfb
+EURO|N||||*../devps/freeeuro.pfa
+HB|Y||||NimbusSanL-Bold!n019004l.pfb
+HBI|Y||||NimbusSanL-BoldItal!n019024l.pfb
+HI|Y||||NimbusSanL-ReguItal!n019023l.pfb
+HNB|N||||NimbusSanL-BoldCond!n019044l.pfb
+HNBI|N||||NimbusSanL-BoldCondItal!n019064l.pfb
+HNI|N||||NimbusSanL-ReguCondItal!n019063l.pfb
+HNR|N||||NimbusSanL-ReguCond!n019043l.pfb
+HR|Y||||NimbusSanL-Regu!n019003l.pfb
+NB|N||||CenturySchL-Bold!c059016l.pfb
+NBI|N||||CenturySchL-BoldItal!c059036l.pfb
+NI|N||||CenturySchL-Ital!c059033l.pfb
+NR|N||||CenturySchL-Roma!c059013l.pfb
+PB|N||||URWPalladioL-Bold!p052004l.pfb
+PBI|N||||URWPalladioL-BoldItal!p052024l.pfb
+PI|N||||URWPalladioL-Ital!p052023l.pfb
+PR|N||||URWPalladioL-Roma!p052003l.pfb
+S|Y||||StandardSymL!s050000l.pfb
+TB|Y||||NimbusRomNo9L-Medi!n021004l.pfb
+TBI|Y||||NimbusRomNo9L-MediItal!n021024l.pfb
+TI|Y||||NimbusRomNo9L-ReguItal!n021023l.pfb
+TR|Y||||NimbusRomNo9L-Regu!n021003l.pfb
+ZCMI|N||||URWChanceryL-MediItal!z003034l.pfb
+ZD|Y||||Dingbats!d050000l.pfb
+
+#======================================================================
+
+#Foundry|Name|Searchpath
+foundry|U|(gs):/usr/share/fonts/type1/gsfonts :/opt/local/share/fonts/urw-fonts # the URW fonts delivered with ghostscript (may be different)
+#Define Flags for afmtodit
+
+r=-i 0 -m
+i=-i 50
+n=-n
+s=-s
+
+#Font|IsBase14|Flags|Map|Encoding|File
+AB|N|r|textmap|text.enc|a010015l.pfb
+ABI|N|i|textmap|text.enc|a010035l.pfb
+AI|N|i|textmap|text.enc|a010033l.pfb
+AR|N|r|textmap|text.enc|a010013l.pfb
+BMB|N|r|textmap|text.enc|b018015l.pfb
+BMBI|N|i|textmap|text.enc|b018035l.pfb
+BMI|N|i|textmap|text.enc|b018032l.pfb
+BMR|N|r|textmap|text.enc|b018012l.pfb
+CB|N|nr|textmap|text.enc|n022004l.pfb
+CBI|N|ni|textmap|text.enc|n022024l.pfb
+CI|N|ni|textmap|text.enc|n022023l.pfb
+CR|N|nr|textmap|text.enc|n022003l.pfb
+HB|N|r|textmap|text.enc|n019004l.pfb
+HBI|N|i|textmap|text.enc|n019024l.pfb
+HI|N|i|textmap|text.enc|n019023l.pfb
+HNB|N|r|textmap|text.enc|n019044l.pfb
+HNBI|N|i|textmap|text.enc|n019064l.pfb
+HNI|N|i|textmap|text.enc|n019063l.pfb
+HNR|N|r|textmap|text.enc|n019043l.pfb
+HR|N|r|textmap|text.enc|n019003l.pfb
+NB|N|r|textmap|text.enc|c059016l.pfb
+NBI|N|i|textmap|text.enc|c059036l.pfb
+NI|N|i|textmap|text.enc|c059033l.pfb
+NR|N|r|textmap|text.enc|c059013l.pfb
+PB|N|r|textmap|text.enc|p052004l.pfb
+PBI|N|i|textmap|text.enc|p052024l.pfb
+PI|N|i|textmap|text.enc|p052023l.pfb
+PR|N|r|textmap|text.enc|p052003l.pfb
+S|N|sr|symbolmap||s050000l.pfb
+TB|N|r|textmap|text.enc|n021004l.pfb
+TBI|N|i|textmap|text.enc|n021024l.pfb
+TI|N|i|textmap|text.enc|n021023l.pfb
+TR|N|r|textmap|text.enc|n021003l.pfb
+ZCMI|N|i|textmap|text.enc|z003034l.pfb
+ZD|N|sr|dingbats.map||d050000l.pfb
+
+#======================================================================
diff --git a/font/devpdf/Makefile.sub b/font/devpdf/Makefile.sub
new file mode 100644
index 0000000..b94068c
--- /dev/null
+++ b/font/devpdf/Makefile.sub
@@ -0,0 +1,129 @@
+# Copyright (C) 2011, 2013 Free Software Foundation, Inc.
+# Written by Deri James <deri@chuzzlewit.demon.co.uk>
+#
+# This file is part of groff.
+#
+# groff is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# groff is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+DEV=pdf
+GROFF_FONT_FILES=`cd $(top_builddir)/font/devpdf \
+ && find * -maxdepth 0 -type f ! -name Makefile.sub \
+ -exec grep -l internalname {} \;`
+ENC_FILES=`cd $(top_builddir)/font/devpdf; ls enc/*`
+MAP_FILES=`cd $(top_builddir)/font/devpdf; ls map/*`
+
+MOSTLYCLEANADD=\
+ download \
+ DESC \
+ Foundry \
+ util/BuildFoundries \
+ $(GROFF_FONT_FILES) \
+ $(ENC_FILES) \
+ $(MAP_FILES)
+
+MOSTLYCLEANDIRADD=enc map
+
+DEVFILES=\
+ Foundry
+
+#DEVSCRIPTS=util/BuildFoundries
+
+DISTFILES=\
+ $(DEVFILES) \
+ $(DEVSCRIPTS)
+
+
+# Some `makes' don't predefine RM...
+RM=rm -f
+
+
+all: DESC
+
+DESC: DESC.in
+ -rm -f DESC
+ cat $(srcdir)/DESC.in >$(top_builddir)/font/devpdf/DESC
+ if test "$(PAGE)" = A4; then \
+ echo "papersize a4" >>$(top_builddir)/font/devpdf/DESC; \
+ else \
+ echo "papersize letter" >>$(top_builddir)/font/devpdf/DESC; \
+ fi
+ -rm -f Foundry
+ cat $(srcdir)/Foundry.in >$(top_builddir)/font/devpdf/Foundry
+ -test -d $(top_builddir)/font/devpdf/enc \
+ || $(mkinstalldirs) $(top_builddir)/font/devpdf/enc
+ -test -d $(top_builddir)/font/devpdf/map \
+ || $(mkinstalldirs) $(top_builddir)/font/devpdf/map
+ cp -f $(top_srcdir)/font/devps/text.enc \
+ $(top_builddir)/font/devpdf/enc
+ cp -f $(top_srcdir)/font/devps/symbolmap \
+ $(top_builddir)/font/devpdf/map
+ cp -f $(top_srcdir)/font/devps/generate/dingbats.map \
+ $(top_builddir)/font/devpdf/map
+ cp -f $(top_srcdir)/font/devps/generate/textmap \
+ $(top_builddir)/font/devpdf/map
+ cp -f $(top_srcdir)/font/devps/generate/symbolchars \
+ $(top_builddir)/font/devpdf/map
+ -test -d util || $(mkinstalldirs) util
+ $(RM) util/BuildFoundries
+ if test -n "$(PERLPATH)"; then \
+ sed -f $(SH_DEPS_SED_SCRIPT) \
+ -e "s|/usr/bin/perl|$(PERLPATH)|" \
+ -e "s|@GROFF_GHOSTSCRIPT_INTERPRETERS@|$(GHOSTSCRIPT)|" \
+ -e "s|@VERSION@|$(version)$(revision)|" \
+ -e "s|@GROFF_FONT_DIR@|$(fontdir)|" \
+ $(srcdir)/util/BuildFoundries.pl \
+ >$(top_builddir)/font/devpdf/util/BuildFoundries ;\
+ else \
+ sed -f $(SH_DEPS_SED_SCRIPT) \
+ -e "s|@VERSION@|$(version)$(revision)|" \
+ -e "s|@GROFF_FONT_DIR@|$(fontdir)|" \
+ $(srcdir)/util/BuildFoundries.pl \
+ >$(top_builddir)/font/devpdf/util/BuildFoundries ;\
+ fi
+ chmod +x util/BuildFoundries
+ echo "# foundry ps name psfile" > $(top_builddir)/font/devpdf/download
+ PATH="$(top_builddir)/src/utils/afmtodit:${GROFF_PATH_SEPARATOR}${PATH}" \
+ util/BuildFoundries $(top_builddir)/font/devpdf \
+ '$(top_srcdir)/font/devps : $(top_builddir)/font/devps' \
+ >> $(top_builddir)/font/devpdf/download
+
+install_data:
+ -test -d $(DESTDIR)$(fontsubdir) \
+ || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)
+ -test -d $(DESTDIR)$(fontsubdir)/enc \
+ || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/enc
+ -test -d $(DESTDIR)$(fontsubdir)/map \
+ || $(mkinstalldirs) $(DESTDIR)$(fontsubdir)/map
+ for f in $(MOSTLYCLEANADD); do \
+ $(RM) $(DESTDIR)$(fontsubdir)/$$f; \
+ if test -f $$f; then \
+ $(INSTALL_DATA) $$f $(DESTDIR)$(fontsubdir)/$$f; \
+ else \
+ $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(fontsubdir)/$$f; \
+ fi; \
+ done
+ $(RM) $@
+
+uninstall_sub:
+ for f in $(MOSTLYCLEANADD); do \
+ $(RM) $(DESTDIR)$(fontsubdir)/$$f; \
+ done
+ -test -d $(DESTDIR)$(fontsubdir)/enc \
+ && rmdir $(DESTDIR)$(fontsubdir)/enc
+ -test -d $(DESTDIR)$(fontsubdir)/map \
+ && rmdir $(DESTDIR)$(fontsubdir)/map
+ -test -d $(DESTDIR)$(fontsubdir)/util \
+ && rmdir $(DESTDIR)$(fontsubdir)/util
+ -test -d $(DESTDIR)$(fontsubdir) \
+ && rmdir $(DESTDIR)$(fontsubdir)
diff --git a/font/devpdf/util/BuildFoundries.pl b/font/devpdf/util/BuildFoundries.pl
new file mode 100644
index 0000000..39f2f0d
--- /dev/null
+++ b/font/devpdf/util/BuildFoundries.pl
@@ -0,0 +1,448 @@
+#!/usr/bin/perl -w
+#
+# BuildFoundries : Given a Foundry file generate groff and download files
+# Deri James : Monday 07 Feb 2011
+
+# Copyright (C) 2011 Free Software Foundation, Inc.
+# Written by Deri James <deri@chuzzlewit.demon.co.uk>
+#
+# This file is part of groff.
+#
+# groff is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# groff is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+use strict;
+
+my $where=shift||'';
+my $devps=shift||'../devps';
+chdir $where if $where ne '';
+my (%foundry,%flg,@downloadpreamble,%download);
+my $GSpath=FindGSpath();
+my $warn=0;
+my $lct=0;
+my $foundry=''; # the default foundry
+
+LoadDownload("download");
+LoadFoundry("Foundry");
+WriteDownload("download");
+
+exit 0;
+
+
+
+sub LoadFoundry
+{
+ my $fn=shift;
+ my $foundrypath='';
+
+ open(F,"<$fn") or die "No $fn file found";
+
+ while (<F>)
+ {
+ chomp;
+ $lct++;
+ s/\r$//; # in case edited in windows
+
+ s/\s*#.*?$//; # remove comments
+
+ next if $_ eq '';
+
+ if (m/^[A-Za-z]=/)
+ {
+ my (@f)=split('=');
+ $flg{$f[0]}=$f[1];
+ next;
+ }
+
+ my (@r)=split('\|');
+
+ if (lc($r[0]) eq 'foundry')
+ {
+ $foundry=uc($r[1]);
+ $foundrypath=$r[2].' : '.$devps;
+ $foundrypath=~s/\(gs\)/$GSpath /;
+ }
+ else
+ {
+ # 0=groff font name
+ # 1=IsBase Y/N (one of PDFs 14 base fonts)
+ # 2=afmtodit flag
+ # 3=map file
+ # 4=encoding file
+ # 5=font file
+ # 6=afm file
+
+ if (!defined($r[6]) or $r[6] eq '')
+ {
+ # if no afm file, have a guess!
+ $r[6]=substr($r[5],0,-3)."afm";
+ }
+
+ my $gfont=($foundry eq '')?$r[0]:"$foundry-$r[0]";
+
+ if ($r[2] eq '')
+ {
+ # Don't run afmtodit, just copy the grops font file
+
+ my $gotf=1;
+ my $gropsfnt=LocateFile($devps,$r[0],0);
+
+ if ($gropsfnt ne '' and -r "$gropsfnt")
+ {
+ my $psfont=UseGropsVersion($gropsfnt);
+ if (!PutDownload($psfont,LocatePF($foundrypath,$r[5]),uc($r[1])))
+ {
+ if (uc($r[1]) ne 'Y')
+ {
+ $gotf=0;
+ my $fns=join(',',split('!',$r[5]));
+ Msg(0,"Unable to locate font(s) $fns on the given path(s)");
+ unlink $gfont; # Unable to find the postscript file for the font just created by afmtodit
+ }
+ }
+ print STDERR "Copied grops font $gfont...\n" if $gotf;
+
+ }
+ else
+ {
+ Msg(0,"Can't read grops font '$r[0]' for Foundry '$foundry'");
+ }
+ }
+ else
+ {
+ # We need to run afmtodit to create this groff font
+ my $psfont=RunAfmtodit($gfont,LocateAF($foundrypath,$r[6]),$r[2],$r[3],$r[4]);
+
+ if ($psfont)
+ {
+ if (!PutDownload($psfont,LocatePF($foundrypath,$r[5]),uc($r[1])))
+ {
+ unlink $gfont; # Unable to find the postscript file for the font just created by afmtodit
+ }
+ else
+ {
+ print STDERR "Generated $gfont...\n";
+ }
+ }
+ else
+ {
+ Msg(0,"Failed to create groff font '$gfont' by running afmtodit");
+ }
+ }
+ }
+ }
+
+ close();
+}
+
+sub RunAfmtodit
+{
+ my $gfont=shift;
+ my $afmfile=shift;
+ my $flags=shift;
+ my $map=shift||'';
+ my $enc=shift||'';
+ my $psfont='';
+
+ $enc="-e 'enc/$enc'" if $enc;
+ $map="'map/$map'" if $map;
+
+ my $cmd='afmtodit -c -dDESC';
+
+ foreach my $f (split('',$flags))
+ {
+ if (!exists($flg{$f}))
+ {
+ Msg(0,"Can't use undefined flag '$f' in calling afmtodit for groff font '$gfont'");
+ return('');
+ }
+
+ $cmd.=" $flg{$f}";
+ }
+
+ system("$cmd $enc '$afmfile' $map $gfont 2>/dev/null");
+
+ if ($?)
+ {
+ unlink $gfont;
+ return('');
+ }
+
+ if (open(GF,"<$gfont"))
+ {
+ my (@gf)=(<GF>);
+ my @ps=grep(/^internalname /,@gf);
+ if ($#ps == 0) # Just 1 match
+ {
+ (undef,$psfont)=split(' ',$ps[0],2);
+ chomp($psfont);
+ }
+ else
+ {
+ Msg(0,"Unexpected format for grops font '$gfont' for Foundry '$foundry' - ignoring");
+ }
+
+ close(GF);
+ }
+
+ return($psfont);
+}
+
+sub LocateAF
+{
+ my $path=shift;
+ my $file=shift;
+
+ return(LocateFile($path,$file,1));
+}
+
+sub LocatePF
+{
+ my $path=shift;
+ my $file=shift;
+
+ return(LocateFile($path,$file,0));
+}
+
+sub LocateFile
+{
+ my $path=shift;
+ my $files=shift;
+ my $tryafm=shift;
+ return(substr($files,1)) if substr($files,0,1) eq '*';
+
+ foreach my $file (split('!',$files))
+ {
+ if ($file=~m'/')
+ {
+ # path given with file name so no need to search the paths
+
+ if (-r $file)
+ {
+ return($file);
+ }
+
+ if ($tryafm and $file=~s'type1/'afm/'i)
+ {
+ if (-r "$file")
+ {
+ return($file);
+ }
+ }
+
+ return('');
+ }
+
+ if ($path eq '(tex)')
+ {
+ my $res=`kpsewhich $file`;
+ return '' if $?;
+ chomp($res);
+ return($res);
+ }
+
+ my (@paths)=split(/ (:|;)/,$path);
+
+ foreach my $p (@paths)
+ {
+ next if !defined($p) or $p eq ';' or $p eq ':';
+ $p=~s/^\s+//;
+ $p=~s/\s+$//;
+
+ next if $p=~m/^\%rom\%/; # exclude %rom% paths (from (gs))
+
+ if (-r "$p/$file")
+ {
+ return("$p/$file");
+ }
+
+ if ($tryafm and $p=~s'type1/'afm/'i)
+ {
+ if (-r "$p/$file")
+ {
+ return("$p/$file");
+ }
+ }
+ }
+ }
+
+ return('');
+}
+
+sub FindGSpath
+{
+ my (@res)=`@GROFF_GHOSTSCRIPT_INTERPRETERS@ -h 2>/dev/null`;
+ return '' if $?;
+ my $buildpath='';
+ my $stg=1;
+
+ foreach my $l (@res)
+ {
+ chomp($l);
+
+ if ($stg==1 and $l=~m/^Search path:/)
+ {
+ $stg=2;
+ }
+ elsif ($stg == 2)
+ {
+ if (substr($l,0,1) ne ' ')
+ {
+ $stg=3;
+ }
+ else
+ {
+ $l=~s/^\s+//;
+ $buildpath.=$l;
+ }
+ }
+ }
+
+ return($buildpath);
+}
+
+sub UseGropsVersion
+{
+ my $gfont=shift;
+ my $psfont='';
+ my (@gfa)=split('/',$gfont);
+ my $gfontbase=pop(@gfa);
+
+ if (open(GF,"<$gfont"))
+ {
+ my (@gf)=(<GF>);
+ my @ps=grep(/^internalname /,@gf);
+ if ($#ps == 0) # Just 1 match
+ {
+ (undef,$psfont)=split(' ',$ps[0],2);
+ chomp($psfont);
+ }
+ else
+ {
+ Msg(0,"Unexpected format for grops font '$gfont' for Foundry '$foundry' - ignoring");
+ }
+
+ close(GF);
+
+ if ($psfont)
+ {
+ if (open(GF,">$gfontbase"))
+ {
+ local $"='';
+ print GF "@gf";
+ close(GF);
+ }
+ else
+ {
+ $psfont='';
+ Msg(0,"Failed to create new font '$gfont' for Foundry '$foundry'");
+ }
+ }
+ else
+ {
+ Msg(0,"Failed to locate postscript internalname in grops font '$gfont' for Foundry '$foundry'");
+ }
+
+ close(GF);
+ }
+ else
+ {
+ Msg(0,"Failed to open grops font '$gfont' for Foundry '$foundry'");
+ }
+
+ return($psfont);
+}
+
+sub PutDownload
+{
+ my $psfont=shift;
+ my $pffile=shift;
+ my $IsBase14=shift;
+ my $key="$foundry $psfont";
+
+ delete($download{$key}), return 0 if ($pffile eq '');
+
+ $pffile='*'.$pffile if $IsBase14 eq 'Y'; # This signals to gropdf to only edmbed if -e given
+ $download{$key}=$pffile;
+
+ return 1;
+}
+
+sub LoadDownload
+{
+ my $fn=shift;
+ my $top=1;
+
+ return if !open(F,"<$fn");
+
+ while (<F>)
+ {
+ chomp;
+ s/\r$//; # in case edited in windows
+
+ if ($top and substr($_,0,1) eq '#' or $_ eq '')
+ {
+ # Preserve comments at top of download file
+
+ push(@downloadpreamble,$_);
+ next;
+ }
+
+ $top=0;
+ s/\s*#.*?$//; # remove comments
+
+ next if $_ eq '';
+
+ my (@r)=split(/\t+/);
+ my $key=$r[1];
+ $key="$r[0] $r[1]";
+ $download{$key}=$r[2];
+ }
+
+ close(F);
+}
+
+sub WriteDownload
+{
+ my $fn=shift;
+ my $top=1;
+
+ open(F,">$fn") or die "Can't Create new file '$fn'";
+
+ print F join("\n",@downloadpreamble),"\n";
+
+ foreach my $k (sort keys %download)
+ {
+ my ($f,$ps)=split(/ /,$k);
+ print F "$f\t$ps\t$download{$k}\n";
+ }
+
+ close(F);
+}
+
+sub Msg
+{
+ my $sev=shift;
+ my $msg=shift;
+
+ if ($sev)
+ {
+ print STDERR "Error: line $lct: $msg\n";
+ exit 2;
+ }
+ else
+ {
+ print STDERR "Warning: line $lct: $msg\n";
+ $warn=1;
+ }
+}
diff --git a/install-sh b/install-sh
index 6781b98..377bb86 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-11-20.07; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,7 +35,7 @@ scriptversion=2009-04-28.21; # UTC
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
@@ -156,6 +156,10 @@ while test $# -ne 0; do
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
shift;;
-T) no_target_directory=true;;
@@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
fi
shift # arg
dst_arg=$arg
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
done
fi
@@ -194,13 +202,17 @@ if test $# -eq 0; then
echo "$0: no input file specified." >&2
exit 1
fi
- # It's OK to call `install-sh -d' without argument.
+ # It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
- trap '(exit $?); exit' 1 2 13 15
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
@@ -228,9 +240,9 @@ fi
for src
do
- # Protect names starting with `-'.
+ # Protect names problematic for 'test' and other utilities.
case $src in
- -*) src=./$src;;
+ -* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
@@ -252,12 +264,7 @@ do
echo "$0: no destination specified." >&2
exit 1
fi
-
dst=$dst_arg
- # Protect names starting with `-'.
- case $dst in
- -*) dst=./$dst;;
- esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
@@ -347,7 +354,7 @@ do
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writeable bit of parent directory when it shouldn't.
+ # other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
@@ -385,7 +392,7 @@ do
case $dstdir in
/*) prefix='/';;
- -*) prefix='./';;
+ [-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
@@ -403,7 +410,7 @@ do
for d
do
- test -z "$d" && continue
+ test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
diff --git a/m4/codeset.m4 b/m4/codeset.m4
index de4181d..cf53d24 100644
--- a/m4/codeset.m4
+++ b/m4/codeset.m4
@@ -1,5 +1,5 @@
-# codeset.m4 serial 3 (gettext-0.18)
-dnl Copyright (C) 2000-2002, 2006, 2008 Free Software Foundation, Inc.
+# codeset.m4 serial 5 (gettext-0.18.2)
+dnl Copyright (C) 2000-2002, 2006, 2008-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -9,13 +9,15 @@ dnl From Bruno Haible.
AC_DEFUN([AM_LANGINFO_CODESET],
[
AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
- [AC_TRY_LINK([#include <langinfo.h>],
- [char* cs = nl_langinfo(CODESET); return !cs;],
- [am_cv_langinfo_codeset=yes],
- [am_cv_langinfo_codeset=no])
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <langinfo.h>]],
+ [[char* cs = nl_langinfo(CODESET); return !cs;]])],
+ [am_cv_langinfo_codeset=yes],
+ [am_cv_langinfo_codeset=no])
])
if test $am_cv_langinfo_codeset = yes; then
- AC_DEFINE([HAVE_LANGINFO_CODESET], 1,
+ AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
[Define if you have <langinfo.h> and nl_langinfo(CODESET).])
fi
])
diff --git a/m4/fcntl-o.m4 b/m4/fcntl-o.m4
new file mode 100644
index 0000000..9862741
--- /dev/null
+++ b/m4/fcntl-o.m4
@@ -0,0 +1,123 @@
+# fcntl-o.m4 serial 4
+dnl Copyright (C) 2006, 2009-2012 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+# Test whether the flags O_NOATIME and O_NOFOLLOW actually work.
+# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise.
+# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise.
+AC_DEFUN([gl_FCNTL_O_FLAGS],
+[
+ dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
+ dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
+ dnl AC_GNU_SOURCE.
+ m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
+ [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
+ [AC_REQUIRE([AC_GNU_SOURCE])])
+
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ AC_CHECK_FUNCS_ONCE([symlink])
+ AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/types.h>
+ #include <sys/stat.h>
+ #if HAVE_UNISTD_H
+ # include <unistd.h>
+ #else /* on Windows with MSVC */
+ # include <io.h>
+ # include <stdlib.h>
+ # defined sleep(n) _sleep ((n) * 1000)
+ #endif
+ #include <fcntl.h>
+ #ifndef O_NOATIME
+ #define O_NOATIME 0
+ #endif
+ #ifndef O_NOFOLLOW
+ #define O_NOFOLLOW 0
+ #endif
+ static int const constants[] =
+ {
+ O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+ O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+ };
+ ]],
+ [[
+ int result = !constants;
+ #if HAVE_SYMLINK
+ {
+ static char const sym[] = "conftest.sym";
+ if (symlink (".", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_RDONLY | O_NOFOLLOW);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ unlink (sym);
+ }
+ #endif
+ {
+ static char const file[] = "confdefs.h";
+ int fd = open (file, O_RDONLY | O_NOATIME);
+ if (fd < 0)
+ result |= 8;
+ else
+ {
+ struct stat st0;
+ if (fstat (fd, &st0) != 0)
+ result |= 16;
+ else
+ {
+ char c;
+ sleep (1);
+ if (read (fd, &c, 1) != 1)
+ result |= 24;
+ else
+ {
+ if (close (fd) != 0)
+ result |= 32;
+ else
+ {
+ struct stat st1;
+ if (stat (file, &st1) != 0)
+ result |= 40;
+ else
+ if (st0.st_atime != st1.st_atime)
+ result |= 64;
+ }
+ }
+ }
+ }
+ }
+ return result;]])],
+ [gl_cv_header_working_fcntl_h=yes],
+ [case $? in #(
+ 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+ 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+ 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+ *) gl_cv_header_working_fcntl_h='no';;
+ esac],
+ [gl_cv_header_working_fcntl_h=cross-compiling])])
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+ AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
+ [Define to 1 if O_NOATIME works.])
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+ AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
+ [Define to 1 if O_NOFOLLOW works.])
+])
diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
index 93fbf47..c938fb1 100644
--- a/m4/glibc21.m4
+++ b/m4/glibc21.m4
@@ -1,27 +1,31 @@
-# glibc21.m4 serial 4
-dnl Copyright (C) 2000-2002, 2004, 2008 Free Software Foundation, Inc.
+# glibc21.m4 serial 5
+dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2012 Free Software Foundation,
+dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
-# Test for the GNU C Library, version 2.1 or newer.
+# Test for the GNU C Library, version 2.1 or newer, or uClibc.
# From Bruno Haible.
AC_DEFUN([gl_GLIBC21],
[
- AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
+ AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc],
[ac_cv_gnu_library_2_1],
- [AC_EGREP_CPP([Lucky GNU user],
- [
+ [AC_EGREP_CPP([Lucky],
+ [
#include <features.h>
#ifdef __GNU_LIBRARY__
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
Lucky GNU user
#endif
#endif
- ],
- [ac_cv_gnu_library_2_1=yes],
- [ac_cv_gnu_library_2_1=no])
+#ifdef __UCLIBC__
+ Lucky user
+#endif
+ ],
+ [ac_cv_gnu_library_2_1=yes],
+ [ac_cv_gnu_library_2_1=no])
]
)
AC_SUBST([GLIBC21])
diff --git a/m4/groff.m4 b/m4/groff.m4
index c2c58cc..0a0cc31 100644
--- a/m4/groff.m4
+++ b/m4/groff.m4
@@ -1,5 +1,5 @@
# Autoconf macros for groff.
-# Copyright (C) 1989-1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
+# Copyright (C) 1989-1995, 2001-2007, 2009, 2011
# Free Software Foundation, Inc.
#
# This file is part of groff.
@@ -1193,3 +1193,19 @@ AC_DEFUN([GROFF_APPRESDIR_CHECK],
])
fi
fi])
+
+
+# Set up the `--with-grofferdir' command line option.
+
+AC_DEFUN([GROFF_GROFFERDIR_OPTION],
+ [AC_ARG_WITH([grofferdir],
+ AS_HELP_STRING([--with-grofferdir=DIR],
+ [groffer files location]))])
+
+AC_DEFUN([GROFF_GROFFERDIR_DEFAULT],
+ [if test "x$with_grofferdir" = "x"; then
+ groffer_dir=$libdir/groff/groffer
+ else
+ groffer_dir=$with_grofferdir
+ fi
+ AC_SUBST([groffer_dir])])
diff --git a/m4/iconv.m4 b/m4/iconv.m4
index 848b2f8..6a47236 100644
--- a/m4/iconv.m4
+++ b/m4/iconv.m4
@@ -1,5 +1,5 @@
-# iconv.m4 serial AM6 (gettext-0.18)
-dnl Copyright (C) 2000-2002, 2007-2008 Free Software Foundation, Inc.
+# iconv.m4 serial 18 (gettext-0.18.2)
+dnl Copyright (C) 2000-2002, 2007-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -30,27 +30,35 @@ AC_DEFUN([AM_ICONV_LINK],
dnl Add $INCICONV to CPPFLAGS before performing the following checks,
dnl because if the user has installed libiconv and not disabled its use
dnl via --without-libiconv-prefix, he wants to use it. The first
- dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+ dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed.
am_save_CPPFLAGS="$CPPFLAGS"
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <stdlib.h>
+#include <iconv.h>
+ ]],
+ [[iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);]])],
[am_cv_func_iconv=yes])
if test "$am_cv_func_iconv" != yes; then
am_save_LIBS="$LIBS"
LIBS="$LIBS $LIBICONV"
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <stdlib.h>
+#include <iconv.h>
+ ]],
+ [[iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);]])],
[am_cv_lib_iconv=yes]
[am_cv_func_iconv=yes])
LIBS="$am_save_LIBS"
@@ -58,16 +66,19 @@ AC_DEFUN([AM_ICONV_LINK],
])
if test "$am_cv_func_iconv" = yes; then
AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
- dnl This tests against bugs in AIX 5.1 and HP-UX 11.11.
+ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11,
+ dnl Solaris 10.
am_save_LIBS="$LIBS"
if test $am_cv_lib_iconv = yes; then
LIBS="$LIBS $LIBICONV"
fi
- AC_TRY_RUN([
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
#include <iconv.h>
#include <string.h>
int main ()
{
+ int result = 0;
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
returns. */
{
@@ -84,7 +95,47 @@ int main ()
(char **) &inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res == 0)
- return 1;
+ result |= 1;
+ iconv_close (cd_utf8_to_88591);
+ }
+ }
+ /* Test against Solaris 10 bug: Failures are not distinguishable from
+ successful returns. */
+ {
+ iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+ if (cd_ascii_to_88591 != (iconv_t)(-1))
+ {
+ static const char input[] = "\263";
+ char buf[10];
+ const char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_ascii_to_88591,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ result |= 2;
+ iconv_close (cd_ascii_to_88591);
+ }
+ }
+ /* Test against AIX 6.1..7.1 bug: Buffer overrun. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static const char input[] = "\304";
+ static char buf[2] = { (char)0xDE, (char)0xAD };
+ const char *inptr = input;
+ size_t inbytesleft = 1;
+ char *outptr = buf;
+ size_t outbytesleft = 1;
+ size_t res = iconv (cd_88591_to_utf8,
+ (char **) &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+ result |= 4;
+ iconv_close (cd_88591_to_utf8);
}
}
#if 0 /* This bug could be worked around by the caller. */
@@ -103,7 +154,8 @@ int main ()
(char **) &inptr, &inbytesleft,
&outptr, &outbytesleft);
if ((int)res > 0)
- return 1;
+ result |= 8;
+ iconv_close (cd_88591_to_utf8);
}
}
#endif
@@ -117,13 +169,19 @@ int main ()
&& iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
/* Try HP-UX names. */
&& iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
- return 1;
- return 0;
-}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
- [case "$host_os" in
+ result |= 16;
+ return result;
+}]])],
+ [am_cv_func_iconv_works=yes],
+ [am_cv_func_iconv_works=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
*) am_cv_func_iconv_works="guessing yes" ;;
- esac])
+ esac
+changequote([,])dnl
+ ])
LIBS="$am_save_LIBS"
])
case "$am_cv_func_iconv_works" in
@@ -134,7 +192,7 @@ int main ()
am_func_iconv=no am_cv_lib_iconv=no
fi
if test "$am_func_iconv" = yes; then
- AC_DEFINE([HAVE_ICONV], 1,
+ AC_DEFINE([HAVE_ICONV], [1],
[Define if you have the iconv() function and it works.])
fi
if test "$am_cv_lib_iconv" = yes; then
@@ -151,30 +209,60 @@ int main ()
AC_SUBST([LTLIBICONV])
])
-AC_DEFUN([AM_ICONV],
+dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
+dnl avoid warnings like
+dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
+dnl This is tricky because of the way 'aclocal' is implemented:
+dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
+dnl Otherwise aclocal's initial scan pass would miss the macro definition.
+dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
+dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
+dnl warnings.
+m4_define([gl_iconv_AC_DEFUN],
+ m4_version_prereq([2.64],
+ [[AC_DEFUN_ONCE(
+ [$1], [$2])]],
+ [m4_ifdef([gl_00GNULIB],
+ [[AC_DEFUN_ONCE(
+ [$1], [$2])]],
+ [[AC_DEFUN(
+ [$1], [$2])]])]))
+gl_iconv_AC_DEFUN([AM_ICONV],
[
AM_ICONV_LINK
if test "$am_cv_func_iconv" = yes; then
AC_MSG_CHECKING([for iconv declaration])
AC_CACHE_VAL([am_cv_proto_iconv], [
- AC_TRY_COMPILE([
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
#include <stdlib.h>
#include <iconv.h>
extern
#ifdef __cplusplus
"C"
#endif
-#if defined(__STDC__) || defined(__cplusplus)
+#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
#else
size_t iconv();
#endif
-], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
+ ]],
+ [[]])],
+ [am_cv_proto_iconv_arg1=""],
+ [am_cv_proto_iconv_arg1="const"])
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- AC_MSG_RESULT([${ac_t:-
- }$am_cv_proto_iconv])
+ AC_MSG_RESULT([
+ $am_cv_proto_iconv])
AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
[Define as const if the declaration of iconv() needs const.])
+ dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>.
+ m4_ifdef([gl_ICONV_H_DEFAULTS],
+ [AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+ if test -n "$am_cv_proto_iconv_arg1"; then
+ ICONV_CONST="const"
+ fi
+ ])
fi
])
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
index 96c4e2c..4e1374d 100644
--- a/m4/lib-ld.m4
+++ b/m4/lib-ld.m4
@@ -1,5 +1,5 @@
-# lib-ld.m4 serial 3 (gettext-0.13)
-dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
+# lib-ld.m4 serial 5 (gettext-0.18.2)
+dnl Copyright (C) 1996-2003, 2009-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -10,7 +10,7 @@ dnl with libtool.m4.
dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
AC_DEFUN([AC_LIB_PROG_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
@@ -23,7 +23,7 @@ with_gnu_ld=$acl_cv_prog_gnu_ld
dnl From libtool-1.4. Sets the variable LD.
AC_DEFUN([AC_LIB_PROG_LD],
-[AC_ARG_WITH(gnu-ld,
+[AC_ARG_WITH([gnu-ld],
[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
AC_REQUIRE([AC_PROG_CC])dnl
@@ -31,15 +31,14 @@ AC_REQUIRE([AC_CANONICAL_HOST])dnl
# Prepare PATH_SEPARATOR.
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
fi
ac_prog=ld
if test "$GCC" = yes; then
@@ -59,7 +58,7 @@ if test "$GCC" = yes; then
# Canonicalize the path of ld
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
done
test -z "$LD" && LD="$ac_prog"
;;
@@ -77,7 +76,7 @@ elif test "$with_gnu_ld" = yes; then
else
AC_MSG_CHECKING([for non-GNU ld])
fi
-AC_CACHE_VAL(acl_cv_path_LD,
+AC_CACHE_VAL([acl_cv_path_LD],
[if test -z "$LD"; then
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
for ac_dir in $PATH; do
@@ -89,9 +88,9 @@ AC_CACHE_VAL(acl_cv_path_LD,
# Break only if it was the GNU/non-GNU ld that we prefer.
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
*GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break ;;
+ test "$with_gnu_ld" != no && break ;;
*)
- test "$with_gnu_ld" != yes && break ;;
+ test "$with_gnu_ld" != yes && break ;;
esac
fi
done
@@ -101,9 +100,9 @@ else
fi])
LD="$acl_cv_path_LD"
if test -n "$LD"; then
- AC_MSG_RESULT($LD)
+ AC_MSG_RESULT([$LD])
else
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([no])
fi
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
AC_LIB_PROG_LD_GNU
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
index e29eead..d11b4b4 100644
--- a/m4/lib-link.m4
+++ b/m4/lib-link.m4
@@ -1,12 +1,12 @@
-# lib-link.m4 serial 17 (gettext-0.18)
-dnl Copyright (C) 2001-2008 Free Software Foundation, Inc.
+# lib-link.m4 serial 26 (gettext-0.18.2)
+dnl Copyright (C) 2001-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
-AC_PREREQ(2.54)
+AC_PREREQ([2.54])
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
dnl the libraries corresponding to explicit and implicit dependencies.
@@ -18,9 +18,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS],
[
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
AC_REQUIRE([AC_LIB_RPATH])
- pushdef([Name],[translit([$1],[./-], [___])])
- pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ pushdef([Name],[m4_translit([$1],[./+-], [____])])
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
AC_LIB_LINKFLAGS_BODY([$1], [$2])
ac_cv_lib[]Name[]_libs="$LIB[]NAME"
@@ -43,12 +43,13 @@ AC_DEFUN([AC_LIB_LINKFLAGS],
popdef([Name])
])
-dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
dnl searches for libname and the libraries corresponding to explicit and
dnl implicit dependencies, together with the specified include files and
-dnl the ability to compile and link the specified testcode. If found, it
-dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
-dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl the ability to compile and link the specified testcode. The missing-message
+dnl defaults to 'no' and may contain additional hints for the user.
+dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
+dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
@@ -57,9 +58,9 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
[
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
AC_REQUIRE([AC_LIB_RPATH])
- pushdef([Name],[translit([$1],[./-], [___])])
- pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ pushdef([Name],[m4_translit([$1],[./+-], [____])])
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
dnl accordingly.
@@ -73,13 +74,26 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
ac_save_LIBS="$LIBS"
- LIBS="$LIBS $LIB[]NAME"
- AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
+ dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
+ dnl because these -l options might require -L options that are present in
+ dnl LIBS. -l options benefit only from the -L options listed before it.
+ dnl Otherwise, add it to the front of LIBS, because it may be a static
+ dnl library that depends on another static library that is present in LIBS.
+ dnl Static libraries benefit only from the static libraries listed after
+ dnl it.
+ case " $LIB[]NAME" in
+ *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
+ *) LIBS="$LIB[]NAME $LIBS" ;;
+ esac
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[$3]], [[$4]])],
+ [ac_cv_lib[]Name=yes],
+ [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
LIBS="$ac_save_LIBS"
])
if test "$ac_cv_lib[]Name" = yes; then
HAVE_LIB[]NAME=yes
- AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
AC_MSG_CHECKING([how to link with lib[]$1])
AC_MSG_RESULT([$LIB[]NAME])
else
@@ -102,6 +116,8 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
dnl Determine the platform dependent parameters needed to use rpath:
dnl acl_libext,
dnl acl_shlibext,
+dnl acl_libname_spec,
+dnl acl_library_names_spec,
dnl acl_hardcode_libdir_flag_spec,
dnl acl_hardcode_libdir_separator,
dnl acl_hardcode_direct,
@@ -114,7 +130,7 @@ AC_DEFUN([AC_LIB_RPATH],
AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
- AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
+ AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
. ./conftest.sh
@@ -131,7 +147,7 @@ AC_DEFUN([AC_LIB_RPATH],
acl_hardcode_direct="$acl_cv_hardcode_direct"
acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
dnl Determine whether the user wants rpath handling at all.
- AC_ARG_ENABLE(rpath,
+ AC_ARG_ENABLE([rpath],
[ --disable-rpath do not hardcode runtime library paths],
:, enable_rpath=yes)
])
@@ -144,15 +160,15 @@ dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
dnl macro call that searches for libname.
AC_DEFUN([AC_LIB_FROMPACKAGE],
[
- pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
define([acl_frompackage_]NAME, [$2])
popdef([NAME])
pushdef([PACK],[$2])
- pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
define([acl_libsinpackage_]PACKUP,
- m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
+ m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1])
popdef([PACKUP])
popdef([PACK])
])
@@ -165,14 +181,14 @@ dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
[
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
- pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
- pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
dnl Autoconf >= 2.61 supports dots in --with options.
- pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
+ pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)])
dnl By default, look in $includedir and $libdir.
use_additional=yes
AC_LIB_WITH_FINAL_PREFIX([
@@ -207,6 +223,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
LTLIB[]NAME=
INC[]NAME=
LIB[]NAME[]_PREFIX=
+ dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
+ dnl computed. So it has to be reset here.
+ HAVE_LIB[]NAME=
rpathdirs=
ltrpathdirs=
names_already_handled=
@@ -226,7 +245,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
names_already_handled="$names_already_handled $name"
dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
dnl or AC_LIB_HAVE_LINKFLAGS call.
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
eval value=\"\$HAVE_LIB$uppername\"
if test -n "$value"; then
if test "$value" = yes; then
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
index 3bdc0fc..007aa05 100644
--- a/m4/lib-prefix.m4
+++ b/m4/lib-prefix.m4
@@ -1,5 +1,5 @@
-# lib-prefix.m4 serial 6 (gettext-0.18)
-dnl Copyright (C) 2001-2005, 2008 Free Software Foundation, Inc.
+# lib-prefix.m4 serial 7 (gettext-0.18)
+dnl Copyright (C) 2001-2005, 2008-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -206,6 +206,9 @@ sixtyfour bits
if test -d "$searchdir"; then
case "$searchdir" in
*/lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
*) searchdir=`cd "$searchdir" && pwd`
case "$searchdir" in
*/lib64 ) acl_libdirstem=lib64 ;;
diff --git a/m4/localcharset.m4 b/m4/localcharset.m4
new file mode 100644
index 0000000..8010379
--- /dev/null
+++ b/m4/localcharset.m4
@@ -0,0 +1,17 @@
+# localcharset.m4 serial 7
+dnl Copyright (C) 2002, 2004, 2006, 2009-2012 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_LOCALCHARSET],
+[
+ dnl Prerequisites of lib/localcharset.c.
+ AC_REQUIRE([AM_LANGINFO_CODESET])
+ AC_REQUIRE([gl_FCNTL_O_FLAGS])
+ AC_CHECK_DECLS_ONCE([getc_unlocked])
+
+ dnl Prerequisites of the lib/Makefile.am snippet.
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_GLIBC21])
+])
diff --git a/man/ditroff.man b/man/ditroff.man
index 91efa39..af1ec44 100644
--- a/man/ditroff.man
+++ b/man/ditroff.man
@@ -3,9 +3,9 @@ ditroff.man
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2001, 2002, 2004, 2007, 2008, 2009
+Copyright (C) 2001, 2002, 2004, 2007-2009, 2012
Free Software Foundation, Inc.
-written by Bernd Warken <bwarken@mayn.de>
+written by Bernd Warken <groff-bernd.warken-72@web.de>
maintained by Werner Lemberg <wl@gnu.org>
Permission is granted to copy, distribute and/or modify this document
@@ -63,16 +63,14 @@ In 1979, Brian Kernighan rewrote troff to support more devices by
creating an intermediate output format for troff that can be fed into
postprocessor programs which actually do the printout on the device.
.
-Kernighan's version marks what is known as
+Kernighan's version marks what is known as
.I classical troff
today.
.
In order to distinguish it from Ossanna's original mono-device version,
it was called
.I ditroff
-(\c
-.IR d\/ "evice " i\/ "ndependent " troff\/\c
-)
+.RI ( d "evice " i "ndependent " troff )
on some systems, though this naming isn't mentioned in the classical
documentation.
.
@@ -82,7 +80,7 @@ troff.
.
The distinction between
.I troff
-and
+and
.I ditroff
isn't necessary any longer, for each modern
.I troff
@@ -127,7 +125,7 @@ Bell Labs CSTR\~#54
by
.I Brian Kernighan
is the original documentation of the first multi-device troff
-.RI ( ditroff\/ ),
+.RI ( ditroff ),
see
.UR http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr/\:97.ps.gz
Bell Labs CSTR\~#97
@@ -156,7 +154,7 @@ multi-devicing.
.SH "AUTHORS"
.\" --------------------------------------------------------------------
.
-Copyright (C) 2001, 2002, 2004, 2007, 2008, 2009
+Copyright (C) 2001, 2002, 2004, 2007\-2009, 2012
Free Software Foundation, Inc.
.
.P
@@ -175,7 +173,7 @@ This document is part of
the GNU roff distribution.
.
It was written by
-.MT bwarken@\:mayn.de
+.MT groff-bernd.warken-72@\:web.de
Bernd Warken
.ME
and is maintained by
diff --git a/man/groff.man b/man/groff.man
index 8ec260c..e138a8e 100644
--- a/man/groff.man
+++ b/man/groff.man
@@ -4,10 +4,9 @@ groff.man
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010
+Copyright (C) 2000-2010, 2012
Free Software Foundation, Inc.
-written by Bernd Warken <bwarken@mayn.de>
+written by Bernd Warken <groff-bernd.warken-72@web.de>
maintained by Werner Lemberg <wl@gnu.org>
Permission is granted to copy, distribute and/or modify this document
@@ -118,7 +117,7 @@ FDL in the main directory of the groff source package.
.\" Result : prints \name[arg], where `name' is in CB, `arg' in I
.\"
.de ESC[]
-. Text "\f[CB]\[rs]\\$1\[lB]\f[]\f[I]\\$2\f[]\f[CB]\[rB]\f[]"
+. Text "\f[CB]\[rs]\\$1\[lB]\f[]\,\f[I]\\$2\/\f[]\f[CB]\[rB]\f[]"
..
.\" ---------------------------------------------------------------------
.\" .ESCq name arg
@@ -130,7 +129,7 @@ FDL in the main directory of the groff source package.
.\" Result : prints \name'arg', where `name' is in CB, `arg' in I
.\"
.de ESCq
-. Text "\f[CB]\[rs]\\$1\[cq]\f[]\f[I]\\$2\f[]\f[CB]\[cq]\f[]"
+. Text "\f[CB]\[rs]\\$1\[cq]\f[]\,\f[I]\\$2\/\f[]\f[CB]\[cq]\f[]"
..
.\" ---------------------------------------------------------------------
.\" .ESC? arg
@@ -141,7 +140,7 @@ FDL in the main directory of the groff source package.
.\" Result : prints `\?arg?', where the `?' are in CB, `arg' in I
.\"
.de ESC?
-. Text "\f[CB]\[rs]?\f[I]\\$1\f[CB]?\f[R]"
+. Text "\f[CB]\[rs]?\,\f[I]\\$1\/\f[CB]?\f[R]"
..
.\" ---------------------------------------------------------------------
.\" .esc name [punct]
@@ -166,7 +165,7 @@ FDL in the main directory of the groff source package.
.\" `name' is in B, `arg' in I
.\"
.de escarg
-. Text \f[B]\[rs]\\$1\f[]\f[I]\\$2\f[]\\$3
+. Text \f[B]\[rs]\\$1\f[]\,\f[I]\\$2\/\f[]\\$3
..
.\" ---------------------------------------------------------------------
.\" .esc[] name arg [punct]
@@ -178,7 +177,7 @@ FDL in the main directory of the groff source package.
.\" Result : prints \name[arg], where `name' is in CB, `arg' in CI
.\"
.de esc[]
-. Text \f[B]\[rs]\\$1\[lB]\f[]\f[I]\\$2\f[]\f[B]\[rB]\f[]\\$3
+. Text \f[CB]\[rs]\\$1\[lB]\f[]\,\f[CI]\\$2\/\f[]\f[CB]\[rB]\f[]\\$3
..
.
.\" ---------------------------------------------------------------------
@@ -191,7 +190,7 @@ FDL in the main directory of the groff source package.
.\" Result : prints \name'arg', where `name' is in CB, `arg' in CI
.\"
.de escq
-. Text \f[B]\[rs]\\$1\[cq]\f[]\f[I]\\$2\f[]\f[B]\[cq]\f[]\\$3
+. Text \f[CB]\[rs]\\$1\[cq]\f[]\,\f[CI]\\$2\/\f[]\f[CB]\[cq]\f[]\\$3
..
.
.\" --------- strings ---------
@@ -344,7 +343,7 @@ operating mode, called the
.BR "copy mode" .
.
.P
-The copy mode behavior can be quite tricky, but there are some rules
+The copy mode behaviour can be quite tricky, but there are some rules
that ensure a safe usage.
.
.IP 1.
@@ -541,11 +540,7 @@ and
.request while .
There it is the control character that introduces a request (or macro).
.
-The special behavior can be delayed by using the
-.esc .
-escape.
-.
-By using the
+By using the
.request cc
request, the control character can be set to a different character,
making the dot
@@ -567,7 +562,7 @@ non-breaking control character.
That means that it introduces a request like the dot, but with the
additional property that this request doesn't cause a linebreak.
.
-By using the
+By using the
.request c2
request, the non-break control character can be set to a different
character.
@@ -624,7 +619,7 @@ The open parenthesis is only special in escape sequences when
introducing an escape name or argument consisting of exactly two
characters.
.
-In groff, this behavior can be replaced by the \f[CB][]\f[] construct.
+In groff, this behaviour can be replaced by the \f[CB][]\f[] construct.
.TP
\&\f[CB][\f[]
The opening bracket is only special in groff escape sequences; there
@@ -828,21 +823,21 @@ added the following operators for numerical expressions:
.RS
.
.TPx
-\f[I]e1\f[CB]>?\f[I]e2\f[R]
+\f[I]e1\/\f[CB]>?\,\f[I]e2\f[R]
The maximum of
.I e1
and
.IR e2 .
.
.TPx
-\f[I]e1\f[CB]<?\f[I]e2\f[R]
+\f[I]e1\/\f[CB]<?\,\f[I]e2\f[R]
The minimum of
.I e1
and
.IR e2 .
.
.TPx
-\f[CB](\f[I]c\f[CB];\f[I]e\f[CB])\f[R]
+\f[CB](\,\f[I]c\/\f[CB];\,\f[I]e\/\f[CB])\f[R]
Evaluate
.I e
using
@@ -883,7 +878,7 @@ yields true if its value is greater than\~0.
.TPx
.BI ! N
True if the value of
-.I I
+.I N
is\~0 (see below).
.
.TPx
@@ -1079,7 +1074,7 @@ Begin line adjustment for output lines in current adjust mode.
.REQ .ad "c"
Start line adjustment in mode
.I c
-(\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,r,b,n\f[]).
+(\f[CI]c\/\f[]\f[CR]\|\^\[eq]\|l,r,c,b,n\f[]).
.
.TPx
.REQ .af "register c"
@@ -1087,7 +1082,7 @@ Assign format
.I c
to
.I register
-(\f[CI]c\f[]\f[CR]\|\^\[eq]\|l,i,I,a,A\f[]).
+(\f[CI]c\/\f[]\f[CR]\|\^\[eq]\|l,i,I,a,A\f[]).
.
.TPx
.REQ .aln "alias register"
@@ -1183,7 +1178,7 @@ Print a backtrace of the input on stderr.
Embolden
.I font
by
-.IR N -1
+.IR N \\-1
units.
.
.TPx
@@ -1907,7 +1902,7 @@ Change to the previous value of additional intra-line skip.
Set additional intra-line skip value to
.IR N ,
i.e.,
-.IR N -1
+.IR N \\-1
blank lines are inserted after each text output line.
.
.TPx
@@ -2660,12 +2655,12 @@ except that the terminating newline is ignored as well.
.\" --------- strings ---------
.
.TP
-.ESC *\f[I]s\f[]
+.ESC * s
The string stored in the string variable with one-character name\~\c
.IR s .
.
.TP
-.ESC *(\f[I]st\f[]
+.ESC *( st
The string stored in the string variable with two-character name
.IR st .
.
@@ -2769,7 +2764,9 @@ the underline character.
.
.TP
.ESC .
-An uninterpreted dot (period), even at start of line.
+The same as a dot (`.').
+Necessary in nested macro definitions so that `\[rs]\[rs]..' expands to
+`..'.
.
.TP
.ESC %
@@ -3455,7 +3452,7 @@ decoration is not part of the register name.
.\" --------------------------------------------------------------------
.
The following registers have predefined values that should not be
-modified by the user (usually, registers starting with a dot a
+modified by the user (usually, registers starting with a dot are
read-only).
.
Mostly, they provide information on the current settings or store
@@ -3466,7 +3463,7 @@ results from request calls.
.
.TPx
.REG $$
-The process ID of
+The process ID of
.BR troff .
.
.TPx
@@ -3635,7 +3632,7 @@ Positive if last output line contains
.REG .j
The current adjustment mode.
It can be stored and used to set adjustment.
-(n=1, b=1, l=0, r=5, c=3).
+(n\ =\ 1, b\ =\ 1, l\ =\ 0, r\ =\ 5, c\ =\ 3).
.
.TPx
.REG .k
@@ -3895,11 +3892,11 @@ Height of last completed diversion.
.
.TPx
.REG dw
-Current day of week (1-7).
+Current day of week (1\(en7).
.
.TPx
.REG dy
-Current day of month (1-31).
+Current day of month (1\(en31).
.
.TPx
.REG hours
@@ -3944,7 +3941,7 @@ Initialized at start-up.
.
.TPx
.REG mo
-Current month (1-12).
+Current month (1\(en12).
.
.TPx
.REG nl
@@ -4080,7 +4077,7 @@ be reproduced, and say which version of groff you are using.
.SH AUTHORS
.\" --------------------------------------------------------------------
.
-Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+Copyright (C) 2000\(en2010, 2012
Free Software Foundation, Inc.
.
.P
@@ -4099,7 +4096,7 @@ This document is part of
the GNU roff distribution.
.
It was written by
-.MT bwarken@mayn.de
+.MT groff-bernd.warken-72@web.de
Bernd Warken
.ME ;
it is maintained by
diff --git a/man/groff_char.man b/man/groff_char.man
index e077aa4..167ccde 100644
--- a/man/groff_char.man
+++ b/man/groff_char.man
@@ -1,4 +1,5 @@
-.TH GROFF_CHAR @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.\" t
+.TH GROFF_CHAR @MAN7EXT@ "@MDATE@" "@VERSION@"
.SH NAME
groff_char \- groff glyph names
.SH DESCRIPTION
@@ -18,10 +19,11 @@ This file is part of groff (GNU roff).
File position: <groff_src_top>/man/groff_char.man
-Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009
+Copyright (C) 1989-2004, 2006-2009, 2012
Free Software Foundation, Inc.
written by Werner Lemberg <wl@gnu.org>
-with additions by Bernd Warken <bwarken@mayn.de>
+with additions by Bernd Warken <groff-bernd.warken-72@web.de>
+revised to use real tables by Eric S. Raymond <esr@thyrsus.com>
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -32,9 +34,13 @@ Front-Cover Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
..
+.ig
+A copy of the GNU Free Documentation License is also available in this
+Debian package as /usr/share/doc/groff/copyright.
+..
.
.\" --------------------------------------------------------------------
-.\" Setup Part 1
+.\" Setup
.\" --------------------------------------------------------------------
.
.do nr groff_char_C \n[.C]
@@ -49,306 +55,10 @@ FDL in the main directory of the groff source package.
.\" non-groff
.if !\n(.g .if '\(aq'' .ds aq \'
.
-.\" groff
-.if !\n(.g .ig
-. tr \[aq]\[aq]
-. if !c\[aq] \
-. ds aq \'
-. \" This is very special. The standard devdvi fonts don't have a
-. \" real `aq' glyph; it is defined with .char to be ' instead.
-. \" The .tr request below in the definition of the C macro maps
-. \" the apostrophe ' onto the `aq' glyph which would cause a
-. \" recursive loop. gtroff prevents this within the .char
-. \" request, trying to access glyph `aq' directly from the font.
-. \" Consequently, we get a warning, and nothing is printed.
-. \"
-. \" The following line prevents this.
-. if '\*[.T]'dvi' \
-. if !r ECFONTS \
-. ds aq \'
-. \" The same is true for X
-. ds dev \*[.T]
-. substring dev 0 0
-. if '\*[dev]'X' .ds aq \'
-. ig
-..
-.
-.\" --------------------------------------------------------------------
-.\" .Ac accented-char accent char (groff)
-.
-.if !\n(.g .ig
-.de Ac
-. if !c\\$1 \{\
-. ie c\\$2 \
-. char \\$1 \
-\k[acc]\
-\h'\w'\\$3'u'\
-\h'(u;-\w'\\$2'-\w'\\$3'/2+\\\\n[skw]+(\w'x'*0)-\\\\n[skw])'\
-\v'(u;\w'x'*0+\\\\n[rst]+(\w'\\$3'*0)-\\\\n[rst])'\
-\\$2\
-\v'(u;\w'x'*0-\\\\n[rst]+(\w'\\$3'*0)+\\\\n[rst])'\
-\h'|\\\\n[acc]u'\
-\\$3
-. el \
-. char \\$1 \\$3
-. hcode \\$1 \\$3
-. \}
-..
-.
-.\" --------------------------------------------------------------------
-.\" Setup Part 2
-.\" --------------------------------------------------------------------
-.
.nr Sp 2n
.
-.\" --------------------------------------------------------------------
-.\" .C2/.CN (groff)
-.
-.if !\n(.g .ig
-.de CN
-. C \e[\\$1] "" \[\\$1] \\$2 "\\$3" "\\$4"
-..
-.
-.\" .Ns (groff) start .CN block
-.
-.if !\n(.g .ig
-.de Ns
-. CN "\\$1" "\\$2" "\\$3" "\\$4"
-. if !\n[cR] \
-. wh (\\n[nl]u + \\n[.t]u - \\n[.V]u) Fo
-..
-.
-.\" .Ne (groff) end .CN block
-.
-.if !\n(.g .ig
-.de Ne
-. ch Fo
-. CN "\\$1" "\\$2" "\\$3" "\\$4"
-..
-.
-.if \n(.g \{\
-. als C2 CN
-. als 2s Ns
-. als 2e Ne
-.\}
-.
-.\" --------------------------------------------------------------------
-.\" .C2 (non-groff)
-.
-.if \n(.g .ig
-.de C2
-. C \e(\\$1 "" \\(\\$1 \\$2 "\\$3" "\\$4"
-..
-.
-.\" .2s (non-groff) start .C2 block
-.
-.if \n(.g .ig
-.de 2s
-. C2 "\\$1" "\\$2" "\\$3" "\\$4"
-. if !\n(cR \
-. wh \\n(nlu+\\n(.tu-\\n(.Vu Fo
-..
-.
-.\" .2e (non-groff) end .C2 block
-.
-.if \n(.g .ig
-.de 2e
-. ch Fo
-. C2 "\\$1" "\\$2" "\\$3" "\\$4"
-..
-.
-.\" --------------------------------------------------------------------
-.\" .CD (groff)
-.
-.if !\n(.g .ig
-.de CD
-. C \[char\\$1] \\$1 \[char\\$1] \\$2 "\\$3" "\\$4" 1
-..
-.
-.\" .Ds (groff) start .CD block
-.
-.if !\n(.g .ig
-.de Ds
-. CD "\\$1" "\\$2" "\\$3" "\\$4"
-. if !\n[cR] \
-. wh (\\n[nl]u + \\n[.t]u - \\n[.V]u) Fo
-..
-.
-.\" .De (groff) end .CD block
-.
-.if !\n(.g .ig
-.de De
-. ch Fo
-. CD "\\$1" "\\$2" "\\$3" "\\$4"
-..
-.
-.\" --------------------------------------------------------------------
-.
.do if !r ECFONTS .do fspecial CR R
.
-.\" .CT
-.
-.de CT
-. nr c1 \w'\\$1'
-. if \\n(c1 \
-. nr c1 +\\n(Spu
-. nr c2 \\n(c1+\w'\\$2'
-. if \\n(c1<\\n(c2 \
-. nr c2 +\\n(Spu
-. nr c3 \\n(c2+\w'\\$3'
-. if \\n(c2<\\n(c3 \
-. nr c3 +\\n(Spu
-. nr c4 \\n(c3+\w'\\$4'
-. if \\n(c3<\\n(c4 \
-. nr c4 +\\n(Spu
-. nr c5 \\n(c4+\w'\\$5'
-. if \\n(c4<\\n(c5 \
-. nr c5 +\\n(Spu
-..
-.
-.\" .CL
-.
-.de CL
-\\$1\c
-\h'\\n(c1u-\\n(.ku'\\$2\c
-\h'\\n(c2u-\\n(.ku'\\$3\c
-\h'\\n(c3u-\\n(.ku'\\$4\c
-\h'\\n(c4u-\\n(.ku'\\$5\c
-\h'\\n(c5u-\\n(.ku'\\$6
-. br
-..
-.
-.\" --------------------------------------------------------------------
-.\" input-name decimal-code output-name ps-name unicode description is-char
-.\" .C (groff)
-.
-.if !\n(.g .ig
-.de C
-. nr CH 1
-. if \\$7 \
-. if !c\\$1 \
-. nr CH 0
-. ie !\\n[CH] \
-. ds CH
-. el \{\
-. ft CR
-. tr `\`'\*[aq]
-. in 0
-. di CH
-. nop \&\\$1
-. br
-. di
-. chop CH
-. in
-. ft
-. ds CH \\*[CH]
-. tr ``''
-. \}
-. di CC
-. ie c\\$3 \{\
-. nop \\&\\$3\c
-. \" The \x values assure that oversized symbols don't
-. \" overlap vertically. The constant 1.5p is heuristic.
-. nop \x'(\w'('*0 - ((\\n[.cht]u - \\n[rst]u - 1.5p) >? 0))'\c
-. nop \x'((\\n[.cdp]u + \\n[rsb]u - 1.5p) >? 0)'\c
-. nop \h'(\\n[c1]u - \\n[.k]u)'\\*[CH]\c
-. nop \h'(\\n[c2]u - \\n[.k]u)'\\$2\c
-. \}
-. el \{\
-. nop (N/A)\c
-. nop \h'(\\n[c1]u - \\n[.k]u)'\\*[CH]\c
-. \}
-. nop \h'(\\n[c3]u - \\n[.k]u)'\\$4\c
-. nop \h'(\\n[c4]u - \\n[.k]u)'\\$5\c
-. br
-. di
-. \" we move upwards later on so force a page break now if necessary
-. if (\\n[dn] >= \\n[.t]) \
-. bp
-. mk C1
-. in 0
-. CC
-. in
-. \" allow multiple lines for last column
-. in +\\n[c5]u
-. mk C2
-. sp |\\n[C1]u
-. nr PN \\n[%]
-. ad l
-. nop \\$6
-. ad b
-. in
-. if (\\n[PN] == \\n[%]) \
-. if (\\n[nl] < \\n[C2]) \
-. sp |\\n[C2]u
-..
-.
-.\" --------------------------------------------------------------------
-.\" .C (non-groff)
-.
-.if \n(.g .ig
-.de C
-. ft B
-. tr `\`'\*(aq
-. in 0
-. di CH
-\&\\$1
-. br
-. di
-. in
-. ft
-. ds CH \\*(CH\
-. tr ``''
-. di CC
-. ie !'\\$3'' \{\
-\&\\$3\c
-\h'\\n(c1u-\\n(.ku)'\\*(CH\c
-\h'\\n(c2u-\\n(.ku)'\\$2\c
-\h'\\n(c3u-\\n(.ku)'\\$4\c
-. \}
-. el \{\
-(N/A)\c
-\h'\\n(c1u-\\n(.ku)'\\*(CH\c
-\h'\\n(c3u-\\n(.ku)'\\$4\c
-. \}
-\h'\\n(c4u-\\n(.ku)'\\$5\c
-\h'\\n(c5u-\\n(.ku)'\\$6
-. br
-. di
-. \" we move upwards later on so force a page break now if necessary
-. if \\n(dn>=\\n(.t \
-. bp
-. mk C1
-. in 0
-. CC
-. in
-. \" allow multiple lines for last column
-. in +\\n(c5u
-. mk C2
-. sp |\\n(C1u
-. nr PN \\n%
-. ad l
-\\$6
-. ad b
-. in
-. if \\n(PN==\\n% \
-. if \\n(nl<\\n(C2 \
-. sp |\\n(C2u
-..
-.
-.\" --------------------------------------------------------------------
-.
-.de Fo
-' bp
-. He
-..
-.
-.de Pa
-. P
-. ne 3
-..
-.
-.
.
.\" --------------------------------------------------------------------
.\" .SH DESCRIPTION
@@ -372,7 +82,7 @@ is being used to print or view this manual page are marked with
.
.
.P
-In the actual version,
+In the actual version,
.B groff
provides only \%8-bit characters for direct input and named entities
for further glyphs.
@@ -442,13 +152,13 @@ represents the same glyph.
.
.
.TP
-.I "Input name"
+.I "Input"
specifies how the glyph is input either directly by a key on the
keyboard, or by a groff escape sequence.
.
.
.TP
-.I "Input code"
+.I "Code"
applies to glyphs which can be input with a single character, and
gives the ISO \%latin1 decimal code of that input character.
.
@@ -457,18 +167,18 @@ including \%7-bit ASCII in the range 0 to\ 127.
.
.
.TP
-.I "PostScript name"
+.I "PostScript"
gives the usual PostScript name of the glyph.
.
.
.TP
-.I "Unicode decomposed"
+.I "Unicode"
is the glyph name used in composite glyph names.
.
.
.
.\" --------------------------------------------------------------------
-.SS "7-bit Character Codes 32-126"
+.SS "7-bit Character Codes 32\(en126"
.\" --------------------------------------------------------------------
.
These are the basic glyphs having 7-bit ASCII code values assigned.
@@ -504,7 +214,7 @@ Upper case letters A\-Z (print as themselves).
.
.TP
97\-122
-Lower case letters a\-z (print as themselves).
+Lower case letters a\(enz (print as themselves).
.
.
.P
@@ -543,49 +253,43 @@ usable as a diacritic; a larger glyph can be obtained with `\f(CW\e(ha\fP'.
.
.
.P
-.CT "\fIOutput" "\fIInput" "\fIInput" "bracketright" "decomposed"
-.de He
-. P
-. ne 4
-. ft I
-. CL "Output" "Input" "Input" "PostScript" "Unicode" "Notes"
-. CL "" "name" "code" "name" "decomposed" ""
-. ft
-. P
-..
-.He
-.Ds 33 exclam u0021
-.CD 34 quotedbl u0022
-.CD 35 numbersign u0023
-.CD 36 dollar u0024
-.CD 37 percent u0025
-.CD 38 ampersand u0026
-.CD 39 quoteright u0027
-.CD 40 parenleft u0028
-.CD 41 parenright u0029
-.CD 42 asterisk u002A
-.CD 43 plus u002B
-.CD 44 comma u002C
-.CD 45 hyphen u2010
-.CD 46 period u002E
-.CD 47 slash u002F
-.CD 58 colon u003A
-.CD 59 semicolon u003B
-.CD 60 less u003C
-.CD 61 equal u003D
-.CD 62 greater u003E
-.CD 63 question u003F
-.CD 64 at u0040
-.CD 91 bracketleft u005B
-.CD 92 backslash u005C
-.CD 93 bracketright u005D
-.CD 94 circumflex u005E "circumflex accent"
-.CD 95 underscore u005F
-.CD 96 quoteleft u0060
-.CD 123 braceleft u007B
-.CD 124 bar u007C
-.CD 125 braceright u007D
-.De 126 tilde u007E "tilde accent"
+.TS
+l l l l l l.
+Output Input Code PostScript Unicode Notes
+_
+\[char33] \[char33] 33 exclam u0021
+\[char34] \[char34] 34 quotedbl u0022
+\[char35] \[char35] 35 numbersign u0023
+\[char36] \[char36] 36 dollar u0024
+\[char37] \[char37] 37 percent u0025
+\[char38] \[char38] 38 ampersand u0026
+\[char39] \[char39] 39 quoteright u0027
+\[char40] \[char40] 40 parenleft u0028
+\[char41] \[char41] 41 parenright u0029
+\[char42] \[char42] 42 asterisk u002A
+\[char43] \[char43] 43 plus u002B
+\[char44] \[char44] 44 comma u002C
+\[char45] \[char45] 45 hyphen u2010
+\[char46] \[char46] 46 period u002E
+\[char47] \[char47] 47 slash u002F
+\[char58] \[char58] 58 colon u003A
+\[char59] \[char59] 59 semicolon u003B
+\[char60] \[char60] 60 less u003C
+\[char61] \[char61] 61 equal u003D
+\[char62] \[char62] 62 greater u003E
+\[char63] \[char63] 63 question u003F
+\[char64] \[char64] 64 at u0040
+\[char91] \[char91] 91 bracketleft u005B
+\[char92] \[char92] 92 backslash u005C
+\[char93] \[char93] 93 bracketright u005D
+\[char94] \[char94] 94 circumflex u005E circumflex accent
+\[char95] \[char95] 95 underscore u005F
+\[char96] \[char96] 96 quoteleft u0060
+\[char123] \[char123] 123 braceleft u007B
+\[char124] \[char124] 124 bar u007C
+\[char125] \[char125] 125 braceright u007D
+\[char126] \[char126] 126 tilde u007E tilde accent
+.TE
.
.
.\" --------------------------------------------------------------------
@@ -600,7 +304,7 @@ code set, being identical to the Unicode range
.
.
.P
-Input characters in range 128-159 (on non-EBCDIC hosts) are not printable
+Input characters in range 128\-159 (on non-EBCDIC hosts) are not printable
characters.
.
.
@@ -631,102 +335,105 @@ with a \%latin1 code page, it is better to use their glyph names;
see next section.
.
.P
-.CT "\fIOutput" "\fIInput" "\fIInput" "guillemotright" "decomposed"
-.He
-.Ds 161 exclamdown u00A1 "inverted exclamation mark"
-.CD 162 cent u00A2
-.CD 163 sterling u00A3
-.CD 164 currency u00A4
-.CD 165 yen u00A5
-.CD 166 brokenbar u00A6
-.CD 167 section u00A7
-.CD 168 dieresis u00A8
-.CD 169 copyright u00A9
-.CD 170 ordfeminine u00AA
-.CD 171 guillemotleft u00AB
-.CD 172 logicalnot u00AC
-.CD 174 registered u00AE
-.CD 175 macron u00AF
-.CD 176 degree u00B0
-.CD 177 plusminus u00B1
-.CD 178 twosuperior u00B2
-.CD 179 threesuperior u00B3
-.CD 180 acute u00B4 "acute accent"
-.CD 181 mu u00B5 "micro sign"
-.CD 182 paragraph u00B6
-.CD 183 periodcentered u00B7
-.CD 184 cedilla u00B8
-.CD 185 onesuperior u00B9
-.CD 186 ordmasculine u00BA
-.CD 187 guillemotright u00BB
-.CD 188 onequarter u00BC
-.CD 189 onehalf u00BD
-.CD 190 threequarters u00BE
-.CD 191 questiondown u00BF
-.CD 192 Agrave u0041_0300
-.CD 193 Aacute u0041_0301
-.CD 194 Acircumflex u0041_0302
-.CD 195 Atilde u0041_0303
-.CD 196 Adieresis u0041_0308
-.CD 197 Aring u0041_030A
-.CD 198 AE u00C6
-.CD 199 Ccedilla u0043_0327
-.CD 200 Egrave u0045_0300
-.CD 201 Eacute u0045_0301
-.CD 202 Ecircumflex u0045_0302
-.CD 203 Edieresis u0045_0308
-.CD 204 Igrave u0049_0300
-.CD 205 Iacute u0049_0301
-.CD 206 Icircumflex u0049_0302
-.CD 207 Idieresis u0049_0308
-.CD 208 Eth u00D0
-.CD 209 Ntilde u004E_0303
-.CD 210 Ograve u004F_0300
-.CD 211 Oacute u004F_0301
-.CD 212 Ocircumflex u004F_0302
-.CD 213 Otilde u004F_0303
-.CD 214 Odieresis u004F_0308
-.CD 215 multiply u00D7
-.CD 216 Oslash u00D8
-.CD 217 Ugrave u0055_0300
-.CD 218 Uacute u0055_0301
-.CD 219 Ucircumflex u0055_0302
-.CD 220 Udieresis u0055_0308
-.CD 221 Yacute u0059_0301
-.CD 222 Thorn u00DE
-.CD 223 germandbls u00DF
-.CD 224 agrave u0061_0300
-.CD 225 aacute u0061_0301
-.CD 226 acircumflex u0061_0302
-.CD 227 atilde u0061_0303
-.CD 228 adieresis u0061_0308
-.CD 229 aring u0061_030A
-.CD 230 ae u00E6
-.CD 231 ccedilla u0063_0327
-.CD 232 egrave u0065_0300
-.CD 233 eacute u0065_0301
-.CD 234 ecircumflex u0065_0302
-.CD 235 edieresis u0065_0308
-.CD 236 igrave u0069_0300
-.CD 237 iacute u0069_0301
-.CD 238 icircumflex u0069_0302
-.CD 239 idieresis u0069_0308
-.CD 240 eth u00F0
-.CD 241 ntilde u006E_0303
-.CD 242 ograve u006F_0300
-.CD 243 oacute u006F_0301
-.CD 244 ocircumflex u006F_0302
-.CD 245 otilde u006F_0303
-.CD 246 odieresis u006F_0308
-.CD 247 divide u00F7
-.CD 248 oslash u00F8
-.CD 249 ugrave u0075_0300
-.CD 250 uacute u0075_0301
-.CD 251 ucircumflex u0075_0302
-.CD 252 udieresis u0075_0308
-.CD 253 yacute u0079_0301
-.CD 254 thorn u00FE
-.De 255 ydieresis u0079_0308
+.TS
+l l l l l l.
+Output Input Code PostScript Unicode Notes
+_
+\[char161] \[char161] 161 exclamdown u00A1 inverted exclamation mark
+\[char162] \[char162] 162 cent u00A2
+\[char163] \[char163] 163 sterling u00A3
+\[char164] \[char164] 164 currency u00A4
+\[char165] \[char165] 165 yen u00A5
+\[char166] \[char166] 166 brokenbar u00A6
+\[char167] \[char167] 167 section u00A7
+\[char168] \[char168] 168 dieresis u00A8
+\[char169] \[char169] 169 copyright u00A9
+\[char170] \[char170] 170 ordfeminine u00AA
+\[char171] \[char171] 171 guillemotleft u00AB
+\[char172] \[char172] 172 logicalnot u00AC
+\[char174] \[char174] 174 registered u00AE
+\[char175] \[char175] 175 macron u00AF
+\[char176] \[char176] 176 degree u00B0
+\[char177] \[char177] 177 plusminus u00B1
+\[char178] \[char178] 178 twosuperior u00B2
+\[char179] \[char179] 179 threesuperior u00B3
+\[char180] \[char180] 180 acute u00B4 acute accent
+\[char181] \[char181] 181 mu u00B5 micro sign
+\[char182] \[char182] 182 paragraph u00B6
+\[char183] \[char183] 183 periodcentered u00B7
+\[char184] \[char184] 184 cedilla u00B8
+\[char185] \[char185] 185 onesuperior u00B9
+\[char186] \[char186] 186 ordmasculine u00BA
+\[char187] \[char187] 187 guillemotright u00BB
+\[char188] \[char188] 188 onequarter u00BC
+\[char189] \[char189] 189 onehalf u00BD
+\[char190] \[char190] 190 threequarters u00BE
+\[char191] \[char191] 191 questiondown u00BF
+\[char192] \[char192] 192 Agrave u0041_0300
+\[char193] \[char193] 193 Aacute u0041_0301
+\[char194] \[char194] 194 Acircumflex u0041_0302
+\[char195] \[char195] 195 Atilde u0041_0303
+\[char196] \[char196] 196 Adieresis u0041_0308
+\[char197] \[char197] 197 Aring u0041_030A
+\[char198] \[char198] 198 AE u00C6
+\[char199] \[char199] 199 Ccedilla u0043_0327
+\[char200] \[char200] 200 Egrave u0045_0300
+\[char201] \[char201] 201 Eacute u0045_0301
+\[char202] \[char202] 202 Ecircumflex u0045_0302
+\[char203] \[char203] 203 Edieresis u0045_0308
+\[char204] \[char204] 204 Igrave u0049_0300
+\[char205] \[char205] 205 Iacute u0049_0301
+\[char206] \[char206] 206 Icircumflex u0049_0302
+\[char207] \[char207] 207 Idieresis u0049_0308
+\[char208] \[char208] 208 Eth u00D0
+\[char209] \[char209] 209 Ntilde u004E_0303
+\[char210] \[char210] 210 Ograve u004F_0300
+\[char211] \[char211] 211 Oacute u004F_0301
+\[char212] \[char212] 212 Ocircumflex u004F_0302
+\[char213] \[char213] 213 Otilde u004F_0303
+\[char214] \[char214] 214 Odieresis u004F_0308
+\[char215] \[char215] 215 multiply u00D7
+\[char216] \[char216] 216 Oslash u00D8
+\[char217] \[char217] 217 Ugrave u0055_0300
+\[char218] \[char218] 218 Uacute u0055_0301
+\[char219] \[char219] 219 Ucircumflex u0055_0302
+\[char220] \[char220] 220 Udieresis u0055_0308
+\[char221] \[char221] 221 Yacute u0059_0301
+\[char222] \[char222] 222 Thorn u00DE
+\[char223] \[char223] 223 germandbls u00DF
+\[char224] \[char224] 224 agrave u0061_0300
+\[char225] \[char225] 225 aacute u0061_0301
+\[char226] \[char226] 226 acircumflex u0061_0302
+\[char227] \[char227] 227 atilde u0061_0303
+\[char228] \[char228] 228 adieresis u0061_0308
+\[char229] \[char229] 229 aring u0061_030A
+\[char230] \[char230] 230 ae u00E6
+\[char231] \[char231] 231 ccedilla u0063_0327
+\[char232] \[char232] 232 egrave u0065_0300
+\[char233] \[char233] 233 eacute u0065_0301
+\[char234] \[char234] 234 ecircumflex u0065_0302
+\[char235] \[char235] 235 edieresis u0065_0308
+\[char236] \[char236] 236 igrave u0069_0300
+\[char237] \[char237] 237 iacute u0069_0301
+\[char238] \[char238] 238 icircumflex u0069_0302
+\[char239] \[char239] 239 idieresis u0069_0308
+\[char240] \[char240] 240 eth u00F0
+\[char241] \[char241] 241 ntilde u006E_0303
+\[char242] \[char242] 242 ograve u006F_0300
+\[char243] \[char243] 243 oacute u006F_0301
+\[char244] \[char244] 244 ocircumflex u006F_0302
+\[char245] \[char245] 245 otilde u006F_0303
+\[char246] \[char246] 246 odieresis u006F_0308
+\[char247] \[char247] 247 divide u00F7
+\[char248] \[char248] 248 oslash u00F8
+\[char249] \[char249] 249 ugrave u0075_0300
+\[char250] \[char250] 250 uacute u0075_0301
+\[char251] \[char251] 251 ucircumflex u0075_0302
+\[char252] \[char252] 252 udieresis u0075_0308
+\[char253] \[char253] 253 yacute u0079_0301
+\[char254] \[char254] 254 thorn u00FE
+\[char255] \[char255] 255 ydieresis u0079_0308
+.TE
.
.
.\" --------------------------------------------------------------------
@@ -750,13 +457,13 @@ A glyph having the 2-character name
.IR ch .
.
.TP
-\f(CW\e[\fP\fIchar_name\fP\f(CW]\fP
+\f(CW\e[\fP\,\fIchar_name\/\fP\f(CW]\fP
A glyph having the name
.I char_name
(having length 1, 2, 3, .\|.\|.).
.
Note that `\fIc\fP' is not the same as
-`\f(CW\e[\fP\fIc\fP\f(CW]\fP' (\fIc\fP\ a single character):
+`\f(CW\e[\fP\,\fIc\/\fP\f(CW]\fP' (\,\fIc\fP\ a single character):
The latter is internally mapped to glyph name `\e\fIc\fP'.
.
By default, groff defines a single glyph name starting with a backslash,
@@ -764,13 +471,13 @@ namely \%`\e-', which can be either accessed as `\f(CW\e\-\fP' or
`\f(CW\e[-]\fP'.
.
.TP
-\f(CW\e[\fP\fIbase_glyph composite_1 composite_2 .\|.\|.\fP\f(CW]\fP
+\f(CW\e[\fP\,\fIbase_glyph composite_1 composite_2 .\|.\|.\/\fP\f(CW]\fP
A composite glyph; see below for a more detailed description.
.
.
.P
In groff, each \%8-bit input character can also referred to by the construct
-`\f(CW\e[char\fP\fIn\fP\f(CW]\fP' where
+`\f(CW\e[char\fP\,\fIn\/\fP\f(CW]\fP' where
.I n
is the decimal code of the character, a number between 0 and\ 255
without leading zeros (those entities are
@@ -797,109 +504,113 @@ unusable in normal text.
.
.
.P
-.CT "\fIOutput" "\f(CW\e[-D]" "" "Ocircumflex" "u0066_0066_006C"
-.de He
-. P
-. ne 4
-. ft I
-. CL "Output" "Input" "" "PostScript" "Unicode" "Notes"
-. CL "" "name" "" "name" "decomposed" ""
-. ft
-. P
-..
-.He
-.2s -D Eth u00D0 "uppercase eth"
-.C2 Sd eth u00F0 "lowercase eth"
-.C2 TP Thorn u00DE "uppercase thorn"
-.C2 Tp thorn u00FE "lowercase thorn"
-.2e ss germandbls u00DF "German sharp s"
-.
-.Pa
+.TS
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[-D] \e[-D] Eth u00D0 uppercase eth
+\[Sd] \e[Sd] eth u00F0 lowercase eth
+\[TP] \e[TP] Thorn u00DE uppercase thorn
+\[Tp] \e[Tp] thorn u00FE lowercase thorn
+\[ss] \e[ss] germandbls u00DF German sharp s
+.TE
+.
+.P
.I Ligatures and Other Latin Glyphs
.P
-.2s ff ff u0066_0066 "ff ligature +"
-.C2 fi fi u0066_0069 "fi ligature +"
-.C2 fl fl u0066_006C "fl ligature +"
-.C2 Fi ffi u0066_0066_0069 "ffi ligature +"
-.C2 Fl ffl u0066_0066_006C "ffl ligature +"
-.C2 /L Lslash u0141 "(Polish)"
-.C2 /l lslash u0142 "(Polish)"
-.C2 /O Oslash u00D8 "(Scandinavic)"
-.C2 /o oslash u00F8 "(Scandinavic)"
-.C2 AE AE u00C6
-.C2 ae ae u00E6
-.C2 OE OE u0152
-.C2 oe oe u0153
-.C2 IJ IJ u0132 "(Dutch)"
-.C2 ij ij u0133 "(Dutch)"
-.C2 .i dotlessi u0131 "(Turkish)"
-.2e .j dotlessj --- "j without a dot"
-.
-.Pa
+.TS
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[ff] \e[ff] ff u0066_0066 ff ligature +
+\[fi] \e[fi] fi u0066_0069 fi ligature +
+\[fl] \e[fl] fl u0066_006C fl ligature +
+\[Fi] \e[Fi] ffi u0066_0066_0069 ffi ligature +
+\[Fl] \e[Fl] ffl u0066_0066_006C ffl ligature +
+\[/L] \e[/L] Lslash u0141 (Polish)
+\[/l] \e[/l] lslash u0142 (Polish)
+\[/O] \e[/O] Oslash u00D8 (Scandinavian)
+\[/o] \e[/o] oslash u00F8 (Scandinavian)
+\[AE] \e[AE] AE u00C6
+\[ae] \e[ae] ae u00E6
+\[OE] \e[OE] OE u0152
+\[oe] \e[oe] oe u0153
+\[IJ] \e[IJ] IJ u0132 (Dutch)
+\[ij] \e[ij] ij u0133 (Dutch)
+\[.i] \e[.i] dotlessi u0131 (Turkish)
+\[.j] \e[.j] dotlessj u0237 j without a dot
+.TE
+.
+.P
.I Accented Characters
.P
-.2s 'A Aacute u0041_0301
-.C2 'C Cacute u0043_0301
-.C2 'E Eacute u0045_0301
-.C2 'I Iacute u0049_0301
-.C2 'O Oacute u004F_0301
-.C2 'U Uacute u0055_0301
-.C2 'Y Yacute u0059_0301
-.C2 'a aacute u0061_0301
-.C2 'c cacute u0063_0301
-.C2 'e eacute u0065_0301
-.C2 'i iacute u0069_0301
-.C2 'o oacute u006F_0301
-.C2 'u uacute u0075_0301
-.C2 'y yacute u0079_0301
-.C2 :A Adieresis u0041_0308 "A with umlaut"
-.C2 :E Edieresis u0045_0308
-.C2 :I Idieresis u0049_0308
-.C2 :O Odieresis u004F_0308
-.C2 :U Udieresis u0055_0308
-.C2 :Y Ydieresis u0059_0308
-.C2 :a adieresis u0061_0308
-.C2 :e edieresis u0065_0308
-.C2 :i idieresis u0069_0308
-.C2 :o odieresis u006F_0308
-.C2 :u udieresis u0075_0308
-.C2 :y ydieresis u0079_0308
-.C2 ^A Acircumflex u0041_0302
-.C2 ^E Ecircumflex u0045_0302
-.C2 ^I Icircumflex u0049_0302
-.C2 ^O Ocircumflex u004F_0302
-.C2 ^U Ucircumflex u0055_0302
-.C2 ^a acircumflex u0061_0302
-.C2 ^e ecircumflex u0065_0302
-.C2 ^i icircumflex u0069_0302
-.C2 ^o ocircumflex u006F_0302
-.C2 ^u ucircumflex u0075_0302
-.C2 `A Agrave u0041_0300
-.C2 `E Egrave u0045_0300
-.C2 `I Igrave u0049_0300
-.C2 `O Ograve u004F_0300
-.C2 `U Ugrave u0055_0300
-.C2 `a agrave u0061_0300
-.C2 `e egrave u0065_0300
-.C2 `i igrave u0069_0300
-.C2 `o ograve u006F_0300
-.C2 `u ugrave u0075_0300
-.C2 ~A Atilde u0041_0303
-.C2 ~N Ntilde u004E_0303
-.C2 ~O Otilde u004F_0303
-.C2 ~a atilde u0061_0303
-.C2 ~n ntilde u006E_0303
-.C2 ~o otilde u006F_0303
-.C2 vS Scaron u0053_030C
-.C2 vs scaron u0073_030C
-.C2 vZ Zcaron u005A_030C
-.C2 vz zcaron u007A_030C
-.C2 ,C Ccedilla u0043_0327
-.C2 ,c ccedilla u0063_0327
-.C2 oA Aring u0041_030A
-.2e oa aring u0061_030A
-.
-.Pa
+.TS
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\['A] \e['A] Aacute u0041_0301
+\['C] \e['C] Cacute u0043_0301
+\['E] \e['E] Eacute u0045_0301
+\['I] \e['I] Iacute u0049_0301
+\['O] \e['O] Oacute u004F_0301
+\['U] \e['U] Uacute u0055_0301
+\['Y] \e['Y] Yacute u0059_0301
+\['a] \e['a] aacute u0061_0301
+\['c] \e['c] cacute u0063_0301
+\['e] \e['e] eacute u0065_0301
+\['i] \e['i] iacute u0069_0301
+\['o] \e['o] oacute u006F_0301
+\['u] \e['u] uacute u0075_0301
+\['y] \e['y] yacute u0079_0301
+\[:A] \e[:A] Adieresis u0041_0308 A with umlaut
+\[:E] \e[:E] Edieresis u0045_0308
+\[:I] \e[:I] Idieresis u0049_0308
+\[:O] \e[:O] Odieresis u004F_0308
+\[:U] \e[:U] Udieresis u0055_0308
+\[:Y] \e[:Y] Ydieresis u0059_0308
+\[:a] \e[:a] adieresis u0061_0308
+\[:e] \e[:e] edieresis u0065_0308
+\[:i] \e[:i] idieresis u0069_0308
+\[:o] \e[:o] odieresis u006F_0308
+\[:u] \e[:u] udieresis u0075_0308
+\[:y] \e[:y] ydieresis u0079_0308
+\[^A] \e[^A] Acircumflex u0041_0302
+\[^E] \e[^E] Ecircumflex u0045_0302
+\[^I] \e[^I] Icircumflex u0049_0302
+\[^O] \e[^O] Ocircumflex u004F_0302
+\[^U] \e[^U] Ucircumflex u0055_0302
+\[^a] \e[^a] acircumflex u0061_0302
+\[^e] \e[^e] ecircumflex u0065_0302
+\[^i] \e[^i] icircumflex u0069_0302
+\[^o] \e[^o] ocircumflex u006F_0302
+\[^u] \e[^u] ucircumflex u0075_0302
+\[`A] \e[`A] Agrave u0041_0300
+\[`E] \e[`E] Egrave u0045_0300
+\[`I] \e[`I] Igrave u0049_0300
+\[`O] \e[`O] Ograve u004F_0300
+\[`U] \e[`U] Ugrave u0055_0300
+\[`a] \e[`a] agrave u0061_0300
+\[`e] \e[`e] egrave u0065_0300
+\[`i] \e[`i] igrave u0069_0300
+\[`o] \e[`o] ograve u006F_0300
+\[`u] \e[`u] ugrave u0075_0300
+\[~A] \e[~A] Atilde u0041_0303
+\[~N] \e[~N] Ntilde u004E_0303
+\[~O] \e[~O] Otilde u004F_0303
+\[~a] \e[~a] atilde u0061_0303
+\[~n] \e[~n] ntilde u006E_0303
+\[~o] \e[~o] otilde u006F_0303
+\[vS] \e[vS] Scaron u0053_030C
+\[vs] \e[vs] scaron u0073_030C
+\[vZ] \e[vZ] Zcaron u005A_030C
+\[vz] \e[vz] zcaron u007A_030C
+\[,C] \e[,C] Ccedilla u0043_0327
+\[,c] \e[,c] ccedilla u0063_0327
+\[oA] \e[oA] Aring u0041_030A
+\[oa] \e[oa] aring u0061_030A
+.TE
+.
+.P
.I Accents
.P
The
@@ -908,54 +619,63 @@ request is used to map most of the accents to non-spacing glyph names;
the values given in parentheses are the original (spacing) ones.
.
.P
-.Ac \(vc \(ah c
-.Ac \('a \(aa a
-.
-.\" we don't use the third column
-.CT "\fIOutput" "\f(CW\e[-D]" "" "quotesinglebase" "uCCCC (uCCCC)"
-.He
-.2s a" hungarumlaut "u030B (u02DD)" "(Hungarian)"
-.C2 a- macron "u0304 (u00AF)"
-.C2 a. dotaccent "u0307 (u02D9)"
-.C2 a^ circumflex "u0302 (u005E)"
-.C2 aa acute "u0301 (u00B4)" "+"
-.C2 ga grave "u0300 (u0060)" "+"
-.C2 ab breve "u0306 (u02D8)"
-.C2 ac cedilla "u0327 (u00B8)"
-.C2 ad dieresis "u0308 (u00A8)" "umlaut"
-.C2 ah caron "u030C (u02C7)" "h\('a\(vcek"
-.C2 ao ring "u030A (u02DA)" "circle"
-.C2 a~ tilde "u0303 (u007E)"
-.C2 ho ogonek "u0328 (u02DB)" "hook"
-.C2 ha asciicircum u005E "(spacing)"
-.2e ti asciitilde u007E "(spacing)"
-.
-.Pa
+.TS
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[a"] \e[a"] hungarumlaut u030B (u02DD) (Hungarian)
+\[a-] \e[a-] macron u0304 (u00AF)
+\[a.] \e[a.] dotaccent u0307 (u02D9)
+\[a^] \e[a^] circumfle u0302 (u005E)
+\[aa] \e[aa] acute u0301 (u00B4) +
+\[ga] \e[ga] grave u0300 (u0060) +
+\[ab] \e[ab] breve u0306 (u02D8)
+\[ac] \e[ac] cedilla u0327 (u00B8)
+\[ad] \e[ad] dieresis u0308 (u00A8) umlaut
+\[ah] \e[ah] caron u030C (u02C7)
+\[ao] \e[ao] ring u030A (u02DA) circle
+\[a~] \e[a~] tilde u0303 (u007E)
+\[ho] \e[ho] ogonek u0328 (u02DB) hook
+\[ha] \e[ha] asciicircum u005E (spacing)
+\[ti] \e[ti] asciitilde u007E (spacing)
+.TE
+.
+.P
.I Quotes
.P
-.2s Bq quotedblbase u201E "low double comma quote"
-.C2 bq quotesinglbase u201A "low single comma quote"
-.C2 lq quotedblleft u201C
-.C2 rq quotedblright u201D
-.C2 oq quoteleft u2018 "single open quote"
-.C2 cq quoteright u2019 "single closing quote"
-.C2 aq quotesingle u0027 "apostrophe quote (ASCII 39)"
-.C2 dq quotedbl u0022 "double quote (ASCII 34)"
-.C2 Fo guillemotleft u00AB
-.C2 Fc guillemotright u00BB
-.C2 fo guilsinglleft u2039
-.2e fc guilsinglright u203A
-.
-.Pa
+.TS
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[Bq] \e[Bq] quotedblbase u201E low double comma quote
+\[bq] \e[bq] quotesinglbase u201A low single comma quote
+\[lq] \e[lq] quotedblleft u201C
+\[rq] \e[rq] quotedblright u201D
+\[oq] \e[oq] quoteleft u2018 single open quote
+\[cq] \e[cq] quoteright u2019 single closing quote
+\[aq] \e[aq] quotesingle u0027 apostrophe quote (ASCII 39)
+\[dq] \e[dq] quotedbl u0022 double quote (ASCII 34)
+\[Fo] \e[Fo] guillemotleft u00AB
+\[Fc] \e[Fc] guillemotright u00BB
+\[fo] \e[fo] guilsinglleft u2039
+\[fc] \e[fc] guilsinglright u203A
+.TE
+.
+.P
.I Punctuation
.P
-.2s r! exclamdown u00A1
-.C2 r? questiondown u00BF
-.C2 em emdash u2014 "+"
-.C2 en endash u2013
-.2e hy hyphen u2010 "+"
+.TS
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[r!] \e[r!] exclamdown u00A1
+\[r?] \e[r?] questiondown u00BF
+\[em] \e[em] emdash u2014 +
+\[en] \e[en] endash u2013
+\[hy] \e[hy] hyphen u2010 +
+.TE
.
-.Pa
+.P
.I Brackets
.P
The extensible bracket pieces are font-invariant glyphs.
@@ -1023,65 +743,76 @@ only glyphs with long names are guaranteed to pile up correctly for all
devices (provided those glyphs exist).
.
.P
-.CT "\fIOutput" "\f(CW\e[bracketrightex]" "" "bracketrightex" "decomposed"
-.He
-.2s lB bracketleft u005B
-.C2 rB bracketright u005D
-.C2 lC braceleft u007B
-.C2 rC braceright u007D
-.C2 la angleleft u27E8 "left angle bracket"
-.C2 ra angleright u27E9 "right angle bracket"
-.
-.C2 bv braceex u23AA "vertical extension *** +"
-.CN braceex braceex u23AA
-.
-.CN bracketlefttp bracketlefttp u23A1
-.CN bracketleftbt bracketleftbt u23A3
-.CN bracketleftex bracketleftex u23A2
-.CN bracketrighttp bracketrighttp u23A4
-.CN bracketrightbt bracketrightbt u23A6
-.CN bracketrightex bracketrightex u23A5
-.
-.C2 lt bracelefttp u23A7 "+"
-.CN bracelefttp bracelefttp u23A7
-.C2 lk braceleftmid u23A8 "+"
-.CN braceleftmid braceleftmid u23A8
-.C2 lb braceleftbt u23A9 "+"
-.CN braceleftbt braceleftbt u23A9
-.CN braceleftex braceleftex u23AA
-.C2 rt bracerighttp u23AB "+"
-.CN bracerighttp bracerighttp u23AB
-.C2 rk bracerightmid u23AC "+"
-.CN bracerightmid bracerightmid u23AC
-.C2 rb bracerightbt u23AD "+"
-.CN bracerightbt bracerightbt u23AD
-.CN bracerightex bracerightex u23AA
-.
-.CN parenlefttp parenlefttp u239B
-.CN parenleftbt parenleftbt u239D
-.CN parenleftex parenleftex u239C
-.CN parenrighttp parenrighttp u239E
-.CN parenrightbt parenrightbt u23A0
-.Ne parenrightex parenrightex u239F
-.
-.Pa
+
+.TS
+expand;
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[lB] \e[lB] bracketleft u005B
+\[rB] \e[rB] bracketright u005D
+\[lC] \e[lC] braceleft u007B
+\[rC] \e[rC] braceright u007D
+\[la] \e[la] angleleft u27E8 left angle bracket
+\[ra] \e[ra] angleright u27E9 right angle bracket
+
+\[bv] \e[bv] braceex u23AA vertical extension *** +
+\[braceex] \e[braceex] braceex u23AA
+
+\[bracketlefttp] \e[bracketlefttp] bracketlefttp u23A1
+\[bracketleftbt] \e[bracketleftbt] bracketleftbt u23A3
+\[bracketleftex] \e[bracketleftex] bracketleftex u23A2
+\[bracketrighttp] \e[bracketrighttp] bracketrighttp u23A4
+\[bracketrightbt] \e[bracketrightbt] bracketrightbt u23A6
+\[bracketrightex] \e[bracketrightex] bracketrightex u23A5
+
+\[lt] \e[lt] bracelefttp u23A7 +
+\[bracelefttp] \e[bracelefttp] bracelefttp u23A7
+\[lk] \e[lk] braceleftmid u23A8 +
+\[braceleftmid] \e[braceleftmid] braceleftmid u23A8
+\[lb] \e[lb] braceleftbt u23A9 +
+\[braceleftbt] \e[braceleftbt] braceleftbt u23A9
+\[braceleftex] \e[braceleftex] braceleftex u23AA
+\[rt] \e[rt] bracerighttp u23AB +
+\[bracerighttp] \e[bracerighttp] bracerighttp u23AB
+\[rk] \e[rk] bracerightmid u23AC +
+\[bracerightmid] \e[bracerightmid] bracerightmid u23AC
+\[rb] \e[rb] bracerightbt u23AD +
+\[bracerightbt] \e[bracerightbt] bracerightbt u23AD
+\[bracerightex] \e[bracerightex] bracerightex u23AA
+.
+\[parenlefttp] \e[parenlefttp] parenlefttp u239B
+\[parenleftbt] \e[parenleftbt] parenleftbt u239D
+\[parenleftex] \e[parenleftex] parenleftex u239C
+\[parenrighttp] \e[parenrighttp] parenrighttp u239E
+\[parenrightbt] \e[parenrightbt] parenrightbt u23A0
+\[parenrightex] \e[parenrightex] parenrightex u239F
+.TE
+.
+.P
.I Arrows
.P
-.2s <- arrowleft u2190 "+"
-.C2 -> arrowright u2192 "+"
-.C2 <> arrowboth u2194 "(horizontal)"
-.C2 da arrowdown u2193 "+"
-.C2 ua arrowup u2191 "+"
-.C2 va arrowupdn u2195
-.C2 lA arrowdblleft u21D0
-.C2 rA arrowdblright u21D2
-.C2 hA arrowdblboth u21D4 "(horizontal)"
-.C2 dA arrowdbldown u21D3
-.C2 uA arrowdblup u21D1
-.C2 vA uni21D5 u21D5 "vertical double-headed double arrow"
-.2e an arrowhorizex u23AF "horizontal arrow extension"
-.
-.Pa
+.TS
+expand;
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[<-] \e[<-] arrowleft u2190 +
+\[->] \e[->] arrowright u2192 +
+\[<>] \e[<>] arrowboth u2194 (horizontal)
+\[da] \e[da] arrowdown u2193 +
+\[ua] \e[ua] arrowup u2191 +
+\[va] \e[va] arrowupdn u2195
+\[lA] \e[lA] arrowdblleft u21D0
+\[rA] \e[rA] arrowdblright u21D2
+\[hA] \e[hA] arrowdblboth u21D4 (horizontal)
+\[dA] \e[dA] arrowdbldown u21D3
+\[uA] \e[uA] arrowdblup u21D1
+\[vA] \e[vA] uni21D5 u21D5 vertical double-headed double arrow
+\[an] \e[an] arrowhorizex u23AF horizontal arrow extension
+.TE
+.
+.P
.I Lines
.P
The font-invariant glyphs `br', `ul', and `rn' form corners;
@@ -1098,166 +829,210 @@ square root sign.
`ru' is a font-invariant glyph, namely a rule of length 0.5m.
.
.P
-.CT "\fIOutput" "\f(CW\e[integral]" "" "propersuperset" "decomposed"
-.He
-.2s ba bar u007C
-.C2 br SF110000 u2502 "box rule +"
-.C2 ul underscore u005F "+"
-.C2 rn overline u203E "use `\f(CW\e[radicalex]\fP' for continuation of square root +"
-.C2 ru --- --- "baseline rule +"
-.C2 bb brokenbar u00A6
-.C2 sl slash u002F "+"
-.2e rs backslash u005C "reverse solidus"
-.
-.Pa
+.TS
+expand;
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[ba] \e[ba] bar u007C
+\[br] \e[br] SF110000 u2502 box rule +
+\[ul] \e[ul] underscore u005F +
+\[rn] \e[rn] overline u203E +
+\[ru] \e[ru] --- --- baseline rule +
+\[bb] \e[bb] brokenbar u00A6
+\[sl] \e[sl] slash u002F +
+\[rs] \e[rs] backslash u005C reverse solidus
+.TE
+.P
+Use `\f(CW\e[radicalex]\fP', not `\f(CW\e[overline]\fP', for
+continuation of square root.
+.
+.P
.I Text markers
.P
-.2s ci circle u25CB "+"
-.C2 bu bullet u2022 "+"
-.C2 dd daggerdbl u2021 "double dagger sign +"
-.C2 dg dagger u2020 "+"
-.C2 lz lozenge u25CA
-.C2 sq uni25A1 u25A1 "white square +"
-.C2 ps paragraph u00B6
-.C2 sc section u00A7 "+"
-.C2 lh uni261C u261C "hand pointing left +"
-.C2 rh a14 u261E "hand pointing right +"
-.C2 at at u0040
-.C2 sh numbersign u0023
-.C2 CR carriagereturn u21B5
-.2e OK a19 u2713 "check mark, tick"
-.
-.Pa
+.TS
+expand;
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[ci] \e[ci] circle u25CB +
+\[bu] \e[bu] bullet u2022 +
+\[dd] \e[dd] daggerdbl u2021 double dagger sign +
+\[dg] \e[dg] dagger u2020 +
+\[lz] \e[lz] lozenge u25CA
+\[sq] \e[sq] uni25A1 u25A1 white square +
+\[ps] \e[ps] paragraph u00B6
+\[sc] \e[sc] section u00A7 +
+\[lh] \e[lh] uni261C u261C hand pointing left +
+\[rh] \e[rh] a14 u261E hand pointing right +
+\[at] \e[at] at u0040
+\[sh] \e[sh] numbersign u0023
+\[CR] \e[CR] carriagereturn u21B5
+\[OK] \e[OK] a19 u2713 check mark, tick
+.TE
+.
+.P
.I Legal Symbols
.P
-.2s co copyright u00A9 "+"
-.C2 rg registered u00AE "+"
-.C2 tm trademark u2122
-.2e bs --- --- "AT&T Bell Labs logo (not used in groff) +"
+.TS
+expand;
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[co] \e[co] copyright u00A9 +
+\[rg] \e[rg] registered u00AE +
+\[tm] \e[tm] trademark u2122
+\[bs] \e[bs] --- --- AT&T Bell Labs logo +
+.TE
+.P
+The Bell Labs logo is not supported in groff.
.
-.Pa
+.P
.I Currency symbols
.P
-.2s Do dollar u0024
-.C2 ct cent u00A2 "+"
-.C2 eu --- u20AC "official Euro symbol"
-.C2 Eu Euro u20AC "font-specific Euro glyph variant"
-.C2 Ye yen u00A5
-.C2 Po sterling u00A3 "British currency sign"
-.C2 Cs currency u00A4 "Scandinavian currency sign"
-.2e Fn florin u0192 "Dutch currency sign"
-.
-.Pa
+.TS
+expand;
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[Do] \e[Do] dollar u0024
+\[ct] \e[ct] cent u00A2 +
+\[eu] \e[eu] --- u20AC official Euro symbol
+\[Eu] \e[Eu] Euro u20AC font-specific Euro glyph variant
+\[Ye] \e[Ye] yen u00A5
+\[Po] \e[Po] sterling u00A3 British currency sign
+\[Cs] \e[Cs] currency u00A4 Scandinavian currency sign
+\[Fn] \e[Fn] florin u0192 Dutch currency sign
+.TE
+.
+.P
.I Units
.P
-.2s de degree u00B0 "+"
-.C2 %0 perthousand u2030 "per thousand, per mille sign"
-.C2 fm minute u2032 "footmark, prime +"
-.C2 sd second u2033
-.C2 mc mu u00B5 "micro sign"
-.C2 Of ordfeminine u00AA
-.2e Om ordmasculine u00BA
-.
-.Pa
+.TS
+expand;
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[de] \e[de] degree u00B0 +
+\[%0] \e[%0] perthousand u2030 per thousand, per mille sign
+\[fm] \e[fm] minute u2032 footmark, prime +
+\[sd] \e[sd] second u2033
+\[mc] \e[mc] mu u00B5 micro sign
+\[Of] \e[Of] ordfeminine u00AA
+\[Om] \e[Om] ordmasculine u00BA
+.TE
+.
+.P
.I Logical Symbols
.P
-.2s AN logicaland u2227
-.C2 OR logicalor u2228
-.C2 no logicalnot u00AC "+"
-.CN tno logicalnot u00AC "text variant of `no'"
-.C2 te existential u2203 "there exists, existential quantifier"
-.C2 fa universal u2200 "for all, universal quantifier"
-.C2 st suchthat u220B
-.C2 3d therefore u2234
-.C2 tf therefore u2234
-.
-.2e or bar u007C "bitwise OR operator (as used in C) +"
-.
-.Pa
+.TS
+expand;
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[AN] \e[AN] logicaland u2227
+\[OR] \e[OR] logicalor u2228
+\[no] \e[no] logicalnot u00AC +
+\[tno] \e[tno] logicalnot u00AC text variant of `no'
+\[te] \e[te] existential u2203 there exists
+\[fa] \e[fa] universal u2200 for all
+\[st] \e[st] suchthat u220B
+\[3d] \e[3d] therefore u2234
+\[tf] \e[tf] therefore u2234
+\[or] \e[or] bar u007C bitwise OR operator (as used in C) +
+.TE
+.
+.P
.I Mathematical Symbols
.P
-.2s 12 onehalf u00BD "+"
-.C2 14 onequarter u00BC "+"
-.C2 34 threequarters u00BE "+"
-.C2 18 oneeighth u215B
-.C2 38 threeeighths u215C
-.C2 58 fiveeighths u215D
-.C2 78 seveneighths u215E
-.C2 S1 onesuperior u00B9
-.C2 S2 twosuperior u00B2
-.C2 S3 threesuperior u00B3
-.
-.C2 pl plus u002B "plus sign in special font +"
-.C2 mi minus u2212 "minus sign in special font +"
-.C2 -+ uni2213 u2213
-.C2 +- plusminus u00B1 "+"
-.CN t+- plusminus u00B1 "text variant of `+\-'"
-.C2 pc periodcentered u00B7
-.C2 md dotmath u22C5 "multiplication dot"
-.C2 mu multiply u00D7 "+"
-.CN tmu multiply u00D7 "text variant of `mu'"
-.C2 c* circlemultiply u2297 "multiply sign in a circle"
-.C2 c+ circleplus u2295 "plus sign in a circle"
-.C2 di divide u00F7 "division sign +"
-.CN tdi divide u00F7 "text variant of `di'"
-.C2 f/ fraction u2044 "bar for fractions"
-.C2 ** asteriskmath u2217 "+"
-.
-.C2 <= lessequal u2264 "+"
-.C2 >= greaterequal u2265 "+"
-.C2 << uni226A u226A "much less"
-.C2 >> uni226B u226B "much greater"
-.C2 eq equal u003D "equals sign in special font +"
-.C2 != notequal u003D_0338 "+"
-.C2 == equivalence u2261 "+"
-.C2 ne uni2262 u2261_0338
-.C2 =~ congruent u2245 "approx.\& equal"
-.C2 |= uni2243 u2243 "asymptot.\& equal to +"
-.C2 ap similar u223C "+"
-.C2 ~~ approxequal u2248 "almost equal to"
-.C2 ~= approxequal u2248
-.C2 pt proportional u221D "+"
-.
-.C2 es emptyset u2205 "+"
-.C2 mo element u2208 "+"
-.C2 nm notelement u2208_0338
-.C2 sb propersubset u2282 "+"
-.C2 nb notsubset u2282_0338
-.C2 sp propersuperset u2283 "+"
-.C2 nc uni2285 u2283_0338 "not superset"
-.C2 ib reflexsubset u2286 "+"
-.C2 ip reflexsuperset u2287 "+"
-.C2 ca intersection u2229 "intersection, cap +"
-.C2 cu union u222A "union, cup +"
-.
-.C2 /_ angle u2220
-.C2 pp perpendicular u22A5
-.C2 is integral u222B "+"
-.CN integral integral u222B "***"
-.CN sum summation u2211 "***"
-.CN product product u220F "***"
-.CN coproduct uni2210 u2210 "***"
-.C2 gr gradient u2207 "+"
-.C2 sr radical u221A "square root +"
-.CN sqrt radical u221A "***"
-.CN radicalex radicalex --- "continuation of square root"
-.CN sqrtex radicalex --- "***"
-.
-.C2 lc uni2308 u2308 "left ceiling +"
-.C2 rc uni2309 u2309 "right ceiling +"
-.C2 lf uni230A u230A "left floor +"
-.C2 rf uni230B u230B "right floor +"
-.
-.C2 if infinity u221E "+"
-.C2 Ah aleph u2135
-.C2 Im Ifraktur u2111 "Gothic I, imaginary"
-.C2 Re Rfraktur u211C "Gothic R, real"
-.C2 wp weierstrass u2118 "Weierstrass p"
-.C2 pd partialdiff u2202 "partial differentiation sign +"
-.C2 -h uni210F u210F "Planck constant over two pi"
-.2e hbar uni210F u210F
-.
-.Pa
+.TS
+expand;
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[12] \e[12] onehalf u00BD +
+\[14] \e[14] onequarter u00BC +
+\[34] \e[34] threequarters u00BE +
+\[18] \e[18] oneeighth u215B
+\[38] \e[38] threeeighths u215C
+\[58] \e[58] fiveeighths u215D
+\[78] \e[78] seveneighths u215E
+\[S1] \e[S1] onesuperior u00B9
+\[S2] \e[S2] twosuperior u00B2
+\[S3] \e[S3] threesuperior u00B3
+
+\[pl] \e[pl] plus u002B plus in special font +
+\[mi] \e[mi] minus u2212 minus in special font +
+\[-+] \e[-+] uni2213 u2213
+\[+-] \e[+-] plusminus u00B1 +
+\[t+-] \e[t+-] plusminus u00B1 text variant of `+\-'
+\[pc] \e[pc] periodcentered u00B7
+\[md] \e[md] dotmath u22C5 multiplication dot
+\[mu] \e[mu] multiply u00D7 +
+\[tmu] \e[tmu] multiply u00D7 text variant of `mu'
+\[c*] \e[c*] circlemultiply u2297 multiply sign in a circle
+\[c+] \e[c+] circleplus u2295 plus in a circle
+\[di] \e[di] divide u00F7 division +
+\[tdi] \e[tdi] divide u00F7 text variant of `di'
+\[f/] \e[f/] fraction u2044 bar for fractions
+\[**] \e[**] asteriskmath u2217 +
+
+\[<=] \e[<=] lessequal u2264 +
+\[>=] \e[>=] greaterequal u2265 +
+\[<<] \e[<<] uni226A u226A much less
+\[>>] \e[>>] uni226B u226B much greater
+\[eq] \e[eq] equal u003D equals in special font +
+\[!=] \e[!=] notequal u003D_0338 +
+\[==] \e[==] equivalence u2261 +
+\[ne] \e[ne] uni2262 u2261_0338
+\[=~] \e[=~] congruent u2245 approx.\& equal
+\[|=] \e[|=] uni2243 u2243 asymptot.\& equal to +
+\[ap] \e[ap] similar u223C +
+\[~~] \e[~~] approxequal u2248 almost equal to
+\[~=] \e[~=] approxequal u2248
+\[pt] \e[pt] proportional u221D +
+
+\[es] \e[es] emptyset u2205 +
+\[mo] \e[mo] element u2208 +
+\[nm] \e[nm] notelement u2208_0338
+\[sb] \e[sb] propersubset u2282 +
+\[nb] \e[nb] notsubset u2282_0338
+\[sp] \e[sp] propersuperset u2283 +
+\[nc] \e[nc] uni2285 u2283_0338 not superset
+\[ib] \e[ib] reflexsubset u2286 +
+\[ip] \e[ip] reflexsuperset u2287 +
+\[ca] \e[ca] intersection u2229 intersection, cap +
+\[cu] \e[cu] union u222A union, cup +
+
+\[/_] \e[/_] angle u2220
+\[pp] \e[pp] perpendicular u22A5
+\[is] \e[is] integral u222B +
+\[integral] \e[integral] integral u222B ***
+\[sum] \e[sum] summation u2211 ***
+\[product] \e[product] product u220F ***
+\[coproduct] \e[coproduct] uni2210 u2210 ***
+\[gr] \e[gr] gradient u2207 +
+\[sr] \e[sr] radical u221A square root +
+\[sqrt] \e[sqrt] radical u221A ***
+\[radicalex] \e[radicalex] radicalex --- square root continuation
+\[sqrtex] \e[sqrtex] radicalex --- ***
+
+\[lc] \e[lc] uni2308 u2308 left ceiling +
+\[rc] \e[rc] uni2309 u2309 right ceiling +
+\[lf] \e[lf] uni230A u230A left floor +
+\[rf] \e[rf] uni230B u230B right floor +
+
+\[if] \e[if] infinity u221E +
+\[Ah] \e[Ah] aleph u2135
+\[Im] \e[Im] Ifraktur u2111 Gothic I, imaginary
+\[Re] \e[Re] Rfraktur u211C Gothic R, real
+\[wp] \e[wp] weierstrass u2118 Weierstrass p
+\[pd] \e[pd] partialdiff u2202 partial differentiation +
+\[-h] \e[-h] uni210F u210F Planck constant / 2pi
+\[hbar] \e[hbar] uni210F u210F
+.TE
+.
+.P
.I Greek glyphs
.P
These glyphs are intended for technical use, not for real Greek; normally,
@@ -1286,77 +1061,88 @@ font is the stroked version.
In groff, symbol `\f(CW\e[*f]\fP' always denotes the stroked version of
phi, and `\f(CW\e[+f]\fP' the curly variant.
.P
-.2s *A Alpha u0391 "+"
-.C2 *B Beta u0392 "+"
-.C2 *G Gamma u0393 "+"
-.C2 *D Delta u0394 "+"
-.C2 *E Epsilon u0395 "+"
-.C2 *Z Zeta u0396 "+"
-.C2 *Y Eta u0397 "+"
-.C2 *H Theta u0398 "+"
-.C2 *I Iota u0399 "+"
-.C2 *K Kappa u039A "+"
-.C2 *L Lambda u039B "+"
-.C2 *M Mu u039C "+"
-.C2 *N Nu u039D "+"
-.C2 *C Xi u039E "+"
-.C2 *O Omicron u039F "+"
-.C2 *P Pi u03A0 "+"
-.C2 *R Rho u03A1 "+"
-.C2 *S Sigma u03A3 "+"
-.C2 *T Tau u03A4 "+"
-.C2 *U Upsilon u03A5 "+"
-.C2 *F Phi u03A6 "+"
-.C2 *X Chi u03A7 "+"
-.C2 *Q Psi u03A8 "+"
-.C2 *W Omega u03A9 "+"
-.C2 *a alpha u03B1 "+"
-.C2 *b beta u03B2 "+"
-.C2 *g gamma u03B3 "+"
-.C2 *d delta u03B4 "+"
-.C2 *e epsilon u03B5 "+"
-.C2 *z zeta u03B6 "+"
-.C2 *y eta u03B7 "+"
-.C2 *h theta u03B8 "+"
-.C2 *i iota u03B9 "+"
-.C2 *k kappa u03BA "+"
-.C2 *l lambda u03BB "+"
-.C2 *m mu u03BC "+"
-.C2 *n nu u03BD "+"
-.C2 *c xi u03BE "+"
-.C2 *o omicron u03BF "+"
-.C2 *p pi u03C0 "+"
-.C2 *r rho u03C1 "+"
-.C2 ts sigma1 u03C2 "terminal sigma +"
-.C2 *s sigma u03C3 "+"
-.C2 *t tau u03C4 "+"
-.C2 *u upsilon u03C5 "+"
-.C2 *f phi u03D5 "(stroked glyph)+"
-.C2 *x chi u03C7 "+"
-.C2 *q psi u03C8 "+"
-.C2 *w omega u03C9 "+"
-.C2 +h theta1 u03D1 "variant theta"
-.C2 +f phi1 u03C6 "variant phi (curly shape)"
-.C2 +p omega1 u03D6 "variant pi, looking like omega"
-.2e +e uni03F5 u03F5 "variant epsilon"
-.
-.Pa
+.TS
+expand;
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[*A] \e[*A] Alpha u0391 +
+\[*B] \e[*B] Beta u0392 +
+\[*G] \e[*G] Gamma u0393 +
+\[*D] \e[*D] Delta u0394 +
+\[*E] \e[*E] Epsilon u0395 +
+\[*Z] \e[*Z] Zeta u0396 +
+\[*Y] \e[*Y] Eta u0397 +
+\[*H] \e[*H] Theta u0398 +
+\[*I] \e[*I] Iota u0399 +
+\[*K] \e[*K] Kappa u039A +
+\[*L] \e[*L] Lambda u039B +
+\[*M] \e[*M] Mu u039C +
+\[*N] \e[*N] Nu u039D +
+\[*C] \e[*C] Xi u039E +
+\[*O] \e[*O] Omicron u039F +
+\[*P] \e[*P] Pi u03A0 +
+\[*R] \e[*R] Rho u03A1 +
+\[*S] \e[*S] Sigma u03A3 +
+\[*T] \e[*T] Tau u03A4 +
+\[*U] \e[*U] Upsilon u03A5 +
+\[*F] \e[*F] Phi u03A6 +
+\[*X] \e[*X] Chi u03A7 +
+\[*Q] \e[*Q] Psi u03A8 +
+\[*W] \e[*W] Omega u03A9 +
+\[*a] \e[*a] alpha u03B1 +
+\[*b] \e[*b] beta u03B2 +
+\[*g] \e[*g] gamma u03B3 +
+\[*d] \e[*d] delta u03B4 +
+\[*e] \e[*e] epsilon u03B5 +
+\[*z] \e[*z] zeta u03B6 +
+\[*y] \e[*y] eta u03B7 +
+\[*h] \e[*h] theta u03B8 +
+\[*i] \e[*i] iota u03B9 +
+\[*k] \e[*k] kappa u03BA +
+\[*l] \e[*l] lambda u03BB +
+\[*m] \e[*m] mu u03BC +
+\[*n] \e[*n] nu u03BD +
+\[*c] \e[*c] xi u03BE +
+\[*o] \e[*o] omicron u03BF +
+\[*p] \e[*p] pi u03C0 +
+\[*r] \e[*r] rho u03C1 +
+\[ts] \e[ts] sigma1 u03C2 terminal sigma +
+\[*s] \e[*s] sigma u03C3 +
+\[*t] \e[*t] tau u03C4 +
+\[*u] \e[*u] upsilon u03C5 +
+\[*f] \e[*f] phi u03D5 (stroked glyph) +
+\[*x] \e[*x] chi u03C7 +
+\[*q] \e[*q] psi u03C8 +
+\[*w] \e[*w] omega u03C9 +
+\[+h] \e[+h] theta1 u03D1 variant theta
+\[+f] \e[+f] phi1 u03C6 variant phi (curly shape)
+\[+p] \e[+p] omega1 u03D6 variant pi, looking like omega
+\[+e] \e[+e] uni03F5 u03F5 variant epsilon
+.TE
+.
+.P
.I Card symbols
.P
-.2s CL club u2663 "black club suit"
-.C2 SP spade u2660 "black spade suit"
-.C2 HE heart u2665 "black heart suit"
-.C2 u2661 uni2661 u2661 "white heart suit"
-.C2 DI diamond u2666 "black diamond suit"
-.2e u2662 uni2662 u2662 "white diamond suit"
+.TS
+expand;
+l l l l l.
+Output Input PostScript Unicode Notes
+_
+\[CL] \e[CL] club u2663 black club suit
+\[SP] \e[SP] spade u2660 black spade suit
+\[HE] \e[HE] heart u2665 black heart suit
+\[u2661] \e[u2661] uni2661 u2661 white heart suit
+\[DI] \e[DI] diamond u2666 black diamond suit
+\[u2662] \e[u2662] uni2662 u2662 white diamond suit
+.TE
.
.
.\" --------------------------------------------------------------------
.SH "AUTHOR"
.\" --------------------------------------------------------------------
.
-Copyright \(co 1989-2000, 2001, 2002, 2003,
-2004, 2006, 2008, 2009 Free Software Foundation, Inc.
+Copyright \(co 1989\-2004, 2006\-2009, 2012 Free Software Foundation, Inc.
.
.P
This document is distributed under the terms of the FDL (GNU Free
@@ -1377,12 +1163,12 @@ It was written by
.MT jjc@jclark.com
James Clark
.ME
-with additions by
+with additions by
.MT wl@gnu.org
Werner Lemberg
.ME
and
-.MT bwarken@mayn.de
+.MT groff-bernd.warken-72@web.de
Bernd Warken
.ME .
.
@@ -1402,8 +1188,8 @@ a short reference of the groff formatting language
.
.P
.IR "An extension to the troff character set for Europe" ,
-E.G. Keizer, K.J. Simonsen, J. Akkerhuis; EUUG Newsletter, Volume 9,
-No. 2, Summer 1989
+E.G.\& Keizer, K.J.\& Simonsen, J.\& Akkerhuis; EUUG Newsletter, Volume 9,
+No.\& 2, Summer 1989
.
.
.P
@@ -1418,4 +1204,5 @@ The Unicode Standard
.\" --------------------------------------------------------------------
.\" Local Variables:
.\" mode: nroff
+.\" tab-width: 20
.\" End:
diff --git a/man/groff_diff.man b/man/groff_diff.man
index 408d7bf..d523909 100644
--- a/man/groff_diff.man
+++ b/man/groff_diff.man
@@ -6,13 +6,12 @@ groff_diff.man
This file is part of groff, the GNU roff type-setting system.
It is the source of the man-page groff_diff(7).
-Copyright (C) 1989, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009,
- 2010
+Copyright (C) 1989, 2001-2004, 2006-2010, 2012
Free Software Foundation, Inc.
written by James Clark
modified by Werner Lemberg <wl@gnu.org>
- Bernd Warken <bwarken@mayn.de>
+ Bernd Warken <groff-bernd.warken-72@web.de>
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -67,7 +66,7 @@ by
.I Ossanna
and
.IR Kernighan .
-This inludes the roff language as well as the intermediate output
+This includes the roff language as well as the intermediate output
format (troff output).
.
.P
@@ -371,7 +370,7 @@ This is the same as the
request.
.
.B \[rs]F[]
-switches back to the previous color (note that
+switches back to the previous font family (note that
.B \[rs]FP
won't work; it selects font family `P' instead).
.
@@ -710,12 +709,12 @@ correct if the following glyph is a roman glyph.
. nop For example, if an italic\~f is immediately followed by a roman
. nop right parenthesis, then in many fonts the top right portion of
. nop the\~f overlaps the top left of the right parenthesis
-. nop producing \f[I]f\f[R])\f[R], which is ugly.
+. nop producing \f[I]f\f[R]), which is ugly.
. nop Inserting
. B \[rs]/
. nop produces
-. ie \n(.g \f[I]f\/\f[R])\f[R]
-. el \f[I]f\|\f[R])\f[R]
+. ie \n(.g \f[I]f\/\f[R])
+. el \f[I]f\|\f[R])
. nop and avoids this problem.
.\}
It is a good idea to use this escape sequence whenever an italic
@@ -916,7 +915,7 @@ sets register\~\c
.B n
to\~1.
.
-Note that glyph information (font, font size, etc.) is not preserved;
+Note that glyph information (font, font size, etc.\&) is not preserved;
use
.B .unformat
instead.
@@ -1200,15 +1199,15 @@ or
(one component).
.
Color components can be given either as a hexadecimal string or as
-positive decimal integers in the range 0-65535.
+positive decimal integers in the range 0\[en]65535.
.
A hexadecimal string contains all color components concatenated; it
must start with either
.B #
or
.BR ## .
-The former specifies hex values in the range 0-255 (which are
-internally multiplied by\~257), the latter in the range 0-65535.
+The former specifies hex values in the range 0\[en]255 (which are
+internally multiplied by\~257), the latter in the range 0\[en]65535.
.
Examples: #FFC0CB (pink), ##ffff0000ffff (magenta).
.
@@ -1593,11 +1592,11 @@ No support for `digraphs' like
.IP \[bu]
.BI ^^ xx
.RI ( x
-is 0-9 or a-f) and
+is 0\[en]9 or a\[en]f) and
.BI ^^ x
(character code of\~\c
.I x
-in the range 0-127) are recognized; other use of\~\c
+in the range 0\[en]127) are recognized; other use of\~\c
.B ^
causes an error.
.
@@ -2102,7 +2101,7 @@ The list of sizes can be terminated by an optional\~\c
Each
.I si
can also be a range of sizes
-.IR m - n .
+.IR m \(en n .
.
Contrary to the font file command, the list can't extend over more
than a single line.
@@ -2388,7 +2387,7 @@ are stretchable again.
.
Note that the vertical size of lines is not preserved.
.
-Glyph information (font, font size, space width, etc.) is retained.
+Glyph information (font, font size, space width, etc.\&) is retained.
.
Useful in conjunction with the
.B box
@@ -2923,8 +2922,8 @@ request, minus the amount of vertical motion produced by the
.B ne
request.
.
-In other words, at the point a trap is sprung, it represents the
-difference of what the vertical position would have been but for the
+In other words, at the point a trap is sprung, it represents the
+difference of what the vertical position would have been but for the
trap, and what the vertical position actually is.
.
Useful in conjunction with the
@@ -3184,7 +3183,7 @@ In a long escape name
.B ]
is not recognized as a closing delimiter except when it occurs at
the same input level as the opening\~\c
-.BR ] .
+.BR [ .
.
In compatibility mode, no attention is paid to the input-level.
.
@@ -3874,7 +3873,7 @@ classical `device-independent' troff did.
.SH AUTHORS
.\" --------------------------------------------------------------------
.
-Copyright (C) 1989, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010
+Copyright (C) 1989, 2001\-2004, 2006\-2010, 2012
Free Software Foundation, Inc.
.
.P
@@ -3892,7 +3891,7 @@ This document was written by James Clark, with modifications by
Werner Lemberg
.ME
and
-.MT bwarken@mayn.de
+.MT groff-bernd.warken-72@web.de
Bernd Warken
.ME .
.
diff --git a/man/groff_font.man b/man/groff_font.man
index 64bd212..e560229 100644
--- a/man/groff_font.man
+++ b/man/groff_font.man
@@ -1,6 +1,5 @@
.ig
-Copyright (C) 1989-1995, 2001, 2002, 2003, 2004, 2006, 2007, 2008,
- 2009
+Copyright (C) 1989-1995, 2001-2004, 2006-2009, 2012
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -77,16 +76,16 @@ This line and everything following in the file are ignored.
It is allowed for the sake of backwards compatibility.
.
.TP
-.BI family\ fam
+.BI "family " fam
The default font family is
.IR fam .
.
.TP
-.BI fonts\ n\ F1\ F2\ F3\ \|.\|.\|.\|\ Fn
+.BI "fonts " "n F1 F2 F3 \|.\|.\|.\| Fn"
Fonts
-.IR F1 ,\ \|.\|.\|.,\ Fn
+.IR F1 ", \|.\|.\|., " Fn
are mounted in the font positions
-.IR m \|+\|1,\ \|.\|.\|.,\ m \|+\| n
+.IR m "\|+\|1, \|.\|.\|., " m \|+\| n
where
.I m
is the number of styles.
@@ -98,13 +97,13 @@ A font name of\~\c
causes no font to be mounted on the corresponding font position.
.
.TP
-.BI hor\ n
+.BI "hor " n
The horizontal resolution is
.IR n \~\c
machine units.
.
.TP
-.BI image_generator\ string
+.BI "image_generator " string
Needed for
.B \%grohtml
only.
@@ -117,7 +116,7 @@ Under GNU/Linux this is usually
but under other systems (notably cygwin) it might be set to another name.
.
.TP
-.BI paperlength\ n
+.BI "paperlength " n
The physical vertical dimension of the output medium in machine units.
.
This isn't used by
@@ -131,12 +130,13 @@ Use
instead.
.
.TP
-.BI papersize\ string
+.BI "papersize " string
Select a paper size.
.
Valid values for
.I string
-are the ISO paper types A0-A7, B0-B7, C0-C7, D0-D7, DL, and the US paper
+are the ISO paper types A0\[en]A7, B0\[en]B7, C0\[en]C7, D0\[en]D7,
+DL, and the US paper
types letter, legal, tabloid, ledger, statement, executive, com10, and
monarch.
.
@@ -178,7 +178,7 @@ More than one argument can be specified;
scans from left to right and uses the first valid paper specification.
.
.TP
-.BI paperwidth\ n
+.BI "paperwidth " n
The physical horizontal dimension of the output medium in machine units.
.
Deprecated.
@@ -200,19 +200,19 @@ This is achieved by another tcommand:
.IR filename .
.
.TP
-.BI postpro\ program
+.BI "postpro " program
Use
.I program
as the postprocessor.
.
.TP
-.BI prepro\ program
+.BI "prepro " program
Call
.I program
as a preprocessor.
.
.TP
-.BI print\ program
+.BI "print " program
Use
.I program
as the spooler program for printing.
@@ -226,16 +226,16 @@ options of
are ignored.
.
.TP
-.BI res\ n
+.BI "res " n
There are
.I n
machine units per inch.
.
.TP
-.BI sizes\ s1\ s2\ \|.\|.\|.\|\ sn\ 0
+.BI "sizes " "s1 s2 \|.\|.\|.\| sn " 0
This means that the device has fonts at
.IR s1 ,
-.IR s2 ,\ \|.\|.\|.,\ sn
+.IR s2 ", \|.\|.\|., " sn
scaled points.
.
The list of sizes must be terminated by a
@@ -249,7 +249,7 @@ can also be a range of sizes
The list can extend over more than one line.
.
.TP
-.BI sizescale\ n
+.BI "sizescale " n
The scale factor for point sizes.
.
By default this has a value of 1.
@@ -268,11 +268,11 @@ and
commands are given in scaled points.
.
.TP
-.BI styles\ S1\ S2\ \|.\|.\|.\|\ Sm
+.BI "styles " "S1 S2 \|.\|.\|.\| Sm"
The first
.I m
font positions are associated with styles
-.IR S1 ,\ \|.\|.\|.,\ Sm .
+.IR S1 ", \|.\|.\|., " Sm .
.
.TP
.B tcommand
@@ -315,7 +315,7 @@ and
.BR \-Txhtml .
.
.TP
-.BI unitwidth\ n
+.BI "unitwidth " n
Quantities in the font files are given in machine units
for fonts whose point size is
.IR n \~\c
@@ -335,7 +335,7 @@ This command indicates that troff should encode named glyphs inside
special commands.
.
.TP
-.BI vert\ n
+.BI "vert " n
The vertical resolution is
.IR n \~\c
machine units.
@@ -375,10 +375,10 @@ words; the first word in the line is a key, and subsequent
words give a value for that key.
.
.TP
-.BI ligatures\ lig1\ lig2\ \|.\|.\|.\|\ lign\ \fR[ 0 \fR]
+.BI "ligatures " "lig1 lig2 \|.\|.\|.\| lign \fR[" 0 \fR]
Glyphs
.IR lig1 ,
-.IR lig2 ,\ \|.\|.\|.,\ lign
+.IR lig2 ", \|.\|.\|., " lign
are ligatures; possible ligatures are
.BR ff ,
.BR fi ,
@@ -389,17 +389,17 @@ and
.
For backwards compatibility, the list of ligatures may be terminated
with a\~\c
-.BR 0.
+.BR 0 .
.
The list of ligatures may not extend over more than one line.
.
.TP
-.BI name\ F
+.BI "name " F
The name of the font is\~\c
.IR F .
.
.TP
-.BI slant\ n
+.BI "slant " n
The glyphs of the font have a slant of
.IR n \~\c
degrees.
@@ -407,7 +407,7 @@ degrees.
(Positive means forward.)
.
.TP
-.BI spacewidth\ n
+.BI "spacewidth " n
The normal width of a space is\~\c
.IR n .
.
@@ -536,7 +536,7 @@ if it starts with
.B 0x
or
.B 0X
-it is intepreted as hexadecimal.
+it is interpreted as hexadecimal.
.
Note, however, that the
.B \[rs]N
diff --git a/man/groff_out.man b/man/groff_out.man
index 7c2db26..a9ac838 100644
--- a/man/groff_out.man
+++ b/man/groff_out.man
@@ -5,10 +5,10 @@ groff_out.5
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 1989, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009
+Copyright (C) 1989, 2001-2009, 2011
Free Software Foundation, Inc.
-rewritten from scrach 2001 by Bernd Warken <bwarken@mayn.de>
+rewritten from scrach 2001 by Bernd Warken
+<groff-bernd.warken-72@web.de>
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -1055,7 +1055,7 @@ must be an integer in the range -32767 to 32767.
.RI 0\|\[<=]\| n \|\[<=]\|1000
Set the color for filling solid drawing objects to a shade of gray,
where 0 corresponds to solid white, 1000 (the default) to solid black,
-and values inbetween to intermediate shades of gray; this is
+and values in between to intermediate shades of gray; this is
obsoleted by command
.BR DFg .
.
@@ -1560,7 +1560,9 @@ x stop
.P
This output can be fed into the postprocessor
.BR grops (@MAN1EXT@)
-to get its representation as a PostScript file.
+to get its representation as a PostScript file, or
+.BR gropdf (@MAN1EXT@)
+to output directly to PDF.
.
.
.IP \[bu] 2m
@@ -2010,7 +2012,9 @@ described only parts of the
.I groff
extensions of the output language.
.
-It was rewritten in 2002 by Bernd Warken and is
+It was rewritten in 2002 by
+.MT groff-bernd.warken-72@web.de
+Bernd Warken and is
maintained by
.MT wl@gnu.org
Werner Lemberg
diff --git a/man/groff_tmac.man b/man/groff_tmac.man
index 45de5b6..321f6d4 100644
--- a/man/groff_tmac.man
+++ b/man/groff_tmac.man
@@ -7,8 +7,8 @@ This file is part of groff, the GNU roff type-setting system.
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
-written by Bernd Warken <bwarken@mayn.de> and Werner Lemberg
-<wl@gnu.org>
+written by Bernd Warken <groff-bernd.warken-72@web.de> and
+Werner Lemberg <wl@gnu.org>
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -1216,7 +1216,7 @@ This document is part of
the GNU roff distribution.
.
It was written by
-.MT bwarken@mayn.de
+.MT groff-bernd.warken-72@web.de
Bernd Warken
.ME ;
it is maintained by
diff --git a/man/roff.man b/man/roff.man
index 0368c3f..dcf268a 100644
--- a/man/roff.man
+++ b/man/roff.man
@@ -4,9 +4,9 @@ roff.man
This file is part of groff, the GNU roff type-setting system.
-Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009
+Copyright (C) 2000-2004, 2006-2009, 2011
Free Software Foundation, Inc.
-written by Bernd Warken <bwarken@mayn.de>
+written by Bernd Warken <groff-bernd.warken-72@web.de>
maintained by Werner Lemberg <wl@gnu.org>
Permission is granted to copy, distribute and/or modify this document
@@ -252,7 +252,7 @@ Today, the name
.I roff
is used to refer to a
.I troff/\:nroff
-sytem as a whole.
+system as a whole.
.
.P
Ossanna's first version was written in the PDP-11 assembly language and
@@ -1260,7 +1260,7 @@ the \f[CR]GNU\f[]
distribution.
.
It was written by
-.MT bwarken@mayn.de
+.MT groff-bernd.warken-72@web.de
Bernd Warken
.ME ;
it is maintained by
diff --git a/mkinstalldirs b/mkinstalldirs
index 4191a45..55d537f 100755
--- a/mkinstalldirs
+++ b/mkinstalldirs
@@ -81,9 +81,9 @@ case $dirmode in
echo "mkdir -p -- $*"
exec mkdir -p -- "$@"
else
- # On NextStep and OpenStep, the `mkdir' command does not
+ # On NextStep and OpenStep, the 'mkdir' command does not
# recognize any option. It will interpret all options as
- # directories to create, and then abort because `.' already
+ # directories to create, and then abort because '.' already
# exists.
test -d ./-p && rmdir ./-p
test -d ./--version && rmdir ./--version
diff --git a/src/devices/grodvi/Makefile.sub b/src/devices/grodvi/Makefile.sub
index 16dc24c..a939dbf 100644
--- a/src/devices/grodvi/Makefile.sub
+++ b/src/devices/grodvi/Makefile.sub
@@ -1,6 +1,6 @@
PROG=grodvi$(EXEEXT)
MAN1=grodvi.n
-XLIBS=$(LIBDRIVER) $(LIBGROFF)
+XLIBS=$(LIBDRIVER) $(LIBGROFF) $(LIBGNU)
MLIB=$(LIBM)
OBJS=dvi.$(OBJEXT)
CCSRCS=$(srcdir)/dvi.cpp
diff --git a/src/devices/grohtml/Makefile.sub b/src/devices/grohtml/Makefile.sub
index ad673cf..48203b4 100644
--- a/src/devices/grohtml/Makefile.sub
+++ b/src/devices/grohtml/Makefile.sub
@@ -1,6 +1,6 @@
PROG=post-grohtml$(EXEEXT)
MAN1=grohtml.n
-XLIBS=$(LIBDRIVER) $(LIBGROFF)
+XLIBS=$(LIBDRIVER) $(LIBGROFF) $(LIBGNU)
MLIB=$(LIBM)
OBJS=\
post-html.$(OBJEXT) \
diff --git a/src/devices/grohtml/html-text.cpp b/src/devices/grohtml/html-text.cpp
index cae579b..1b27ab3 100644
--- a/src/devices/grohtml/html-text.cpp
+++ b/src/devices/grohtml/html-text.cpp
@@ -1,5 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009
+/* Copyright (C) 2000-2005, 2007, 2009, 2011
* Free Software Foundation, Inc.
*
* Gaius Mulley (gaius@glam.ac.uk) wrote html-text.cpp
@@ -873,9 +873,8 @@ void html_text::emit_space (void)
void html_text::remove_def (tag_definition *t)
{
- tag_definition *p = stackptr;
- tag_definition *l = 0;
- tag_definition *q = 0;
+ tag_definition *p = stackptr;
+ tag_definition *l = 0;
while ((p != 0) && (p != t)) {
l = p;
@@ -886,12 +885,10 @@ void html_text::remove_def (tag_definition *t)
stackptr = stackptr->next;
if (stackptr == NULL)
lastptr = NULL;
- q = stackptr;
} else if (l == 0) {
error("stack list pointers are wrong");
} else {
l->next = p->next;
- q = p->next;
if (l->next == NULL)
lastptr = l;
}
diff --git a/src/devices/grohtml/post-html.cpp b/src/devices/grohtml/post-html.cpp
index a6acc69..f4656a0 100644
--- a/src/devices/grohtml/post-html.cpp
+++ b/src/devices/grohtml/post-html.cpp
@@ -1,6 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009,
- * 2010
+/* Copyright (C) 2000-2007, 2009-2011
* Free Software Foundation, Inc.
*
* Gaius Mulley (gaius@glam.ac.uk) wrote post-html.cpp
@@ -3614,9 +3613,7 @@ void html_printer::lookahead_for_tables (void)
text_glob *start_of_table = NULL;
text_glob *last = NULL;
colType type_of_col = none;
- int left = 0;
int found_col = FALSE;
- int seen_text = FALSE;
int ncol = 0;
int colmin = 0; // pacify compiler
int colmax = 0; // pacify compiler
@@ -3646,9 +3643,7 @@ void html_printer::lookahead_for_tables (void)
}
start_of_line = g;
- seen_text = FALSE;
ncol = 0;
- left = next_horiz_pos(g, nf);
if (found_col)
last = g;
found_col = FALSE;
@@ -3713,14 +3708,10 @@ void html_printer::lookahead_for_tables (void)
} else if (! g->is_a_tag())
update_min_max(type_of_col, &colmin, &colmax, g);
- if ((! g->is_a_tag()) || g->is_tab())
- seen_text = TRUE;
-
if ((g->is_col() || g->is_tab() || g->is_tab0())
&& (start_of_line != NULL) && (start_of_table == NULL)) {
start_of_table = insert_tab_ts(start_of_line);
start_of_line = NULL;
- seen_text = FALSE;
} else if (g->is_ce() && (start_of_table != NULL)) {
add_table_end("*** CE ***");
start_of_table->remember_table(tbl);
@@ -3782,9 +3773,7 @@ void html_printer::lookahead_for_tables (void)
nf = calc_nf(g, nf);
} while ((g != NULL) && (g->is_br() || (nf && g->is_eol())));
start_of_line = g;
- seen_text = FALSE;
ncol = 0;
- left = next_horiz_pos(g, nf);
if (found_col)
last = g;
found_col = FALSE;
diff --git a/src/devices/grolbp/Makefile.sub b/src/devices/grolbp/Makefile.sub
index a237293..c9aef24 100644
--- a/src/devices/grolbp/Makefile.sub
+++ b/src/devices/grolbp/Makefile.sub
@@ -1,6 +1,6 @@
PROG=grolbp$(EXEEXT)
MAN1=grolbp.n
-XLIBS=$(LIBDRIVER) $(LIBGROFF)
+XLIBS=$(LIBDRIVER) $(LIBGROFF) $(LIBGNU)
MLIB=$(LIBM)
OBJS=lbp.$(OBJEXT)
CCSRCS=$(srcdir)/lbp.cpp
diff --git a/src/devices/grolj4/Makefile.sub b/src/devices/grolj4/Makefile.sub
index 1216a49..9d1d2bb 100644
--- a/src/devices/grolj4/Makefile.sub
+++ b/src/devices/grolj4/Makefile.sub
@@ -1,7 +1,7 @@
PROG=grolj4$(EXEEXT)
MAN1=grolj4.n
MAN5=lj4_font.n
-XLIBS=$(LIBDRIVER) $(LIBGROFF)
+XLIBS=$(LIBDRIVER) $(LIBGROFF) $(LIBGNU)
MLIB=$(LIBM)
OBJS=lj4.$(OBJEXT)
CCSRCS=$(srcdir)/lj4.cpp
diff --git a/src/devices/grolj4/grolj4.man b/src/devices/grolj4/grolj4.man
index 62385c4..804446d 100644
--- a/src/devices/grolj4/grolj4.man
+++ b/src/devices/grolj4/grolj4.man
@@ -54,9 +54,6 @@ grolj4 \- groff driver for HP Laserjet 4 family
.br
.ad \na
.
-.PP
-It is possible to have whitespace between a command line option and its
-parameter.
.
.
.SH DESCRIPTION
@@ -82,6 +79,9 @@ commands.
.
.
.SH OPTIONS
+.PP
+It is possible to have whitespace between a command line option and its
+parameter.
.TP
.BI \-c n
Print
diff --git a/src/devices/gropdf/Makefile.sub b/src/devices/gropdf/Makefile.sub
new file mode 100644
index 0000000..b43d2f0
--- /dev/null
+++ b/src/devices/gropdf/Makefile.sub
@@ -0,0 +1,65 @@
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+# Written by Deri James <deri@chuzzlewit.demon.co.uk>
+#
+# This file is part of groff.
+#
+# groff is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# groff is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+MAN1=\
+ gropdf.n \
+ pdfmom.n
+
+CMDFILES=\
+ gropdf \
+ pdfmom
+
+MOSTLYCLEANADD=\
+ gropdf \
+ pdfmom \
+ $(MAN1)
+
+# Some `makes' don't predefine RM...
+RM=rm -f
+
+
+all: gropdf pdfmom
+
+
+gropdf: gropdf.pl $(SH_DEPS_SED_SCRIPT)
+ $(RM) $@
+ sed -f $(SH_DEPS_SED_SCRIPT) \
+ -e "s|@VERSION@|$(version)$(revision)|" \
+ -e "s|@PERLPATH@|$(PERLPATH)|" \
+ -e "s|@GROFF_FONT_DIR@|$(fontpath)|" \
+ -e "s|@RT_SEP@|$(RT_SEP)|" $(srcdir)/gropdf.pl >$@
+ chmod +x $@
+
+pdfmom: pdfmom.pl $(SH_DEPS_SED_SCRIPT)
+ $(RM) $@
+ sed -f $(SH_DEPS_SED_SCRIPT) \
+ -e "s|@VERSION@|$(version)$(revision)|" \
+ -e "s|@PERLPATH@|$(PERLPATH)|" $(srcdir)/pdfmom.pl >$@
+ chmod +x $@
+
+install_data:
+ -test -d $(DESTDIR)$(bindir) || $(mkinstalldirs) $(DESTDIR)$(bindir)
+ for f in $(CMDFILES); do \
+ $(RM) $(DESTDIR)$(bindir)/$$f; \
+ $(INSTALL_SCRIPT) $$f $(DESTDIR)$(bindir)/$$f; \
+ done
+
+uninstall_sub:
+ for f in $(CMDFILES); do \
+ $(RM) $(DESTDIR)$(bindir)/$$f; \
+ done
diff --git a/src/devices/gropdf/TODO b/src/devices/gropdf/TODO
new file mode 100644
index 0000000..4d6fca1
--- /dev/null
+++ b/src/devices/gropdf/TODO
@@ -0,0 +1,31 @@
+pspic.tmac
+----------
+
+Equiv for gropdf is pdfpic (which is dependant on a program
+pdfbb (to extract MediaBox (etc.) from the pdf) which is not written yet!
+Meanwhile you could use \X'pdf: pdfpic filename -L|R|C wid (hgt) (linelen)'
+(-R and -C require a linelen) Wid or hgt may be zero (in which case the same
+scaling as the other axis is used). The disadvantage of this call (over
+pdfpic macro) is that it is transparent to groff, after placing the image
+the current X/Y position remains what it was, so you need to do your own
+'motion control' (like a .sp) to "step over" the image you just placed.
+
+psfig.tmac
+----------
+
+No equiv for gropdf.
+
+psatk.tmac
+----------
+
+No equiv for gropdf.
+
+-I : search -I directory for included files
+
+-w : set line width
+
+Another \X : \X'ps: exec 0 setlinejoin'\X'ps: exec 0 setlinecap' for mom
+
+Cater for fonts with >255 glyphs (currently accessing a glyph above 255
+(i.e. \N[260]) causes a fail). This will be fixed when font subsetting is
+implemented.
diff --git a/src/devices/gropdf/gropdf.man b/src/devices/gropdf/gropdf.man
new file mode 100644
index 0000000..8f86ac4
--- /dev/null
+++ b/src/devices/gropdf/gropdf.man
@@ -0,0 +1,1045 @@
+.ig
+Copyright (C) 2011-2013
+ Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+..
+.
+.
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+. ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+. el .TP "\\$1"
+..
+.
+.de FT
+. if '\\*(.T'ps' .ft \\$1
+. if '\\*(.T'pdf' .ft \\$1
+..
+.
+.
+.TH GROPDF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.
+.
+.SH NAME
+.
+gropdf \- PDF driver for groff
+.
+.
+.SH SYNOPSIS
+.
+.SY gropdf
+.OP \-delvs
+.OP \-F dir
+\#.OP \-I dir
+.OP \-p papersize
+\#.OP \-w n
+.OP \-y foundry
+.OP \-u [cmapfile]
+.RI [ files
+.IR .\|.\|. ]
+.YS
+.
+.LP
+It is possible to have whitespace between a command line option and its
+parameter.
+.
+.
+.SH DESCRIPTION
+.
+.B gropdf
+translates the output of GNU
+.B troff
+to PDF.
+.
+Normally
+.B gropdf
+should be invoked by using the groff command
+with a
+.B \-Tpdf
+option.
+.
+If no files are given,
+.B gropdf
+reads the standard input.
+.
+A filename of
+.B \-
+also causes
+.B gropdf
+to read the standard input.
+.
+PDF output is written to the standard output.
+.
+When
+.B gropdf
+is run by
+.B groff
+options can be passed to
+.B gropdf
+using
+.BR groff 's
+.B \-P
+option.
+.
+.LP
+See section
+.B FONT INSTALLATION
+below for a guide how to install fonts for
+.BR gropdf .
+.
+.
+.SH OPTIONS
+.
+.TP
+.B \-d
+Include debug information as comments within the PDF.
+Also produces an uncompressed PDF.
+.
+.TP
+.B \-e
+Force all fonts to be embedded in the PDF.
+.
+.TP
+.BI \-F dir
+Prepend directory
+.IB dir /dev name
+to the search path for font, and device description files;
+.I name
+is the name of the device, usually
+.BR pdf .
+.
+.\" .TP
+.\" .BI \-I dir
+.\" This option may be used to add a directory to the search path for
+.\" files on the command line and files named in
+.\" .B \[rs]X'ps: import'
+.\" and
+.\" .B \[rs]X'ps: file'
+.\" escapes.
+.\" .
+.\" The search path is initialized with the current directory.
+.\" .
+.\" This option may be specified more than once; the directories are then
+.\" searched in the order specified (but before the current directory).
+.\" .
+.\" If you want to make the current directory be read before other directories,
+.\" add
+.\" .B \-I.\&
+.\" at the appropriate place.
+.\" .
+.\" .IP
+.\" No directory search is performed for files with an absolute file name.
+.\" .
+.\" .TP
+.
+.TP
+.B \-l
+Print the document in landscape format.
+.
+.TP
+.BI \-p paper-size
+Set physical dimension of output medium.
+.
+This overrides the
+.BR papersize ,
+.BR paperlength ,
+and
+.B paperwidth
+commands in the
+.B DESC
+file; it accepts the same arguments as the
+.B papersize
+command.
+.
+See
+.B groff_font (@MAN5EXT@)
+for details.
+.
+.\" .TP
+.\" .BI \-w n
+.\" Lines should be drawn using a thickness of
+.\" .IR n \~\c
+.\" thousandths of an em.
+.\" .
+.\" If this option is not given, the line thickness defaults to 0.04\~em.
+.\" .
+.
+.TP
+.B \-v
+Print the version number.
+.
+.TP
+.BI \-y foundry
+Set the foundry to use for selecting fonts of the same name.
+.
+.TP
+.B \-e
+Forces
+.B gropdf
+to embed ALL fonts (even the 14 base PDF fonts).
+.
+.TP
+.B \-s
+Append a comment line to end of PDF showing statistics,
+i.e. number of pages in document.
+Ghostscript's
+.B ps2pdf
+complains about this line if it is included, but works anyway.
+.
+.TP
+.B \-u
+.TQ
+.BI \-u cmapfilename
+.B Gropdf
+normally includes a ToUnicode CMap with any font created using
+.B text.enc
+as the encoding file,
+this makes it easier to search for words which contain ligatures.
+You can include your own CMap by specifying a
+.I cmapfilename
+or have no CMap at all by omitting the argument.
+.
+.
+.SH USAGE
+.
+The input to
+.B gropdf
+must be in the format output by
+.BR @g@troff (@MAN1EXT@).
+.
+This is described in
+.BR groff_out (@MAN5EXT@).
+.
+.LP
+In addition, the device and font description files for the device used
+must meet certain requirements:
+.
+The resolution must be an integer multiple of\~72 times the
+.BR sizescale .
+.
+The
+.B pdf
+device uses a resolution of 72000 and a sizescale of 1000.
+.
+.LP
+The device description file must contain a valid paper size; see
+.BR groff_font (@MAN5EXT@)
+for more information.
+.
+.B gropdf
+uses the same Type\~1 Adobe postscript fonts as the
+.B grops
+device driver.
+.
+Although the PDF Standard allows the use of other font types (like TrueType)
+this implementation only accepts the Type\~1 postscript font.
+.
+Fewer Type\~1 fonts are supported natively in PDF documents than
+the standard 35 fonts supported by
+.B grops
+and all postscript printers, but all the fonts are available since any
+which aren't supported natively are automatically embedded in the PDF.
+.
+.LP
+.B gropdf
+supports the concept of foundries, that is different versions of basically
+the same font.
+.
+During install a
+.B Foundry
+file controls where fonts are found and builds
+.B groff
+fonts from the files it discovers on your system.
+.
+.LP
+Each font description file must contain a command
+.
+.IP
+.BI internalname\ psname
+.
+.LP
+which says that the PostScript name of the font is
+.IR psname .
+.
+Lines starting with
+.B #
+and blank lines are ignored.
+.
+The code for each character given in the font file must correspond
+to the code in the default encoding for the font.
+.
+This code can be used with the
+.B \[rs]N
+escape sequence in
+.B troff
+to select the character,
+even if the character does not have a groff name.
+.
+Every character in the font file must exist in the PostScript font, and
+the widths given in the font file must match the widths used
+in the PostScript font.
+.
+.LP
+Note that
+.B gropdf
+is currently only able to display the first 256 glyphs in any font.
+This restriction will be lifted in a later version.
+.
+.\" .LP
+.\" Note that
+.\" .B grops
+.\" is able to display all glyphs in a PostScript font, not only 256.
+.\" .I enc_file
+.\" (or the default encoding if no encoding file specified) just defines the
+.\" order of glyphs for the first 256 characters; all other glyphs are
+.\" accessed with additional encoding vectors which
+.\" .B grops
+.\" produces on the fly.
+.
+.LP
+.B gropdf
+can automatically include the downloadable fonts necessary
+to print the document.
+.
+Fonts may be in PFA or PFB format.
+.LP
+.
+Any downloadable fonts which should, when required, be included by
+.B gropdf
+must be listed in the file
+.BR @FONTDIR@/devpdf/download ;
+this should consist of lines of the form
+.
+.IP
+.I
+foundry font filename
+.
+.LP
+where
+.I foundry
+is the foundry name or blank for the default foundry.
+.
+.I font
+is the PostScript name of the font,
+and
+.I filename
+is the name of the file containing the font;
+lines beginning with
+.B #
+and blank lines are ignored;
+fields must be separated by tabs;
+.I filename
+is searched for using the same mechanism that is used
+for groff font metric files.
+.
+The
+.B download
+file itself is also searched for using this mechanism;
+currently, only the first found file in the font path is used.
+.
+Foundry names are usually a single character (such as `U' for the URW
+Foundry) or blank for the default foundry.
+.
+This default uses the same fonts as
+.B ghostscript
+uses when it embeds fonts in a PDF file.
+.
+.LP
+In the default setup there are styles called
+.BR R ,
+.BR I ,
+.BR B ,
+and
+.B BI
+mounted at font positions 1 to\~4.
+.
+The fonts are grouped into families
+.BR A ,
+.BR BM ,
+.BR C ,
+.BR H ,
+.BR HN ,
+.BR N ,
+.BR P ,
+and\~\c
+.B T
+having members in each of these styles:
+.
+.RS
+.TP
+.B AR
+.FT AR
+AvantGarde-Book
+.FT
+.
+.TQ
+.B AI
+.FT AI
+AvantGarde-BookOblique
+.FT
+.
+.TQ
+.B AB
+.FT AB
+AvantGarde-Demi
+.FT
+.
+.TQ
+.B ABI
+.FT ABI
+AvantGarde-DemiOblique
+.FT
+.
+.TQ
+.B BMR
+.FT BMR
+Bookman-Light
+.FT
+.
+.TQ
+.B BMI
+.FT BMI
+Bookman-LightItalic
+.FT
+.
+.TQ
+.B BMB
+.FT BMB
+Bookman-Demi
+.FT
+.
+.TQ
+.B BMBI
+.FT BMBI
+Bookman-DemiItalic
+.FT
+.
+.TQ
+.B CR
+.FT CR
+Courier
+.FT
+.
+.TQ
+.B CI
+.FT CI
+Courier-Oblique
+.FT
+.
+.TQ
+.B CB
+.FT CB
+Courier-Bold
+.FT
+.
+.TQ
+.B CBI
+.FT CBI
+Courier-BoldOblique
+.FT
+.
+.TQ
+.B HR
+.FT HR
+Helvetica
+.FT
+.
+.TQ
+.B HI
+.FT HI
+Helvetica-Oblique
+.FT
+.
+.TQ
+.B HB
+.FT HB
+Helvetica-Bold
+.FT
+.
+.TQ
+.B HBI
+.FT HBI
+Helvetica-BoldOblique
+.FT
+.
+.TQ
+.B HNR
+.FT HNR
+Helvetica-Narrow
+.FT
+.
+.TQ
+.B HNI
+.FT HNI
+Helvetica-Narrow-Oblique
+.FT
+.
+.TQ
+.B HNB
+.FT HNB
+Helvetica-Narrow-Bold
+.FT
+.
+.TQ
+.B HNBI
+.FT HNBI
+Helvetica-Narrow-BoldOblique
+.FT
+.
+.TQ
+.B NR
+.FT NR
+NewCenturySchlbk-Roman
+.FT
+.
+.TQ
+.B NI
+.FT NI
+NewCenturySchlbk-Italic
+.FT
+.
+.TQ
+.B NB
+.FT NB
+NewCenturySchlbk-Bold
+.FT
+.
+.TQ
+.B NBI
+.FT NBI
+NewCenturySchlbk-BoldItalic
+.FT
+.
+.TQ
+.B PR
+.FT PR
+Palatino-Roman
+.FT
+.
+.TQ
+.B PI
+.FT PI
+Palatino-Italic
+.FT
+.
+.TQ
+.B PB
+.FT PB
+Palatino-Bold
+.FT
+.
+.TQ
+.B PBI
+.FT PBI
+Palatino-BoldItalic
+.FT
+.
+.TQ
+.B TR
+.FT TR
+Times-Roman
+.FT
+.
+.TQ
+.B TI
+.FT TI
+Times-Italic
+.FT
+.
+.TQ
+.B TB
+.FT TB
+Times-Bold
+.FT
+.
+.TQ
+.B TBI
+.FT TBI
+Times-BoldItalic
+.FT
+.RE
+.
+.LP
+There is also the following font which is not a member of a family:
+.
+.RS
+.TP
+.B ZCMI
+.FT ZCMI
+ZapfChancery-MediumItalic
+.FT
+.RE
+.
+.LP
+There are also some special fonts called
+.B S
+for the PS Symbol font. The lower case greek characters are automatically
+slanted (to match the SymbolSlanted font (SS) available to postscript).
+.
+Zapf Dingbats is available as
+.BR ZD ,
+the "hand pointing left" glyph (\[rs]lh) is available since it
+has been defined using the \[rs]X'pdf: xrev' extension which reverses the
+direction of letters within words.
+.
+.LP
+The default color for
+.B \[rs]m
+and
+.B \[rs]M
+is black; for colors defined in the `rgb' color space
+.B setrgbcolor
+is used, for `cmy' and `cmyk'
+.BR setcmykcolor ,
+and for `gray'
+.BR setgray .
+.
+Note that
+.B setcmykcolor
+is a PostScript LanguageLevel\~2 command and thus not available on some
+older printers.
+.
+.LP
+.B gropdf
+understands some of the X\~commands produced using the
+.B \[rs]X
+escape sequences supported by
+.B grops.
+Specifically, the following is supported.
+.
+.TP
+.B "\[rs]X'ps: invis'"
+Suppress output.
+.
+.TP
+.B "\[rs]X'ps: endinvis'"
+Stop suppressing output.
+.
+.TP
+.B "\[rs]X'ps: exec gsave currentpoint 2 copy translate \fIn\fP rotate neg exch neg exch translate'"
+where
+.I n
+is the angle of rotation.
+This is to support the
+.I align
+command in
+.BR gpic .
+.
+.TP
+.B "\[rs]X'ps: exec grestore'"
+Again used by
+.B gpic
+to restore after rotation.
+.
+.TP
+.BI "\[rs]X'ps: exec " "n " "setlinejoin'"
+where
+.I n
+can be one of the following values.
+.IP
+0 = Miter join
+.br
+1 = Round join
+.br
+2 = Bevel join
+.
+.TP
+.BI "\[rs]X'ps: exec " "n " "setlinecap'"
+where
+.I n
+can be one of the following values.
+.IP
+0 = Butt cap
+.br
+1 = Round cap, and
+.br
+2 = Projecting square cap
+.
+.LP
+.TP
+.B "\[rs]X'ps: ... pdfmark'"
+All the
+.I pdfmark
+macros installed by using
+.I -m pdfmark
+or
+.I -m mspdf
+(see documentation in `pdfmark.pdf').
+A subset of these macros are installed automatically when you use
+.B -Tpdf
+so you should not need to use `-m pdfmark' for using most of the PDF
+functionality.
+.
+.LP
+All other
+.B ps:
+tags are silently ignored.
+.
+.LP
+One
+.B \[rs]X
+special used by the DVI driver is also recognised:
+.
+.TP
+.BI \[rs]X'papersize= paper-size '
+where the
+.I paper-size
+parameter is the same as the
+.B papersize
+command.
+.
+See
+.BR groff_font (@MAN5EXT@)
+for details.
+This means that you can alter the page size at will within the PDF file
+being created by
+.BR gropdf .
+.
+If you do want to change the paper size, it must be done before you start
+creating the page.
+.
+.LP
+In addition,
+.B gropdf
+supports its own suite of
+.B pdf:
+tags.
+.
+The following tags are supported:
+.
+.TP
+.BI "\[rs]X'pdf: pdfpic " "file alignment width height line-length" '
+Place an image of the specified
+.I width
+containing the PDF drawing from file
+.I file
+of desired
+.I width
+and
+.I height
+(if
+.I height
+is missing or zero then it is scaled proportionally).
+.
+If
+.I alignment
+is
+.B \-L
+the drawing is left aligned.
+.
+If it is
+.B \-C
+or
+.B \-R
+a
+.I linelength
+greater than the width of the drawing is required as well.
+.
+If
+.I width
+is specified as zero then the width is scaled in proportion to the height.
+.
+.\" .IP
+.\" See
+.\" .BR groff_tmac (@MAN5EXT@)
+.\" for a description of the
+.\" .B PSPIC
+.\" macro which provides a convenient high-level interface for inclusion of
+.\" PostScript graphics.
+.
+.TP
+.B \[rs]X'pdf: xrev'
+This toggles a flag which reverses the direction of printing
+.IR "letter by letter" ,
+i.e., each separate letter is reversed, not the entire word.
+.
+This is useful for reversing the direction of glyphs in the Dingbats font.
+.
+To return to normal printing repeat the command again.
+.
+.TP
+.BI "\[rs]X'pdf: markstart " "/ANN definition" '
+The macros which support PDF Bookmarks use this call internally to start the
+definition of bookmark hotspot (user will have called
+`.pdfhref\~L' with the text which will become the `hot spot' region).
+.
+Normally this is never used except from within the pdfmark macros.
+.
+.TP
+.B \[rs]X'pdf: markend'
+The macros which support PDF Bookmarks use this call internally to stop the
+definition of bookmark hotspot (user will have called
+`.pdfhref\~L' with the text which will become the `hot spot' region).
+.
+Normally this is never used except from within the pdfmark macros.
+.
+.TP
+.B \[rs]X'pdf: marksuspend'
+.TQ
+.B \[rs]X'pdf: markrestart'
+If you are using page traps to produce headings, footings, etc., you need to
+use these in case a `hot spot' crosses a page boundary, otherwise any text
+output by the heading or footing macro will be marked as part of the `hot
+spot'.
+.
+To stop this happening just place
+`.pdfmarksuspend' and `.pdfmarkrestart' at the start and end of the page trap macro,
+respectively.
+.
+(These are just convenience macros which emit the \[rs]X code.
+.
+These macros must only be used within page traps.)
+.
+.SS Importing graphics
+.
+.B gropdf
+only supports importing other PDF files as graphics.
+.
+But that PDF file may contain any of the graphic formats supported by the PDF
+standard (such as JPEG, PNG, GIF, etc.).
+.
+So any application which outputs PDF can be used as an embedded file in
+.BR gropdf .
+.
+The PDF file you wish to insert must be a single page and the drawing must
+just fit inside the media size of the PDF file.
+.
+So, in
+.BR inkscape (1)
+or
+.BR gimp (1)
+(for example) make sure the canvas size just fits the image.
+.
+.LP
+The PDF parser used in
+.B gropdf
+has not been rigorously tested with all possible applications which produce
+PDFs.
+.
+If you find a single page PDF which fails to import properly, it is worth
+running it through the
+.
+.BR pdftk (1)
+program by issuing the command:
+.
+.RS
+.LP
+.B pdftk
+.I oldfile.pdf
+.B output
+.I newfile.pdf
+.RE
+.
+.LP
+You may find that
+.I newfile.pdf
+will now load successfully.
+.
+.SS TrueType and other font formats
+.
+.B gropdf
+does not support any other fonts except Adobe Type 1 (PFA or PFB).
+.
+.SH FONT INSTALLATION
+.
+This section gives a summary of the above explanations; it can serve
+as a step-by-step font installation guide for
+.BR gropdf .
+.
+.ds BU \[bu]\ \ \"
+.de LI
+.IP "" 4
+\h'-\w'\*[BU]'u'\*[BU]\c
+..
+.LI
+Convert your font to something groff understands.
+.
+This is either a PostScript Type\~1 font in either PFA or PFB,
+together with an AFM file.
+.
+.IP
+The very first line in a PFA/PFB file contains this:
+.
+.RS
+.IP
+.B %!PS-AdobeFont-1.0:
+.RE
+.
+.IP
+A PFB file has this also in the first line, but the string is
+preceded with some binary bytes.
+.
+.LI
+Convert the AFM file to a groff font description file with the
+.BR \%afmtodit (@MAN1EXT@)
+program.
+.
+An example call is
+.
+.RS
+.IP
+afmtodit Foo-Bar-Bold.afm map/textmap FBB
+.RE
+.
+.IP
+which converts the metric file `Foo-Bar-Bold.afm' to the groff
+font `FBB'.
+.
+If you have a font family which comes with normal, bold, italic,
+and bold italic faces, it is recommended to use the letters
+.BR R ,
+.BR B ,
+.BR I ,
+and
+.BR BI ,
+respectively, as postfixes in the groff font names to make groff's
+`.fam' request work.
+.
+An example is groff's built-in Times-Roman font: The font family name
+is
+.BR T ,
+and the groff font names are
+.BR TR ,
+.BR TB ,
+.BR TI ,
+and
+.BR TBI .
+.
+.LI
+Install both the groff font description files and the fonts in a
+`devpdf' subdirectory of the font path which groff finds.
+.
+See the
+.B ENVIRONMENT
+section in the
+.BR troff (@MAN1EXT@)
+man page which lists the actual value of the font path.
+.
+Note that groff doesn't use the AFM files (but it is a good idea to
+store them anyway).
+.
+.LI
+Register all fonts which must be downloaded to the printer in the
+`devpdf/download' file.
+.
+Only the first occurrence of this file in the font path is read.
+.
+This means that you should copy the default `download' file to the
+first directory in your font path and add your fonts there.
+.
+To continue the above example we assume that the PS font name for
+Foo-Bar-Bold.pfa is `XY-Foo-Bar-Bold' (the PS font name is stored in the
+.B internalname
+field in the `FBB' file) and belongs to foundry `F', thus the following
+line should be added to `download':
+.
+.RS
+.IP
+.B F XY-Foo-Bar-Bold Foo-Bar-Bold.pfa
+.
+.LP
+Use a tab character to separate the fields, and the
+`foundry' field should be null for the default foundry.
+.RE
+.
+.
+.SH ENVIRONMENT
+.
+.TP
+.SM
+.B GROFF_FONT_PATH
+A list of directories in which to search for the
+.BI dev name
+directory in addition to the default ones.
+.
+If, in the `download' file, the
+font file has been specified with a full path, no directories are searched.
+.
+See
+.BR @g@troff (@MAN1EXT@)
+and
+.BR \%groff_font (@MAN5EXT@)
+for more details.
+.
+.
+.SH FILES
+.
+.Tp \w'\fB@FONTDIR@/devpdf/download'u+2n
+.B @FONTDIR@/devpdf/DESC
+Device description file.
+.
+.TP
+.BI @FONTDIR@/devpdf/ F
+Font description file for font\~\c
+.IR F .
+.
+.TP
+.BI @FONTDIR@/devpdf/ U-F
+Font description file for font\~\c
+.I F
+(using foundry\~\c
+.I U
+rather than the default foundry).
+.
+.TP
+.B @FONTDIR@/devpdf/download
+List of downloadable fonts.
+.
+.TP
+.B @FONTDIR@/devpdf/Foundry
+A Perl script used during install to locate suitable fonts.
+.
+.TP
+.B @FONTDIR@/devpdf/enc/text.enc
+Encoding used for text fonts.
+.
+.TP
+.B @MACRODIR@/pdf.tmac
+Macros for use with
+.BR gropdf ;
+automatically loaded by
+.BR troffrc .
+.
+.\" .TP
+.\" .B @MACRODIR@/pspic.tmac
+.\" Definition of
+.\" .B PSPIC
+.\" macro,
+.\" automatically loaded by
+.\" .BR ps.tmac .
+.\" .
+.
+.
+.SH "SEE ALSO"
+.
+.BR \%afmtodit (@MAN1EXT@),
+.BR groff (@MAN1EXT@),
+.BR grops (@MAN1EXT@),
+.BR @g@troff (@MAN1EXT@),
+.BR grops (@MAN1EXT@),
+.BR \%pfbtops (@MAN1EXT@),
+.BR \%groff_out (@MAN5EXT@),
+.BR \%groff_font (@MAN5EXT@),
+.BR \%groff_char (@MAN7EXT@),
+.BR \%groff_tmac (@MAN5EXT@)
+.
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
diff --git a/src/devices/gropdf/gropdf.pl b/src/devices/gropdf/gropdf.pl
new file mode 100644
index 0000000..9a8288c
--- /dev/null
+++ b/src/devices/gropdf/gropdf.pl
@@ -0,0 +1,3276 @@
+#!@PERLPATH@ -w
+#
+# gropdf : PDF post processor for groff
+# Deri James : 4th May 2009
+#
+
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+# Written by Deri James <deri@chuzzlewit.demon.co.uk>
+#
+# This file is part of groff.
+#
+# groff is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# groff is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+use strict;
+use Getopt::Long qw(:config bundling);
+use Compress::Zlib;
+
+my %cfg;
+
+$cfg{GROFF_VERSION}='@VERSION@';
+$cfg{GROFF_FONT_PATH}='@GROFF_FONT_DIR@';
+$cfg{RT_SEP}='@RT_SEP@';
+binmode(STDOUT);
+
+my @obj; # Array of PDF objects
+my $objct=0; # Count of Objects
+my $fct=0; # Output count
+my %fnt; # Used fonts
+my $lct=0; # Input Line Count
+my $src_name='';
+my %env; # Current environment
+my %fontlst; # Fonts Loaded
+my $rot=0; # Portrait
+my %desc; # Contents of DESC
+my %download; # Contents of downlopad file
+my $pages; # Pointer to /Pages object
+my $devnm='devpdf';
+my $cpage; # Pointer to current pages
+my $cpageno=0; # Object no of current page
+my $cat; # Pointer to catalogue
+my $dests; # Pointer to Dests
+my @mediabox=(0,0,595,842);
+my @defaultmb=(0,0,595,842);
+my $stream=''; # Current Text/Graphics stream
+my $cftsz=10; # Current font sz
+my $cft; # Current Font
+my $lwidth=1; # current linewidth
+my $linecap=1;
+my $linejoin=1;
+my $textcol=''; # Current groff text
+my $fillcol=''; # Current groff fill
+my $curfill=''; # Current PDF fill
+my $strkcol='';
+my $curstrk='';
+my @lin=(); # Array holding current line of text
+my @ahead=(); # Buffer used to hol the next line
+my $mode='g'; # Graphic (g) or Text (t) mode;
+my $xpos=0; # Current X position
+my $ypos=0; # Current Y position
+my $tmxpos=0;
+my $kernadjust=0;
+my $curkern=0;
+my $widtbl; # Pointer to width table for current font size
+my $origwidtbl; # Pointer to width table
+my $krntbl; # Pointer to kern table
+my $matrix="1 0 0 1";
+my $whtsz; # Current width of a space
+my $poschg=0; # V/H pending
+my $fontchg=0; # font change pending
+my $tnum=2; # flatness of B-Spline curve
+my $tden=3; # flatness of B-Spline curve
+my $linewidth=40;
+my $w_flg=0;
+my $nomove=0;
+my $pendmv=0;
+my $gotT=0;
+my $suppress=0; # Suppress processing?
+my %incfil; # Included Files
+my @outlev=([0,undef,0,0]); # Structure pdfmark /OUT entries
+my $curoutlev=\@outlev;
+my $curoutlevno=0; # Growth point for @curoutlev
+my $Foundry='';
+my $xrev=0; # Reverse x direction of font
+my $matrixchg=0;
+my $wt=-1;
+my $thislev=1;
+my $mark=undef;
+my $suspendmark=undef;
+my $n_flg=1;
+my $pginsert=-1; # Growth point for kids array
+my %pgnames; # 'names' of pages for switchtopage
+my @outlines=(); # State of Bookmark Outlines at end of each page
+my $custompaper=0; # Has there been an X papersize
+my $textenccmap=''; # CMap for groff text.enc encoding
+
+my %ppsz=( 'ledger'=>[1224,792],
+ 'legal'=>[612,1008],
+ 'letter'=>[612,792],
+ 'a0'=>[2384,3370],
+ 'a1'=>[1684,2384],
+ 'a2'=>[1191,1684],
+ 'a3'=>[842,1191],
+ 'a4'=>[595,842],
+ 'a5'=>[420,595],
+ 'a6'=>[297,420],
+ 'a7'=>[210,297],
+ 'a8'=>[148,210],
+ 'a9'=>[105,148],
+ 'a10'=>[73,105],
+ 'isob0'=>[2835,4008],
+ 'isob1'=>[2004,2835],
+ 'isob2'=>[1417,2004],
+ 'isob3'=>[1001,1417],
+ 'isob4'=>[709,1001],
+ 'isob5'=>[499,709],
+ 'isob6'=>[354,499],
+ 'c0'=>[2599,3677],
+ 'c1'=>[1837,2599],
+ 'c2'=>[1298,1837],
+ 'c3'=>[918,1298],
+ 'c4'=>[649,918],
+ 'c5'=>[459,649],
+ 'c6'=>[323,459] );
+
+my $ucmap=<<'EOF';
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (Adobe)
+/Ordering (UCS)
+/Supplement 0
+>> def
+/CMapName /Adobe-Identity-UCS def
+/CMapType 2 def
+1 begincodespacerange
+<0000> <FFFF>
+endcodespacerange
+2 beginbfrange
+<008b> <008f> [<00660066> <00660069> <0066006c> <006600660069> <00660066006C>]
+<00ad> <00ad> <002d>
+endbfrange
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+EOF
+
+my $fd;
+my $frot;
+my $fpsz;
+my $embedall=0;
+my $debug=0;
+my $version=0;
+my $stats=0;
+my $unicodemap;
+
+#Load_Config();
+
+GetOptions("F=s" => \$fd, 'l' => \$frot, 'p=s' => \$fpsz, 'd!' => \$debug, 'v' => \$version, 'e' => \$embedall, 'y=s' => \$Foundry, 's' => \$stats, 'u:s' => \$unicodemap);
+
+if ($version)
+{
+ print "GNU gropdf (groff) version $cfg{GROFF_VERSION}\n";
+ exit;
+}
+
+if (defined($unicodemap))
+{
+ if ($unicodemap eq '')
+ {
+ $ucmap='';
+ }
+ elsif (-r $unicodemap)
+ {
+ local $/;
+ open(F,"<$unicodemap") or die "gropdf: Failed to open '$unicodemap'";
+ ($ucmap)=(<F>);
+ close(F);
+ }
+ else
+ {
+ Msg(0,"Failed to find '$unicodemap' - ignoring");
+ }
+}
+
+# Search for 'font directory': paths in -f opt, shell var GROFF_FONT_PATH, default paths
+
+my $fontdir=$cfg{GROFF_FONT_PATH};
+$fontdir=$ENV{GROFF_FONT_PATH}.$cfg{RT_SEP}.$fontdir if exists($ENV{GROFF_FONT_PATH});
+$fontdir=$fd.$cfg{RT_SEP}.$fontdir if defined($fd);
+
+$rot=90 if $frot;
+$matrix="0 1 -1 0" if $frot;
+
+LoadDownload();
+LoadDesc();
+
+my $unitwidth=$desc{unitwidth};
+my $papersz=$desc{papersize};
+$papersz=lc($fpsz) if $fpsz;
+
+$env{FontHT}=0;
+$env{FontSlant}=0;
+MakeMatrix();
+
+if (substr($papersz,0,1) eq '/' and -r $papersz)
+{
+ if (open(P,"<$papersz"))
+ {
+ while (<P>)
+ {
+ chomp;
+ s/# .*//;
+ next if $_ eq '';
+ $papersz=$_;
+ last
+ }
+
+ close(P);
+ }
+}
+
+if ($papersz=~m/([\d.]+)([cipP]),([\d.]+)([cipP])/)
+{
+ @defaultmb=@mediabox=(0,0,ToPoints($3,$4),ToPoints($1,$2));
+}
+elsif (exists($ppsz{$papersz}))
+{
+ @defaultmb=@mediabox=(0,0,$ppsz{$papersz}->[0],$ppsz{$papersz}->[1]);
+}
+
+my (@dt)=localtime(time);
+my $dt=PDFDate(\@dt);
+
+my %info=('Creator' => "(groff version $cfg{GROFF_VERSION})",
+ 'Producer' => "(gropdf version $cfg{GROFF_VERSION})",
+ 'ModDate' => "($dt)",
+ 'CreationDate' => "($dt)");
+while (<>)
+{
+ chomp;
+ s/\r$//;
+ $lct++;
+
+ do # The ahead buffer behaves like 'ungetc'
+ {{
+ if (scalar(@ahead))
+ {
+ $_=shift(@ahead);
+ }
+
+
+ my $cmd=substr($_,0,1);
+ next if $cmd eq '#'; # just a comment
+ my $lin=substr($_,1);
+
+ while ($cmd eq 'w')
+ {
+ $cmd=substr($lin,0,1);
+ $lin=substr($lin,1);
+ $w_flg=1 if $gotT;
+ }
+
+ $lin=~s/^\s+//;
+# $lin=~s/\s#.*?$//; # remove comment
+ $stream.="\% $_\n" if $debug;
+
+ do_x($lin),next if ($cmd eq 'x');
+ next if $suppress;
+ do_p($lin),next if ($cmd eq 'p');
+ do_f($lin),next if ($cmd eq 'f');
+ do_s($lin),next if ($cmd eq 's');
+ do_m($lin),next if ($cmd eq 'm');
+ do_D($lin),next if ($cmd eq 'D');
+ do_V($lin),next if ($cmd eq 'V');
+ do_v($lin),next if ($cmd eq 'v');
+ do_t($lin),next if ($cmd eq 't');
+ do_u($lin),next if ($cmd eq 'u');
+ do_C($lin),next if ($cmd eq 'C');
+ do_c($lin),next if ($cmd eq 'c');
+ do_N($lin),next if ($cmd eq 'N');
+ do_h($lin),next if ($cmd eq 'h');
+ do_H($lin),next if ($cmd eq 'H');
+ do_n($lin),next if ($cmd eq 'n');
+
+ my $tmp=scalar(@ahead);
+ }} until scalar(@ahead) == 0;
+
+}
+
+
+if ($cpageno > 0)
+{
+ $cpage->{MediaBox}=\@mediabox if $custompaper;
+ PutObj($cpageno);
+ OutStream($cpageno+1);
+}
+
+
+PutOutlines(\@outlev);
+
+PutObj(1);
+
+my $info=BuildObj(++$objct,\%info);
+
+PutObj($objct);
+
+foreach my $fontno (keys %fontlst)
+{
+ my $o=$fontlst{$fontno}->{FNT};
+ my $p=GetObj($fontlst{$fontno}->{OBJ});
+
+ if (exists($p->{LastChar}) and $p->{LastChar} > 255)
+ {
+ $p->{LastChar} = 255;
+ splice(@{$o->{GNO}},256);
+ splice(@{$o->{WID}},256);
+ }
+}
+
+foreach my $o (3..$objct)
+{
+ PutObj($o) if (!exists($obj[$o]->{XREF}));
+}
+
+#my $encrypt=BuildObj(++$objct,{'Filter' => '/Standard', 'V' => 1, 'R' => 2, 'P' => 252});
+#PutObj($objct);
+PutObj(2);
+
+my $xrefct=$fct;
+
+$objct+=1;
+print "xref\n0 $objct\n0000000000 65535 f \n";
+
+foreach my $xr (@obj)
+{
+ next if !defined($xr);
+ printf("%010d 00000 n \n",$xr->{XREF});
+}
+
+print "trailer\n<<\n/Info $info\n/Root 1 0 R\n/Size $objct\n>>\nstartxref\n$fct\n\%\%EOF\n";
+print "\% Pages=$pages->{Count}\n" if $stats;
+
+
+sub MakeMatrix
+{
+ my $fontxrev=shift||0;
+ my @mat=($frot)?(0,1,-1,0):(1,0,0,1);
+
+ if (!$frot)
+ {
+ if ($env{FontHT} != 0)
+ {
+ $mat[3]=sprintf('%.3f',$env{FontHT}/$cftsz);
+ }
+
+ if ($env{FontSlant} != 0)
+ {
+ my $slant=$env{FontSlant};
+ $slant*=$env{FontHT}/$cftsz if $env{FontHT} != 0;
+ my $ang=rad($slant);
+
+ $mat[2]=sprintf('%.3f',sin($ang)/cos($ang));
+ }
+
+ if ($fontxrev)
+ {
+ $mat[0]=-$mat[0];
+ }
+ }
+
+ $matrix=join(' ',@mat);
+ $matrixchg=1;
+}
+
+sub PutOutlines
+{
+ my $o=shift;
+ my $outlines;
+
+ if ($#{$o} > 0)
+ {
+ # We've got Outlines to deal with
+ my $openct=$curoutlev->[0]->[2];
+
+ while ($thislev-- > 1)
+ {
+ my $nxtoutlev=$curoutlev->[0]->[1];
+ $nxtoutlev->[0]->[2]+=$openct if $curoutlev->[0]->[3]==1;
+ $openct=0 if $nxtoutlev->[0]->[3]==-1;
+ $curoutlev=$nxtoutlev;
+ }
+
+ $cat->{Outlines}=BuildObj(++$objct,{'Count' => abs($o->[0]->[0])+$o->[0]->[2]});
+ $outlines=$obj[$objct]->{DATA};
+ }
+ else
+ {
+ return;
+ }
+
+ SetOutObj($o);
+
+ $outlines->{First}=$o->[1]->[2];
+ $outlines->{Last}=$o->[$#{$o}]->[2];
+
+ LinkOutObj($o,$cat->{Outlines});
+}
+
+sub SetOutObj
+{
+ my $o=shift;
+
+ for my $j (1..$#{$o})
+ {
+ my $ono=BuildObj(++$objct,$o->[$j]->[0]);
+ $o->[$j]->[2]=$ono;
+
+ SetOutObj($o->[$j]->[1]) if $#{$o->[$j]->[1]} > -1;
+ }
+}
+
+sub LinkOutObj
+{
+ my $o=shift;
+ my $parent=shift;
+
+ for my $j (1..$#{$o})
+ {
+ my $op=GetObj($o->[$j]->[2]);
+
+ $op->{Next}=$o->[$j+1]->[2] if ($j < $#{$o});
+ $op->{Prev}=$o->[$j-1]->[2] if ($j > 1);
+ $op->{Parent}=$parent;
+
+ if ($#{$o->[$j]->[1]} > -1)
+ {
+ $op->{Count}=$o->[$j]->[1]->[0]->[2]*$o->[$j]->[1]->[0]->[3];# if exists($op->{Count}) and $op->{Count} > 0;
+ $op->{First}=$o->[$j]->[1]->[1]->[2];
+ $op->{Last}=$o->[$j]->[1]->[$#{$o->[$j]->[1]}]->[2];
+ LinkOutObj($o->[$j]->[1],$o->[$j]->[2]);
+ }
+ }
+}
+
+sub GetObj
+{
+ my $ono=shift;
+ ($ono)=split(' ',$ono);
+ return($obj[$ono]->{DATA});
+}
+
+
+
+sub PDFDate
+{
+ my $dt=shift;
+ return(sprintf("D:%04d%02d%02d%02d%02d%02d% +02d'00'",$dt->[5]+1900,$dt->[4]+1,$dt->[3],$dt->[2],$dt->[1],$dt->[0],( localtime time() + 3600*( 12 - (gmtime)[2] ) )[2] - 12));
+}
+
+sub ToPoints
+{
+ my $num=shift;
+ my $unit=shift;
+
+ if ($unit eq 'i')
+ {
+ return($num*72);
+ }
+ elsif ($unit eq 'c')
+ {
+ return int($num*72/2.54);
+ }
+ elsif ($unit eq 'm') # millimetres
+ {
+ return int($num*72/25.4);
+ }
+ elsif ($unit eq 'p')
+ {
+ return($num);
+ }
+ elsif ($unit eq 'P')
+ {
+ return($num*6);
+ }
+ elsif ($unit eq 'z')
+ {
+ return($num/$unitwidth);
+ }
+ else
+ {
+ Msg(1,"Unknown scaling factor '$unit'");
+ }
+}
+
+sub Load_Config
+{
+ open(CFG,"<gropdf_config") or die "Can't open config file: $!";
+
+ while (<CFG>)
+ {
+ chomp;
+ my ($key,$val)=split(/ ?= ?/);
+
+ $cfg{$key}=$val;
+ }
+
+ close(CFG);
+}
+
+sub LoadDownload
+{
+ my $f;
+
+ OpenFile(\$f,$fontdir,"download");
+ Msg(1,"Failed to open 'download'") if !defined($f);
+
+ while (<$f>)
+ {
+ chomp;
+ s/#.*$//;
+ next if $_ eq '';
+ my ($foundry,$name,$file)=split(/\t+/);
+ if (substr($file,0,1) eq '*')
+ {
+ next if !$embedall;
+ $file=substr($file,1);
+ }
+
+ $download{"$foundry $name"}=$file;
+ }
+
+ close($f);
+}
+
+sub OpenFile
+{
+ my $f=shift;
+ my $dirs=shift;
+ my $fnm=shift;
+
+ if (substr($fnm,0,1) eq '/' or substr($fnm,1,1) eq ':') # dos
+ {
+ return if -r "$fnm" and open($$f,"<$fnm");
+ }
+
+ my (@dirs)=split($cfg{RT_SEP},$dirs);
+
+ foreach my $dir (@dirs)
+ {
+ last if -r "$dir/$devnm/$fnm" and open($$f,"<$dir/$devnm/$fnm");
+ }
+}
+
+sub LoadDesc
+{
+ my $f;
+
+ OpenFile(\$f,$fontdir,"DESC");
+ Msg(1,"Failed to open 'DESC'") if !defined($f);
+
+ while (<$f>)
+ {
+ chomp;
+ s/#.*$//;
+ next if $_ eq '';
+ my ($name,$prms)=split(' ',$_,2);
+ $desc{lc($name)}=$prms;
+ }
+
+ close($f);
+}
+
+sub rad { $_[0]*3.14159/180 }
+
+my $InPicRotate=0;
+
+sub do_x
+{
+ my $l=shift;
+ my ($xcmd,@xprm)=split(' ',$l);
+ $xcmd=substr($xcmd,0,1);
+
+ if ($xcmd eq 'T')
+ {
+ Msg(0,"Expecting a pdf pipe (got $xprm[0])") if $xprm[0] ne substr($devnm,3);
+ }
+ elsif ($xcmd eq 'f') # Register Font
+ {
+ $xprm[1]="${Foundry}-$xprm[1]" if $Foundry ne '';
+ LoadFont($xprm[0],$xprm[1]);
+ }
+ elsif ($xcmd eq 'F') # Source File (for errors)
+ {
+ $env{SourceFile}=$xprm[0];
+ }
+ elsif ($xcmd eq 'H') # FontHT
+ {
+ $xprm[0]/=$unitwidth;
+ $xprm[0]=0 if $xprm[0] == $cftsz;
+ $env{FontHT}=$xprm[0];
+ MakeMatrix();
+ }
+ elsif ($xcmd eq 'S') # FontSlant
+ {
+ $env{FontSlant}=$xprm[0];
+ MakeMatrix();
+ }
+ elsif ($xcmd eq 'i') # Initialise
+ {
+ if ($objct == 0)
+ {
+ $objct++;
+ @defaultmb=@mediabox;
+ BuildObj($objct,{'Pages' => BuildObj($objct+1,
+ {'Kids' => [],
+ 'Count' => 0,
+ 'Type' => '/Pages',
+ 'Rotate' => $rot,
+ 'MediaBox' => \@defaultmb,
+ 'Resources' =>
+ {'Font' => {},
+ 'ProcSet' => ['/PDF', '/Text', '/ImageB', '/ImageC', '/ImageI']}
+ }
+ ),
+ 'Type' => '/Catalog'});
+
+ $cat=$obj[$objct]->{DATA};
+ $objct++;
+ $pages=$obj[2]->{DATA};
+ Put("%PDF-1.4\n\x25\xe2\xe3\xcf\xd3\n");
+ }
+ }
+ elsif ($xcmd eq 'X')
+ {
+ # There could be extended args
+ do
+ {{
+ LoadAhead(1);
+ if (substr($ahead[0],0,1) eq '+')
+ {
+ $l.="\n".substr($ahead[0],1);
+ shift(@ahead);
+ }
+ }} until $#ahead==0;
+
+ ($xcmd,@xprm)=split(' ',$l);
+ $xcmd=substr($xcmd,0,1);
+
+ if ($xprm[0]=~m/^(.+:)(.+)/)
+ {
+ splice(@xprm,1,0,$2);
+ $xprm[0]=$1;
+ }
+
+ my $par=join(' ',@xprm[1..$#xprm]);
+
+ if ($xprm[0] eq 'ps:')
+ {
+ if ($xprm[1] eq 'invis')
+ {
+ $suppress=1;
+ }
+ elsif ($xprm[1] eq 'endinvis')
+ {
+ $suppress=0;
+ }
+ elsif ($par=~m/exec gsave currentpoint 2 copy translate (.+) rotate neg exch neg exch translate/)
+ {
+ # This is added by gpic to rotate a single object
+
+ my $theta=-rad($1);
+
+ IsGraphic();
+ my ($curangle,$hyp)=RtoP($xpos,GraphY($ypos));
+ my ($x,$y)=PtoR($theta+$curangle,$hyp);
+ $stream.="q\n".sprintf("%.3f %.3f %.3f %.3f %.3f %.3f cm",cos($theta),sin($theta),-sin($theta),cos($theta),$xpos-$x,GraphY($ypos)-$y)."\n";
+ $InPicRotate=1;
+ }
+ elsif ($par=~m/exec grestore/ and $InPicRotate)
+ {
+ IsGraphic();
+ $stream.="Q\n";
+ $InPicRotate=0;
+ }
+ elsif ($par=~m/exec (\d) setlinejoin/)
+ {
+ IsGraphic();
+ $linejoin=$1;
+ $stream.="$linejoin j\n";
+ }
+ elsif ($par=~m/exec (\d) setlinecap/)
+ {
+ IsGraphic();
+ $linecap=$1;
+ $stream.="$linecap J\n";
+ }
+ elsif ($par=~m/\[(.+) pdfmark/)
+ {
+ my $pdfmark=$1;
+ $pdfmark=~s((\d{4,6}) u)(sprintf("%.1f",$1/$desc{sizescale}))eg;
+
+ if ($pdfmark=~m/(.+) \/DOCINFO/)
+ {
+ my @xwds=split(' ',"<< $1 >>");
+ my $docinfo=ParsePDFValue(\@xwds);
+
+ foreach my $k (keys %{$docinfo})
+ {
+ $info{$k}=$docinfo->{$k} if $k ne 'Producer';
+ }
+ }
+ elsif ($pdfmark=~m/(.+) \/DOCVIEW/)
+ {
+ my @xwds=split(' ',"<< $1 >>");
+ my $docview=ParsePDFValue(\@xwds);
+
+ foreach my $k (keys %{$docview})
+ {
+ $cat->{$k}=$docview->{$k} if !exists($cat->{$k});
+ }
+ }
+ elsif ($pdfmark=~m/(.+) \/DEST/)
+ {
+ my @xwds=split(' ',"<< $1 >>");
+ my $dest=ParsePDFValue(\@xwds);
+ foreach my $v (@{$dest->{View}})
+ {
+ $v=GraphY(abs($v)) if substr($v,0,1) eq '-';
+ }
+ unshift(@{$dest->{View}},"$cpageno 0 R");
+
+ if (!defined($dests))
+ {
+ $cat->{Dests}=BuildObj(++$objct,{});
+ $dests=$obj[$objct]->{DATA};
+ }
+
+ my $k=substr($dest->{Dest},1);
+ $dests->{$k}=$dest->{View};
+ }
+ elsif ($pdfmark=~m/(.+) \/ANN/)
+ {
+ my $l=$1;
+ $l=~s/Color/C/;
+ $l=~s/Action/A/;
+ $l=~s/Title/T/;
+ $l=~s'/Subtype /URI'/S /URI';
+ my @xwds=split(' ',"<< $l >>");
+ my $annotno=BuildObj(++$objct,ParsePDFValue(\@xwds));
+ my $annot=$obj[$objct];
+ $annot->{DATA}->{Type}='/Annot';
+ FixRect($annot->{DATA}->{Rect}); # Y origin to ll
+ FixPDFColour($annot->{DATA});
+ push(@{$cpage->{Annots}},$annotno);
+ }
+ elsif ($pdfmark=~m/(.+) \/OUT/)
+ {
+ my @xwds=split(' ',"<< $1 >>");
+ my $out=ParsePDFValue(\@xwds);
+
+ my $this=[$out,[]];
+
+ if (exists($out->{Level}))
+ {
+ my $lev=abs($out->{Level});
+ my $levsgn=sgn($out->{Level});
+ delete($out->{Level});
+
+ if ($lev > $thislev)
+ {
+ my $thisoutlev=$curoutlev->[$#{$curoutlev}]->[1];
+ $thisoutlev->[0]=[0,$curoutlev,0,$levsgn];
+ $curoutlev=$thisoutlev;
+ $curoutlevno=$#{$curoutlev};
+ $thislev++;
+ }
+ elsif ($lev < $thislev)
+ {
+ my $openct=$curoutlev->[0]->[2];
+
+ while ($thislev > $lev)
+ {
+ my $nxtoutlev=$curoutlev->[0]->[1];
+ $nxtoutlev->[0]->[2]+=$openct if $curoutlev->[0]->[3]==1;
+ $openct=0 if $nxtoutlev->[0]->[3]==-1;
+ $curoutlev=$nxtoutlev;
+ $thislev--;
+ }
+
+ $curoutlevno=$#{$curoutlev};
+ }
+
+# push(@{$curoutlev},$this);
+ splice(@{$curoutlev},++$curoutlevno,0,$this);
+ $curoutlev->[0]->[2]++;
+ }
+ else
+ {
+ # This code supports old pdfmark.tmac, unused by pdf.tmac
+ while ($curoutlev->[0]->[0] == 0 and defined($curoutlev->[0]->[1]))
+ {
+ $curoutlev=$curoutlev->[0]->[1];
+ }
+
+ $curoutlev->[0]->[0]--;
+ $curoutlev->[0]->[2]++;
+ push(@{$curoutlev},$this);
+
+
+ if (exists($out->{Count}) and $out->{Count} != 0)
+ {
+ push(@{$this->[1]},[abs($out->{Count}),$curoutlev,0,sgn($out->{Count})]);
+ $curoutlev=$this->[1];
+
+ if ($out->{Count} > 0)
+ {
+ my $p=$curoutlev;
+
+ while (defined($p))
+ {
+ $p->[0]->[2]+=$out->{Count};
+ $p=$p->[0]->[1];
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ elsif (lc($xprm[0]) eq 'pdf:')
+ {
+ if (lc($xprm[1]) eq 'import')
+ {
+ my $fil=$xprm[2];
+ my $llx=$xprm[3];
+ my $lly=$xprm[4];
+ my $urx=$xprm[5];
+ my $ury=$xprm[6];
+ my $wid=$xprm[7];
+ my $hgt=$xprm[8]||-1;
+ my $mat=[1,0,0,1,0,0];
+
+ if (!exists($incfil{$fil}))
+ {
+ if ($fil=~m/\.pdf$/)
+ {
+ $incfil{$fil}=LoadPDF($fil,$mat,$wid,$hgt,"import");
+ }
+ elsif ($fil=~m/\.swf$/)
+ {
+ my $xscale=$wid/($urx-$llx+1);
+ my $yscale=($hgt<=0)?$xscale:($hgt/($ury-$lly+1));
+ $hgt=($ury-$lly+1)*$yscale;
+
+ if ($rot)
+ {
+ $mat->[3]=$xscale;
+ $mat->[0]=$yscale;
+ }
+ else
+ {
+ $mat->[0]=$xscale;
+ $mat->[3]=$yscale;
+ }
+
+ $incfil{$fil}=LoadSWF($fil,[$llx,$lly,$urx,$ury],$mat);
+ }
+ else
+ {
+ Msg(0,"Unknown filetype '$fil'");
+ return undef;
+ }
+ }
+
+ if (defined($incfil{$fil}))
+ {
+ IsGraphic();
+ if ($fil=~m/\.pdf$/)
+ {
+ my $bbox=$incfil{$fil}->[1];
+ my $xscale=$wid/($bbox->[2]-$bbox->[0]+1);
+ my $yscale=($hgt<=0)?$xscale:($hgt/($bbox->[3]-$bbox->[1]+1));
+ $stream.="q $xscale 0 0 $yscale ".PutXY($xpos,$ypos)." cm";
+ $stream.=" 0 1 -1 0 0 0 cm" if $rot;
+ $stream.=" /$incfil{$fil}->[0] Do Q\n";
+ }
+ elsif ($fil=~m/\.swf$/)
+ {
+ $stream.=PutXY($xpos,$ypos)." m /$incfil{$fil} Do\n";
+ }
+ }
+ }
+ elsif (lc($xprm[1]) eq 'pdfpic')
+ {
+ my $fil=$xprm[2];
+ my $flag=uc($xprm[3])||'-L';
+ my $wid=GetPoints($xprm[4])||-1;
+ my $hgt=GetPoints($xprm[5]||-1);
+ my $ll=GetPoints($xprm[6]||0);
+ my $mat=[1,0,0,1,0,0];
+
+ if (!exists($incfil{$fil}))
+ {
+ $incfil{$fil}=LoadPDF($fil,$mat,$wid,$hgt,"pdfpic");
+ }
+
+ if (defined($incfil{$fil}))
+ {
+ IsGraphic();
+ my $bbox=$incfil{$fil}->[1];
+ $wid=($bbox->[2]-$bbox->[0]) if $wid <= 0;
+ my $xscale=$wid/($bbox->[2]-$bbox->[0]);
+ my $yscale=($hgt<=0)?$xscale:($hgt/($bbox->[3]-$bbox->[1]));
+ $xscale=($wid<=0)?$yscale:$xscale;
+ $xscale=$yscale if $yscale < $xscale;
+ $yscale=$xscale if $xscale < $yscale;
+ $wid=($bbox->[2]-$bbox->[0])*$xscale;
+ $hgt=($bbox->[3]-$bbox->[1])*$yscale;
+
+ if ($flag eq '-C' and $ll > $wid)
+ {
+ $xpos=int(($ll-$wid)/2);
+ }
+ elsif ($flag eq '-R' and $ll > $wid)
+ {
+ $xpos=$ll-$wid;
+ }
+
+ $ypos+=$hgt;
+ $stream.="q $xscale 0 0 $yscale ".PutXY($xpos,$ypos)." cm";
+ $stream.=" 0 1 -1 0 0 0 cm" if $rot;
+ $stream.=" /$incfil{$fil}->[0] Do Q\n";
+ }
+ }
+ elsif (lc($xprm[1]) eq 'xrev')
+ {
+ $xrev=!$xrev;
+ }
+ elsif (lc($xprm[1]) eq 'markstart')
+ {
+ $mark={'rst' => ($xprm[2]+$xprm[4])/$unitwidth, 'rsb' => ($xprm[3]-$xprm[4])/$unitwidth, 'xpos' => $xpos-($xprm[4]/$unitwidth),
+ 'ypos' => $ypos, 'lead' => $xprm[4]/$unitwidth, 'pdfmark' => join(' ',@xprm[5..$#xprm])};
+ }
+ elsif (lc($xprm[1]) eq 'markend')
+ {
+ PutHotSpot($xpos) if defined($mark);
+ $mark=undef;
+ }
+ elsif (lc($xprm[1]) eq 'marksuspend')
+ {
+ $suspendmark=$mark;
+ $mark=undef;
+ }
+ elsif (lc($xprm[1]) eq 'markrestart')
+ {
+ $mark=$suspendmark;
+ $suspendmark=undef;
+ }
+ elsif (lc($xprm[1]) eq 'pagename')
+ {
+ if ($pginsert > -1)
+ {
+ $pgnames{$xprm[2]}=$pages->{Kids}->[$pginsert];
+ }
+ else
+ {
+ $pgnames{$xprm[2]}='top';
+ }
+ }
+ elsif (lc($xprm[1]) eq 'switchtopage')
+ {
+ my $ba=$xprm[2];
+ my $want=$xprm[3];
+
+ if ($pginsert > -1)
+ {
+ if (!defined($want) or $want eq '')
+ {
+ # no before/after
+ $want=$ba;
+ $ba='before';
+ }
+
+ if (!defined($ba) or $ba eq '' or $want eq 'bottom')
+ {
+ $pginsert=$#{$pages->{Kids}};
+ }
+ elsif ($want eq 'top')
+ {
+ $pginsert=-1;
+ }
+ else
+ {
+ if (exists($pgnames{$want}))
+ {
+ my $ref=$pgnames{$want};
+
+ if ($ref eq 'top')
+ {
+ $pginsert=-1;
+ }
+ else
+ {
+ FIND: while (1)
+ {
+ foreach my $j (0..$#{$pages->{Kids}})
+ {
+ if ($ref eq $pages->{Kids}->[$j])
+ {
+ if ($ba eq 'before')
+ {
+ $pginsert=$j-1;
+ last FIND;
+ }
+ elsif ($ba eq 'after')
+ {
+ $pginsert=$j;
+ last FIND;
+ }
+ else
+ {
+ Msg(0,"Parameter must be top|bottom|before|after not '$ba'");
+ last FIND;
+ }
+ }
+
+ }
+
+ Msg(0,"Can't find page ref '$ref'");
+ last FIND
+
+ }
+ }
+ }
+ else
+ {
+ Msg(0,"Can't find page named '$want'");
+ }
+ }
+
+ if ($pginsert < 0)
+ {
+ ($curoutlev,$curoutlevno,$thislev)=(\@outlev,0,1);
+ }
+ else
+ {
+ ($curoutlev,$curoutlevno,$thislev)=(@{$outlines[$pginsert]});
+ }
+ }
+ }
+ }
+ elsif (lc(substr($xprm[0],0,9)) eq 'papersize')
+ {
+ my ($px,$py)=split(',',substr($xprm[0],10));
+ $px=GetPoints($px);
+ $py=GetPoints($py);
+ @mediabox=(0,0,$px,$py);
+ my @mb=@mediabox;
+ $matrixchg=1;
+ $custompaper=1;
+ $cpage->{MediaBox}=\@mb;
+ }
+ }
+}
+
+sub FixPDFColour
+{
+ my $o=shift;
+ my $a=$o->{C};
+ my @r=();
+ my $c=$a->[0];
+
+ if ($#{$a}==3)
+ {
+ if ($c > 1)
+ {
+ foreach my $j (0..2)
+ {
+ push(@r,sprintf("%1.3f",$a->[$j]/0xffff));
+ }
+
+ $o->{C}=\@r;
+ }
+ }
+ elsif (substr($c,0,1) eq '#')
+ {
+ if (length($c) == 7)
+ {
+ foreach my $j (0..2)
+ {
+ push(@r,sprintf("%1.3f",hex(substr($c,$j*2+1,2))/0xff));
+ }
+
+ $o->{C}=\@r;
+ }
+ elsif (length($c) == 14)
+ {
+ foreach my $j (0..2)
+ {
+ push(@r,sprintf("%1.3f",hex(substr($c,$j*4+2,4))/0xffff));
+ }
+
+ $o->{C}=\@r;
+ }
+ }
+}
+
+sub PutHotSpot
+{
+ my $endx=shift;
+ my $l=$mark->{pdfmark};
+ $l=~s/Color/C/;
+ $l=~s/Action/A/;
+ $l=~s'/Subtype /URI'/S /URI';
+ my @xwds=split(' ',"<< $l >>");
+ my $annotno=BuildObj(++$objct,ParsePDFValue(\@xwds));
+ my $annot=$obj[$objct];
+ $annot->{DATA}->{Type}='/Annot';
+ $annot->{DATA}->{Rect}=[$mark->{xpos},$mark->{ypos}-$mark->{rsb},$endx+$mark->{lead},$mark->{ypos}-$mark->{rst}];
+ FixPDFColour($annot->{DATA});
+ FixRect($annot->{DATA}->{Rect}); # Y origin to ll
+ push(@{$cpage->{Annots}},$annotno);
+}
+
+sub sgn
+{
+ return(1) if $_[0] > 0;
+ return(-1) if $_[0] < 0;
+ return(0);
+}
+
+sub FixRect
+{
+ my $rect=shift;
+
+ return if !defined($rect);
+ $rect->[1]=GraphY($rect->[1]);
+ $rect->[3]=GraphY($rect->[3]);
+}
+
+sub GetPoints
+{
+ my $val=shift;
+
+ $val=ToPoints($1,$2) if ($val=~m/(-?[\d.]+)([cipnz])/);
+
+ return $val;
+}
+
+# Although the PDF reference mentions XObject/Form as a way of incorporating an external PDF page into
+# the current PDF, it seems not to work with any current PDF reader (although I am told (by Leonard Rosenthol,
+# who helped author the PDF ISO standard) that Acroread 9 does support it, empiorical observation shows otherwise!!).
+# So... do it the hard way - full PDF parser and merge required objects!!!
+
+# sub BuildRef
+# {
+# my $fil=shift;
+# my $bbox=shift;
+# my $mat=shift;
+# my $wid=($bbox->[2]-$bbox->[0])*$mat->[0];
+# my $hgt=($bbox->[3]-$bbox->[1])*$mat->[3];
+#
+# if (!open(PDF,"<$fil"))
+# {
+# Msg(0,"Failed to open '$fil'");
+# return(undef);
+# }
+#
+# my (@f)=(<PDF>);
+#
+# close(PDF);
+#
+# $objct++;
+# my $xonm="XO$objct";
+#
+# $pages->{'Resources'}->{'XObject'}->{$xonm}=BuildObj($objct,{'Type' => '/XObject',
+# 'Subtype' => '/Form',
+# 'BBox' => $bbox,
+# 'Matrix' => $mat,
+# 'Resources' => $pages->{'Resources'},
+# 'Ref' => {'Page' => '1',
+# 'F' => BuildObj($objct+1,{'Type' => '/Filespec',
+# 'F' => "($fil)",
+# 'EF' => {'F' => BuildObj($objct+2,{'Type' => '/EmbeddedFile'})}
+# })
+# }
+# });
+#
+# $obj[$objct]->{STREAM}="q 1 0 0 1 0 0 cm
+# q BT
+# 1 0 0 1 0 0 Tm
+# .5 g .5 G
+# /F5 20 Tf
+# (Proxy) Tj
+# ET Q
+# 0 0 m 72 0 l s
+# Q\n";
+#
+# # $obj[$objct]->{STREAM}=PutXY($xpos,$ypos)." m ".PutXY($xpos+$wid,$ypos)." l ".PutXY($xpos+$wid,$ypos+$hgt)." l ".PutXY($xpos,$ypos+$hgt)." l f\n";
+# $obj[$objct+2]->{STREAM}=join('',@f);
+# PutObj($objct);
+# PutObj($objct+1);
+# PutObj($objct+2);
+# $objct+=2;
+# return($xonm);
+# }
+
+sub LoadSWF
+{
+ my $fil=shift;
+ my $bbox=shift;
+ my $mat=shift;
+ my $wid=($bbox->[2]-$bbox->[0])*$mat->[0];
+ my $hgt=($bbox->[3]-$bbox->[1])*$mat->[3];
+ my (@path)=split('/',$fil);
+ my $node=pop(@path);
+
+ if (!open(PDF,"<$fil"))
+ {
+ Msg(0,"Failed to open '$fil'");
+ return(undef);
+ }
+
+ my (@f)=(<PDF>);
+
+ close(PDF);
+
+ $objct++;
+ my $xonm="XO$objct";
+
+ $pages->{'Resources'}->{'XObject'}->{$xonm}=BuildObj($objct,{'Type' => '/XObject', 'BBox' => $bbox, 'Matrix' => $mat, 'FormType' => 1, 'Subtype' => '/Form', 'Length' => 0, 'Type' => "/XObject"});
+ $obj[$objct]->{STREAM}='';
+ PutObj($objct);
+ $objct++;
+ my $asset=BuildObj($objct,{'EF' => {'F' => BuildObj($objct+1,{})},
+ 'F' => "($node)",
+ 'Type' => '/Filespec',
+ 'UF' => "($node)"});
+
+ PutObj($objct);
+ $objct++;
+ $obj[$objct]->{STREAM}=join('',@f);
+ PutObj($objct);
+ $objct++;
+ my $config=BuildObj($objct,{'Instances' => [BuildObj($objct+1,{'Params' => { 'Binding' => '/Background'}, 'Asset' => $asset})],
+ 'Subtype' => '/Flash'});
+
+ PutObj($objct);
+ $objct++;
+ PutObj($objct);
+ $objct++;
+
+ my ($x,$y)=split(' ',PutXY($xpos,$ypos));
+
+ push(@{$cpage->{Annots}},BuildObj($objct,{'RichMediaContent' => {'Subtype' => '/Flash', 'Configurations' => [$config], 'Assets' => {'Names' => [ "($node)", $asset ] }},
+ 'P' => "$cpageno 0 R",
+ 'RichMediaSettings' => { 'Deactivation' => { 'Condition' => '/PI',
+ 'Type' => '/RichMediaDeactivation'},
+ 'Activation' => { 'Condition' => '/PV',
+ 'Type' => '/RichMediaActivation'}},
+ 'F' => 68,
+ 'Subtype' => '/RichMedia',
+ 'Type' => '/Annot',
+ 'Rect' => "[ $x $y ".($x+$wid)." ".($y+$hgt)." ]",
+ 'Border' => [0,0,0]}));
+
+ PutObj($objct);
+
+ return $xonm;
+}
+
+sub LoadPDF
+{
+ my $pdfnm=shift;
+ my $mat=shift;
+ my $wid=shift;
+ my $hgt=shift;
+ my $type=shift;
+ my $pdf;
+ my $pdftxt='';
+ my $strmlen=0;
+ my $curobj=-1;
+ my $instream=0;
+ my $cont;
+
+ if (!open(PD,"<$pdfnm"))
+ {
+ Msg(0,"Failed to open PDF '$pdfnm'");
+ return undef;
+ }
+
+ my $hdr=<PD>;
+
+ $/="\r" if (length($hdr) > 10);
+
+ while (<PD>)
+ {
+ chomp;
+
+ s/\n//;
+
+ if (m/endstream(\s+.*)?$/)
+ {
+ $instream=0;
+ $_="endstream";
+ $_.=$1 if defined($1)
+ }
+
+ next if $instream;
+
+ if (m'/Length\s+(\d+)(\s+\d+\s+R)?')
+ {
+ if (!defined($2))
+ {
+ $strmlen=$1;
+ }
+ else
+ {
+ $strmlen=0;
+ }
+ }
+
+ if (m'^(\d+) \d+ obj')
+ {
+ $curobj=$1;
+ $pdf->[$curobj]->{OBJ}=undef;
+ }
+
+ if (m'stream\s*$' and ! m/^endstream/)
+ {
+ if ($curobj > -1)
+ {
+ $pdf->[$curobj]->{STREAMPOS}=[tell(PD),$strmlen];
+ seek(PD,$strmlen,1);
+ $instream=1;
+ }
+ else
+ {
+ Msg(0,"Parsing PDF '$pdfnm' failed");
+ return undef;
+ }
+ }
+
+ $pdftxt.=$_.' ';
+ }
+
+ close(PD);
+
+ open(PD,"<$pdfnm");
+# $pdftxt=~s/\]/ \]/g;
+ my (@pdfwds)=split(' ',$pdftxt);
+ my $wd;
+
+ while ($wd=nextwd(\@pdfwds),length($wd))
+ {
+ if ($wd=~m/\d+/ and defined($pdfwds[1]) and $pdfwds[1]=~m/^obj(.*)/)
+ {
+ $curobj=$wd;
+ shift(@pdfwds); shift(@pdfwds);
+ unshift(@pdfwds,$1) if defined($1) and length($1);
+ $pdf->[$curobj]->{OBJ}=ParsePDFObj(\@pdfwds);
+ }
+ elsif ($wd eq 'trailer' and !exists($pdf->[0]->{OBJ}))
+ {
+ $pdf->[0]->{OBJ}=ParsePDFObj(\@pdfwds);
+ }
+ else
+ {
+# print "Skip '$wd'\n";
+ }
+ }
+
+ my $catalog=${$pdf->[0]->{OBJ}->{Root}};
+ my $page=FindPage(1,$pdf);
+ my $xobj=++$objct;
+
+ # Load the streamas
+
+ foreach my $o (@{$pdf})
+ {
+ if (exists($o->{STREAMPOS}))
+ {
+ my $l;
+
+ $l=$o->{OBJ}->{Length} if exists($o->{OBJ}->{Length});
+
+ $l=$pdf->[$$l]->{OBJ} if (defined($l) && ref($l) eq 'OBJREF');
+
+ Msg(1,"Unable to determine length of stream \@$o->{STREAMPOS}->[0]") if !defined($l);
+
+ sysseek(PD,$o->{STREAMPOS}->[0],0);
+ Msg(0,'Failed to read all the stream') if $l != sysread(PD,$o->{STREAM},$l);
+
+ if (exists($o->{OBJ}->{'Filter'}) and $o->{OBJ}->{'Filter'} eq '/FlateDecode')
+ {
+ $o->{STREAM}=Compress::Zlib::uncompress($o->{STREAM});
+ delete($o->{OBJ }->{'Filter'});
+ }
+ }
+ }
+
+ close(PD);
+
+ # Find BBox
+ my $BBox;
+ my $insmap={};
+
+ foreach my $k (qw( MediaBox ArtBox TrimBox BleedBox CropBox ))
+ {
+ $BBox=FindKey($pdf,$page,$k);
+ last if $BBox;
+ }
+
+ $BBox=[0,0,595,842] if !defined($BBox);
+
+ $wid=($BBox->[2]-$BBox->[0]+1) if $wid==0;
+ my $xscale=abs($wid)/($BBox->[2]-$BBox->[0]+1);
+ my $yscale=($hgt<=0)?$xscale:(abs($hgt)/($BBox->[3]-$BBox->[1]+1));
+ $hgt=($BBox->[3]-$BBox->[1]+1)*$yscale;
+
+ if ($type eq "import")
+ {
+ $mat->[0]=$xscale;
+ $mat->[3]=$yscale;
+ }
+
+ # Find Resource
+
+ my $res=FindKey($pdf,$page,'Resources');
+ my $xonm="XO$xobj";
+
+ # Map inserted objects to current PDF
+
+ MapInsValue($pdf,$page,'',$insmap,$xobj,$pdf->[$page]->{OBJ});
+#
+# Many PDFs include 'Resources' at the 'Page' level but if 'Resources' is held at a higher level (i.e 'Pages')
+# then we need to include its objects as well.
+#
+ MapInsValue($pdf,$page,'',$insmap,$xobj,$res) if !exists($pdf->[$page]->{OBJ}->{Resources});
+
+ # Copy Resources
+
+ my %incres=%{$res};
+
+ $incres{ProcSet}=['/PDF', '/Text', '/ImageB', '/ImageC', '/ImageI'];
+
+ ($mat->[4],$mat->[5])=split(' ',PutXY($xpos,$ypos));
+ $pages->{'Resources'}->{'XObject'}->{$xonm}=BuildObj($xobj,{'Type' => '/XObject', 'BBox' => $BBox, 'Name' => "/$xonm", 'FormType' => 1, 'Subtype' => '/Form', 'Length' => 0, 'Type' => "/XObject", 'Resources' => \%incres});
+
+ BuildStream($xobj,$pdf,$pdf->[$page]->{OBJ}->{Contents});
+
+ return([$xonm,$BBox] );
+}
+
+sub BuildStream
+{
+ my $xobj=shift;
+ my $pdf=shift;
+ my $val=shift;
+ my $strm='';
+ my $objs;
+ my $refval=ref($val);
+
+ if ($refval eq 'OBJREF')
+ {
+ push(@{$objs}, $val);
+ }
+ elsif ($refval eq 'ARRAY')
+ {
+ $objs=$val;
+ }
+ else
+ {
+ Msg(0,"unexpected 'Contents'");
+ }
+
+ foreach my $o (@{$objs})
+ {
+ $strm.="\n" if $strm;
+ $strm.=$pdf->[$$o]->{STREAM} if exists($pdf->[$$o]->{STREAM});
+ }
+
+ $obj[$xobj]->{STREAM}=$strm;
+}
+
+
+sub MapInsHash
+{
+ my $pdf=shift;
+ my $o=shift;
+ my $insmap=shift;
+ my $parent=shift;
+ my $val=shift;
+
+
+ foreach my $k (keys(%{$val}))
+ {
+ MapInsValue($pdf,$o,$k,$insmap,$parent,$val->{$k}) if $k ne 'Contents';
+ }
+}
+
+sub MapInsValue
+{
+ my $pdf=shift;
+ my $o=shift;
+ my $k=shift;
+ my $insmap=shift;
+ my $parent=shift;
+ my $val=shift;
+ my $refval=ref($val);
+
+ if ($refval eq 'OBJREF')
+ {
+ if ($k ne 'Parent')
+ {
+ if (!exists($insmap->{IMP}->{$$val}))
+ {
+ $objct++;
+ $insmap->{CUR}->{$objct}=$$val;
+ $insmap->{IMP}->{$$val}=$objct;
+ $obj[$objct]->{DATA}=$pdf->[$$val]->{OBJ};
+ $obj[$objct]->{STREAM}=$pdf->[$$val]->{STREAM} if exists($pdf->[$$val]->{STREAM});
+ MapInsValue($pdf,$$val,'',$insmap,$o,$pdf->[$$val]->{OBJ});
+ }
+
+ $$val=$insmap->{IMP}->{$$val};
+ }
+ else
+ {
+ $$val=$parent;
+ }
+ }
+ elsif ($refval eq 'ARRAY')
+ {
+ foreach my $v (@{$val})
+ {
+ MapInsValue($pdf,$o,'',$insmap,$parent,$v)
+ }
+ }
+ elsif ($refval eq 'HASH')
+ {
+ MapInsHash($pdf,$o,$insmap,$parent,$val);
+ }
+
+}
+
+sub FindKey
+{
+ my $pdf=shift;
+ my $page=shift;
+ my $k=shift;
+
+ if (exists($pdf->[$page]->{OBJ}->{$k}))
+ {
+ my $val=$pdf->[$page]->{OBJ}->{$k};
+ $val=$pdf->[$$val]->{OBJ} if ref($val) eq 'OBJREF';
+ return($val);
+ }
+ else
+ {
+ if (exists($pdf->[$page]->{OBJ}->{Parent}))
+ {
+ return(FindKey($pdf,${$pdf->[$page]->{OBJ}->{Parent}},$k));
+ }
+ }
+
+ return(undef);
+}
+
+sub FindPage
+{
+ my $wantpg=shift;
+ my $pdf=shift;
+ my $catalog=${$pdf->[0]->{OBJ}->{Root}};
+ my $pages=${$pdf->[$catalog]->{OBJ}->{Pages}};
+
+ return(NextPage($pdf,$pages,\$wantpg));
+}
+
+sub NextPage
+{
+ my $pdf=shift;
+ my $pages=shift;
+ my $wantpg=shift;
+ my $ret;
+
+ if ($pdf->[$pages]->{OBJ}->{Type} eq '/Pages')
+ {
+ foreach my $kid (@{$pdf->[$pages]->{OBJ}->{Kids}})
+ {
+ $ret=NextPage($pdf,$$kid,$wantpg);
+ last if $$wantpg<=0;
+ }
+ }
+ elsif ($pdf->[$pages]->{OBJ}->{Type} eq '/Page')
+ {
+ $$wantpg--;
+ $ret=$pages;
+ }
+
+ return($ret);
+}
+
+sub nextwd
+{
+ my $pdfwds=shift;
+
+ my $wd=shift(@{$pdfwds});
+
+ return('') if !defined($wd);
+
+ if ($wd=~m/^(.*?)(<<|>>|\[|\])(.*)/)
+ {
+ if (defined($1) and length($1))
+ {
+ unshift(@{$pdfwds},$3) if defined($3) and length($3);
+ unshift(@{$pdfwds},$2);
+ $wd=$1;
+ }
+ else
+ {
+ unshift(@{$pdfwds},$3) if defined($3) and length($3);
+ $wd=$2;
+ }
+ }
+
+ return($wd);
+}
+
+sub ParsePDFObj
+{
+
+ my $pdfwds=shift;
+ my $rtn;
+ my $wd;
+
+ while ($wd=nextwd($pdfwds),length($wd))
+ {
+ if ($wd eq 'stream' or $wd eq 'endstream')
+ {
+ next;
+ }
+ elsif ($wd eq 'endobj' or $wd eq 'startxref')
+ {
+ last;
+ }
+ else
+ {
+ unshift(@{$pdfwds},$wd);
+ $rtn=ParsePDFValue($pdfwds);
+ }
+ }
+
+ return($rtn);
+}
+
+sub ParsePDFHash
+{
+ my $pdfwds=shift;
+ my $rtn={};
+ my $wd;
+
+ while ($wd=nextwd($pdfwds),length($wd))
+ {
+ if ($wd eq '>>')
+ {
+ last;
+ }
+
+ my (@w)=split('/',$wd,3);
+
+ if ($w[0])
+ {
+ Msg(0,"PDF Dict Key '$wd' does not start with '/'");
+ exit 1;
+ }
+ else
+ {
+ unshift(@{$pdfwds},"/$w[2]") if $w[2];
+ $wd=$w[1];
+ (@w)=split('\(',$wd,2);
+ $wd=$w[0];
+ unshift(@{$pdfwds},"($w[1]") if defined($w[1]);
+ (@w)=split('\<',$wd,2);
+ $wd=$w[0];
+ unshift(@{$pdfwds},"<$w[1]") if defined($w[1]);
+
+ $rtn->{$wd}=ParsePDFValue($pdfwds);
+ }
+ }
+
+ return($rtn);
+}
+
+sub ParsePDFValue
+{
+ my $pdfwds=shift;
+ my $rtn;
+ my $wd=nextwd($pdfwds);
+
+ if ($wd=~m/^\d+$/ and $pdfwds->[0]=~m/^\d+$/ and $pdfwds->[1]=~m/^R(\]|\>|\/)?/)
+ {
+ shift(@{$pdfwds});
+ if (defined($1) and length($1))
+ {
+ $pdfwds->[0]=substr($pdfwds->[0],1);
+ }
+ else
+ {
+ shift(@{$pdfwds});
+ }
+ return(bless(\$wd,'OBJREF'));
+ }
+
+ if ($wd eq '<<')
+ {
+ return(ParsePDFHash($pdfwds));
+ }
+
+ if ($wd eq '[')
+ {
+ return(ParsePDFArray($pdfwds));
+ }
+
+ if ($wd=~m/(.*?)(\(.*)$/)
+ {
+ if (defined($1) and length($1))
+ {
+ unshift(@{$pdfwds},$2);
+ $wd=$1;
+ }
+ else
+ {
+ return(ParsePDFString($wd,$pdfwds));
+ }
+ }
+
+ if ($wd=~m/(.*?)(\<.*)$/)
+ {
+ if (defined($1) and length($1))
+ {
+ unshift(@{$pdfwds},$2);
+ $wd=$1;
+ }
+ else
+ {
+ return(ParsePDFHexString($wd,$pdfwds));
+ }
+ }
+
+ if ($wd=~m/(.+?)(\/.*)$/)
+ {
+ if (defined($2) and length($2))
+ {
+ unshift(@{$pdfwds},$2);
+ $wd=$1;
+ }
+ }
+
+ return($wd);
+}
+
+sub ParsePDFString
+{
+ my $wd=shift;
+ my $rtn='';
+ my $pdfwds=shift;
+ my $lev=0;
+
+ while (length($wd))
+ {
+ $rtn.=' ' if length($rtn);
+
+ while ($wd=~m/(?<!\\)\(/g) {$lev++;}
+ while ($wd=~m/(?<!\\)\)/g) {$lev--;}
+
+
+ if ($lev<=0 and $wd=~m/^(.*?\))([^)]+)$/)
+ {
+ unshift(@{$pdfwds},$2) if defined($2) and length($2);
+ $wd=$1;
+ }
+
+ $rtn.=$wd;
+
+ last if $lev <= 0;
+
+ $wd=nextwd($pdfwds);
+ }
+
+ return($rtn);
+}
+
+sub ParsePDFHexString
+{
+ my $wd=shift;
+ my $rtn='';
+ my $pdfwds=shift;
+ my $lev=0;
+
+ if ($wd=~m/^(<.+?>)(.*)/)
+ {
+ unshift(@{$pdfwds},$2) if defined($2) and length($2);
+ $rtn=$1;
+ }
+
+ return($rtn);
+}
+
+sub ParsePDFArray
+{
+ my $pdfwds=shift;
+ my $rtn=[];
+ my $wd;
+
+ while (1)
+ {
+ $wd=ParsePDFValue($pdfwds);
+ last if $wd eq ']' or length($wd)==0;
+ push(@{$rtn},$wd);
+ }
+
+ return($rtn);
+}
+
+sub Msg
+{
+ my ($lev,$msg)=@_;
+
+ print STDERR "$env{SourceFile}: " if exists($env{SourceFile});
+ print STDERR "$msg\n";
+ exit 1 if $lev;
+}
+
+sub PutXY
+{
+ my ($x,$y)=(@_);
+
+ if ($frot)
+ {
+ return("$y $x");
+ }
+ else
+ {
+ $y=$mediabox[3]-$y;
+ return("$x $y");
+ }
+}
+
+sub GraphY
+{
+ my $y=shift;
+
+ if ($frot)
+ {
+ return($y);
+ }
+ else
+ {
+ return($mediabox[3]-$y);
+ }
+}
+
+sub Put
+{
+ my $msg=shift;
+
+ print $msg;
+ $fct+=length($msg);
+}
+
+sub PutObj
+{
+ my $ono=shift;
+ my $msg="$ono 0 obj ";
+ $obj[$ono]->{XREF}=$fct;
+ if (exists($obj[$ono]->{STREAM}))
+ {
+ if (!$debug && !exists($obj[$ono]->{DATA}->{'Filter'}))
+ {
+ $obj[$ono]->{STREAM}=Compress::Zlib::compress($obj[$ono]->{STREAM});
+ $obj[$ono]->{DATA}->{'Filter'}=['/FlateDecode'];
+ }
+
+ $obj[$ono]->{DATA}->{'Length'}=length($obj[$ono]->{STREAM});
+ }
+ PutField(\$msg,$obj[$ono]->{DATA});
+ PutStream(\$msg,$ono) if exists($obj[$ono]->{STREAM});
+ Put($msg."endobj\n");
+}
+
+sub PutStream
+{
+ my $msg=shift;
+ my $ono=shift;
+
+ # We could 'flate' here
+ $$msg.="stream\n$obj[$ono]->{STREAM}endstream\n";
+}
+
+sub PutField
+{
+ my $pmsg=shift;
+ my $fld=shift;
+ my $term=shift||"\n";
+ my $typ=ref($fld);
+
+ if ($typ eq '')
+ {
+ $$pmsg.="$fld$term";
+ }
+ elsif ($typ eq 'ARRAY')
+ {
+ $$pmsg.='[';
+ foreach my $cell (@{$fld})
+ {
+ PutField($pmsg,$cell,' ');
+ }
+ $$pmsg.="]$term";
+ }
+ elsif ($typ eq 'HASH')
+ {
+ $$pmsg.='<< ';
+ foreach my $key (sort keys %{$fld})
+ {
+ $$pmsg.="/$key ";
+ PutField($pmsg,$fld->{$key});
+ }
+ $$pmsg.=">>$term";
+ }
+ elsif ($typ eq 'OBJREF')
+ {
+ $$pmsg.="$$fld 0 R$term";
+ }
+}
+
+sub BuildObj
+{
+ my $ono=shift;
+ my $val=shift;
+
+ $obj[$ono]->{DATA}=$val;
+
+ return("$ono 0 R ");
+}
+
+sub LoadFont
+{
+ my $fontno=shift;
+ my $fontnm=shift;
+ my $ofontnm=$fontnm;
+
+ return $fontlst{$fontno}->{OBJ} if (exists($fontlst{$fontno}));
+
+ my $f;
+ OpenFile(\$f,$fontdir,"$fontnm");
+
+ if (!defined($f) and $Foundry)
+ {
+ # Try with no foundry
+ $fontnm=~s/.*?-//;
+ OpenFile(\$f,$fontdir,$fontnm);
+ }
+
+ Msg(1,"Failed to open font '$ofontnm'") if !defined($f);
+
+ my $foundry='';
+ $foundry=$1 if $fontnm=~m/^(.*?)-/;
+ my $stg=1;
+ my %fnt;
+ my @fntbbox=(0,0,0,0);
+ my $capheight=0;
+ my $lastchr=0;
+ my $t1flags=0;
+ my $fixwid=-1;
+ my $ascent=0;
+ my $charset='';
+
+ while (<$f>)
+ {
+ chomp;
+
+ s/^ +//;
+ s/^#.*// if $stg == 1;
+ next if $_ eq '';
+
+ if ($stg == 1)
+ {
+ my ($key,$val)=split(' ',$_,2);
+
+ $key=lc($key);
+ $stg=2,next if $key eq 'kernpairs';
+ $stg=3,next if lc($_) eq 'charset';
+
+ $fnt{$key}=$val
+ }
+ elsif ($stg == 2)
+ {
+ $stg=3,next if lc($_) eq 'charset';
+
+ my ($ch1,$ch2,$k)=split;
+ $fnt{KERN}->{$ch1}->{$ch2}=$k;
+ }
+ else
+ {
+ my (@r)=split;
+ my (@p)=split(',',$r[1]);
+
+ if ($r[1] eq '"')
+ {
+ $fnt{GNM}->{$r[0]}=$lastchr;
+ next;
+ }
+
+ $r[0]='u0020' if $r[3] == 32;
+# next if $r[3] >255;
+ $fnt{GNM}->{$r[0]}=$r[3];
+ $fnt{GNO}->[$r[3]]='/'.$r[4];
+ $fnt{WID}->[$r[3]]=$p[0];
+ $lastchr=$r[3] if $r[3] > $lastchr;
+ $fixwid=$p[0] if $fixwid == -1;
+ $fixwid=-2 if $fixwid > 0 and $p[0] != $fixwid;
+
+ $fntbbox[1]=-$p[2] if defined($p[2]) and -$p[2] < $fntbbox[1];
+ $fntbbox[2]=$p[0] if $p[0] > $fntbbox[2];
+ $fntbbox[3]=$p[1] if defined($p[1]) and $p[1] > $fntbbox[3];
+ $ascent=$p[1] if defined($p[1]) and $p[1] > $ascent and $r[3] >= 32 and $r[3] < 128;
+ $charset.='/'.$r[4] if defined($r[4]);
+ $capheight=$p[1] if length($r[4]) == 1 and $r[4] ge 'A' and $r[4] le 'Z' and $p[1] > $capheight;
+ }
+ }
+
+ close($f);
+
+ unshift(@{$fnt{GNO}},0);
+
+ foreach my $glyph (@{$fnt{GNO}})
+ {
+ $glyph='/.notdef' if !defined($glyph);
+ }
+
+ foreach my $w (@{$fnt{WID}})
+ {
+ $w=0 if !defined($w);
+ }
+
+ my $fno=0;
+ my $slant=0;
+ $slant=-$fnt{'slant'} if exists($fnt{'slant'});
+ $fnt{'spacewidth'}=700 if !exists($fnt{'spacewidth'});
+
+ $t1flags|=2**0 if $fixwid > -1;
+ $t1flags|=(exists($fnt{'special'}))?2**2:2**5;
+ $t1flags|=2**6 if $slant != 0;
+ my $fontkey="$foundry $fnt{internalname}";
+
+ if (exists($download{$fontkey}))
+ {
+ # Not a Base Font
+ my ($l1,$l2,$l3,$t1stream)=GetType1($download{$fontkey});
+ Msg(0,"Incorrect font format for '$fontkey' ($l1)") if !defined($t1stream);
+ $fno=++$objct;
+ $fontlst{$fontno}->{OBJ}=BuildObj($objct,
+ {'Type' => '/Font',
+ 'Subtype' => '/Type1',
+ 'BaseFont' => '/'.$fnt{internalname},
+ 'Widths' => $fnt{WID},
+ 'FirstChar' => 0,
+ 'LastChar' => $lastchr,
+ 'Encoding' => BuildObj($objct+1,
+ {'Type' => '/Encoding',
+ 'Differences' => $fnt{GNO}
+ }
+ ),
+ 'FontDescriptor' => BuildObj($objct+2,
+ {'Type' => '/FontDescriptor',
+ 'FontName' => '/'.$fnt{internalname},
+ 'Flags' => $t1flags,
+ 'FontBBox' => \@fntbbox,
+ 'ItalicAngle' => $slant,
+ 'Ascent' => $ascent,
+ 'Descent' => $fntbbox[1],
+ 'CapHeight' => $capheight,
+ 'StemV' => 0,
+ 'CharSet' => "($charset)",
+ 'FontFile' => BuildObj($objct+3,
+ {'Length1' => $l1,
+ 'Length2' => $l2,
+ 'Length3' => $l3
+ }
+ )
+ }
+ )
+ }
+ );
+
+ $objct+=3;
+ $fontlst{$fontno}->{NM}='/F'.$fontno;
+ $pages->{'Resources'}->{'Font'}->{'F'.$fontno}=$fontlst{$fontno}->{OBJ};
+ $fontlst{$fontno}->{FNT}=\%fnt;
+ $obj[$objct]->{STREAM}=$t1stream;
+
+ }
+ else
+ {
+ $fno=++$objct;
+ $fontlst{$fontno}->{OBJ}=BuildObj($objct,
+ {'Type' => '/Font',
+ 'Subtype' => '/Type1',
+ 'BaseFont' => '/'.$fnt{internalname},
+ 'Encoding' => BuildObj($objct+1,
+ {'Type' => '/Encoding',
+ 'Differences' => $fnt{GNO}
+ }
+ )
+ }
+ );
+ $objct+=1;
+ $fontlst{$fontno}->{NM}='/F'.$fontno;
+ $pages->{'Resources'}->{'Font'}->{'F'.$fontno}=$fontlst{$fontno}->{OBJ};
+ $fontlst{$fontno}->{FNT}=\%fnt;
+ }
+
+ if (defined($fnt{encoding}) and $fnt{encoding} eq 'text.enc' and $ucmap ne '')
+ {
+ if ($textenccmap eq '')
+ {
+ $textenccmap = BuildObj($objct+1,{});
+ $objct++;
+ $obj[$objct]->{STREAM}=$ucmap;
+ }
+ $obj[$fno]->{DATA}->{'ToUnicode'}=$textenccmap;
+ }
+
+# PutObj($fno);
+# PutObj($fno+1);
+# PutObj($fno+2) if defined($obj[$fno+2]);
+# PutObj($fno+3) if defined($obj[$fno+3]);
+}
+
+sub GetType1
+{
+ my $file=shift;
+ my ($l1,$l2,$l3); # Return lengths
+ my ($head,$body,$tail); # Font contents
+ my $f;
+
+ OpenFile(\$f,$fontdir,"$file");
+ Msg(1,"Failed to open '$file'") if !defined($f);
+ binmode($f);
+
+ my $l=<$f>;
+
+ if (substr($l,0,1) eq "\x80")
+ {
+ # PFB file
+ sysseek($f,0,0);
+ my $hdr='';
+ $l1=$l2=$l3=0;
+ my $typ=0;
+ my $data='';
+ my $sl=0;
+
+ while ($typ != 3)
+ {
+ my $chk=sysread($f,$hdr,6);
+
+ if ($chk < 2)
+ {
+ # eof($f) uses buffered i/o (since file was open not sysopen)
+ # which screws up next sysread. So this will terminate loop if font
+ # has no terminating section type 3.
+ last if $l3;
+ return(5,$l2,$l3,undef);
+ }
+
+ $typ=ord(substr($hdr,1,1));
+
+ if ($chk == 6)
+ {
+ $sl=unpack('L',substr($hdr,2,4));
+ $chk=sysread($f,$data,$sl);
+ return(1,$l2,$l3,undef) if $chk != $sl;
+ }
+
+ if ($typ == 1)
+ {
+ if ($l2 == 0)
+ {
+ # First text bit(s) must be head
+ $head.=$data;
+ $l1+=$sl;
+ }
+ else
+ {
+ # A text bit after the binary sections must be tail
+ $tail.=$data;
+ $l3+=$sl;
+ }
+ }
+ elsif ($typ == 2)
+ {
+ return(2,$l2,$l3,undef) if $l3; # Found a binary bit after the tail
+ $body.=$data;
+ $l2+=$sl;
+ }
+ elsif ($typ != 3)
+ {
+ # What segment type is this!
+ return(3,$l2,$l3,undef);
+ }
+ }
+
+ close($f);
+ return($l1,$l2,$l3,"$head$body$tail");
+ }
+
+ my (@lines)=(<$f>);
+ unshift(@lines,$l);
+
+ close($f);
+
+ Msg(1,"Font file '$file' must be an Adobe type 1 font file") if $lines[0]!~m/\%\!PS.Adobe/i;
+ $head=$body=$tail='';
+
+ foreach my $line (@lines)
+ {
+ if (!defined($l1))
+ {
+ if (length($line) > 19 and $line=~s/^(currentfile eexec)//)
+ {
+ $head.=$1;
+ $l1=length($head);
+ redo;
+ }
+
+ $head.=$line;
+
+ if ($line=~m/eexec$/)
+ {
+ # chomp($head);
+ # $head.="\x0d";
+ $l1=length($head);
+ }
+ }
+ elsif (!defined($l2))
+ {
+ #$line=~s/(\0\0)0+$/&1/;
+ if ($line=~m/^0+$/)
+ {
+ $l2=length($body);
+ $tail=$line;
+ }
+ else
+ {
+ chomp($line);
+ $body.=pack('H*',$line);
+ }
+ }
+ else
+ {
+ $tail.=$line;
+ }
+ }
+
+ $l1=length($head);
+ $l2=length($body);
+ $l3=length($tail);
+
+ return($l1,$l2,$l3,"$head$body$tail");
+}
+
+
+sub OutStream
+{
+ my $ono=shift;
+
+ IsGraphic();
+ $stream.="Q\n";
+ $obj[$ono]->{STREAM}=$stream;
+ $obj[$ono]->{DATA}->{Length}=length($stream);
+ $stream='';
+ PutObj($ono);
+}
+
+sub do_p
+{
+ # Start of pages
+
+ if ($cpageno > 0)
+ {
+ $cpage->{MediaBox}=\@mediabox if $custompaper;
+ PutObj($cpageno);
+ OutStream($cpageno+1);
+ }
+
+ $cpageno=++$objct;
+
+ my $thispg=BuildObj($objct,
+ {'Type' => '/Page',
+ 'Group' => {'CS' => '/DeviceRGB', 'S' => '/Transparency'},
+ 'Parent' => '2 0 R',
+ 'Contents' => [ BuildObj($objct+1,
+ {'Length' => 0}
+ ) ],
+ }
+ );
+
+ splice(@{$pages->{Kids}},++$pginsert,0,$thispg);
+ splice(@outlines,$pginsert,0,[$curoutlev,$#{$curoutlev}+1,$thislev]);
+
+ $objct+=1;
+ $cpage=$obj[$cpageno]->{DATA};
+ $pages->{'Count'}++;
+ $stream="q 1 0 0 1 0 0 cm\n$linejoin J\n$linecap j\n";
+ $mode='g';
+ $curfill='';
+# @mediabox=@defaultmb;
+}
+
+sub do_f
+{
+ my $par=shift;
+
+# IsText();
+ $cft="$par";
+ $fontchg=1;
+# $stream.="/F$cft $cftsz Tf\n" if $cftsz;
+ $widtbl=CacheWid($par);
+ $origwidtbl=$fontlst{$par}->{FNT}->{WID};
+ $krntbl=$fontlst{$par}->{FNT}->{KERN};
+}
+
+sub CacheWid
+{
+ my $par=shift;
+
+ if (!defined($fontlst{$par}->{CACHE}->{$cftsz}))
+ {
+ $fontlst{$par}->{CACHE}->{$cftsz}=BuildCache($fontlst{$par}->{FNT}->{WID});
+ }
+
+ return($fontlst{$par}->{CACHE}->{$cftsz});
+}
+
+sub BuildCache
+{
+ my $wid=shift;
+ return([]);
+ my @cwid;
+
+ foreach my $w (@{$wid})
+ {
+ push(@cwid,$w*$cftsz);
+ }
+
+ return(\@cwid);
+}
+
+sub IsText
+{
+ if ($mode eq 'g')
+ {
+ $xpos+=$pendmv/$unitwidth;
+ $stream.="q BT\n$matrix ".PutXY($xpos,$ypos)." Tm\n";
+ $poschg=0;
+ $fontchg=0;
+ $pendmv=0;
+ $matrixchg=0;
+ $tmxpos=$xpos;
+ $stream.=$textcol."\n", $curfill=$textcol if $textcol ne $curfill;
+ if (defined($cft))
+ {
+ $whtsz=$fontlst{$cft}->{FNT}->{spacewidth}*$cftsz;
+ $stream.="/F$cft $cftsz Tf\n";
+ }
+ $stream.="$curkern Tc\n";
+ }
+
+ if ($poschg or $matrixchg)
+ {
+ PutLine(0) if $matrixchg;
+ $stream.="$matrix ".PutXY($xpos,$ypos)." Tm\n", $poschg=0;
+ $tmxpos=$xpos;
+ $matrixchg=0;
+ $stream.="$curkern Tc\n";
+ }
+
+ if ($fontchg)
+ {
+ PutLine(0);
+ $whtsz=$fontlst{$cft}->{FNT}->{spacewidth}*$cftsz;
+ $stream.="/F$cft $cftsz Tf\n" if $cftsz and defined($cft);
+ $fontchg=0;
+ }
+
+ $mode='t';
+}
+
+sub IsGraphic
+{
+ if ($mode eq 't')
+ {
+ PutLine();
+ $stream.="ET Q\n";
+ $xpos+=($pendmv-$nomove)/$unitwidth;
+ $pendmv=0;
+ $nomove=0;
+ $stream.=$strkcol."\n", $curstrk=$strkcol if $strkcol ne $curstrk;
+ $curfill=$fillcol;
+ }
+ $mode='g';
+}
+
+sub do_s
+{
+ my $par=shift;
+ $par/=$unitwidth;
+
+ if ($par != $cftsz and defined($cft))
+ {
+ PutLine();
+ $cftsz=$par;
+ Set_LWidth() if $lwidth < 1;
+# $stream.="/F$cft $cftsz Tf\n";
+ $fontchg=1;
+ $widtbl=CacheWid($cft);
+ }
+ else
+ {
+ $cftsz=$par;
+ Set_LWidth() if $lwidth < 1;
+ }
+}
+
+sub Set_LWidth
+{
+ IsGraphic();
+ $stream.=((($desc{res}/(72*$desc{sizescale}))*$linewidth*$cftsz)/1000)." w\n";
+ return;
+}
+
+sub do_m
+{
+ # Groff uses /m[] for text & graphic stroke, and /M[] (DF?) for graphic fill.
+ # PDF uses G/RG/K for graphic stroke, and g/rg/k for text & graphic fill.
+ #
+ # This means that we must maintain g/rg/k state separately for text colour & graphic fill (this is
+ # probably why 'gs' maintains seperate graphic states for text & graphics when distilling PS -> PDF).
+ #
+ # To facilitate this:-
+ #
+ # $textcol = current groff stroke colour
+ # $fillcol = current groff fill colour
+ # $curfill = current PDF fill colour
+
+ my $par=shift;
+ my $mcmd=substr($par,0,1);
+
+ $par=substr($par,1);
+ $par=~s/^ +//;
+
+# IsGraphic();
+
+ $textcol=set_col($mcmd,$par,0);
+ $strkcol=set_col($mcmd,$par,1);
+
+ if ($mode eq 't')
+ {
+ PutLine();
+ $stream.=$textcol."\n";
+ $curfill=$textcol;
+ }
+ else
+ {
+ $stream.="$strkcol\n";
+ $curstrk=$strkcol;
+ }
+}
+
+sub set_col
+{
+ my $mcmd=shift;
+ my $par=shift;
+ my $upper=shift;
+ my @oper=('g','k','rg');
+
+ @oper=('G','K','RG') if $upper;
+
+ if ($mcmd eq 'd')
+ {
+ # default colour
+ return("0 $oper[0]");
+ }
+
+ my (@c)=split(' ',$par);
+
+ if ($mcmd eq 'c')
+ {
+ # Text CMY
+ return(($c[0]/65535).' '.($c[1]/65535).' '.($c[2]/65535)." 0 $oper[1]");
+ }
+ elsif ($mcmd eq 'k')
+ {
+ # Text CMYK
+ return(($c[0]/65535).' '.($c[1]/65535).' '.($c[2]/65535).' '.($c[3]/65535)." $oper[1]");
+ }
+ elsif ($mcmd eq 'g')
+ {
+ # Text Grey
+ return(($c[0]/65535)." $oper[0]");
+ }
+ elsif ($mcmd eq 'r')
+ {
+ # Text RGB0
+ return(($c[0]/65535).' '.($c[1]/65535).' '.($c[2]/65535)." $oper[2]");
+ }
+}
+
+sub do_D
+{
+ my $par=shift;
+ my $Dcmd=substr($par,0,1);
+
+ $par=substr($par,1);
+ $xpos+=$pendmv/$unitwidth;
+ $pendmv=0;
+
+ IsGraphic();
+
+ if ($Dcmd eq 'F')
+ {
+ my $mcmd=substr($par,0,1);
+
+ $par=substr($par,1);
+ $par=~s/^ +//;
+
+ $fillcol=set_col($mcmd,$par,0);
+ $stream.="$fillcol\n";
+ $curfill=$fillcol;
+ }
+ elsif ($Dcmd eq 'f')
+ {
+ my $mcmd=substr($par,0,1);
+
+ $par=substr($par,1);
+ $par=~s/^ +//;
+ ($par)=split(' ',$par);
+
+ if ($par >= 0 and $par <= 1000)
+ {
+ $fillcol=set_col('g',int((1000-$par)*65535/1000),0);
+ }
+ else
+ {
+ $fillcol=lc($textcol);
+ }
+
+ $stream.="$fillcol\n";
+ $curfill=$fillcol;
+ }
+ elsif ($Dcmd eq '~')
+ {
+ # B-Spline
+ my (@p)=split(' ',$par);
+ my ($nxpos,$nypos);
+
+ foreach my $p (@p) { $p/=$unitwidth; }
+ $stream.=PutXY($xpos,$ypos)." m\n";
+ $xpos+=($p[0]/2);
+ $ypos+=($p[1]/2);
+ $stream.=PutXY($xpos,$ypos)." l\n";
+
+ for (my $i=0; $i < $#p-1; $i+=2)
+ {
+ $nxpos=(($p[$i]*$tnum)/(2*$tden));
+ $nypos=(($p[$i+1]*$tnum)/(2*$tden));
+ $stream.=PutXY(($xpos+$nxpos),($ypos+$nypos))." ";
+ $nxpos=($p[$i]/2 + ($p[$i+2]*($tden-$tnum))/(2*$tden));
+ $nypos=($p[$i+1]/2 + ($p[$i+3]*($tden-$tnum))/(2*$tden));
+ $stream.=PutXY(($xpos+$nxpos),($ypos+$nypos))." ";
+ $nxpos=(($p[$i]-$p[$i]/2) + $p[$i+2]/2);
+ $nypos=(($p[$i+1]-$p[$i+1]/2) + $p[$i+3]/2);
+ $stream.=PutXY(($xpos+$nxpos),($ypos+$nypos))." c\n";
+ $xpos+=$nxpos;
+ $ypos+=$nypos;
+ }
+
+ $xpos+=($p[$#p-1]-$p[$#p-1]/2);
+ $ypos+=($p[$#p]-$p[$#p]/2);
+ $stream.=PutXY($xpos,$ypos)." l\nS\n";
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 'p' or $Dcmd eq 'P')
+ {
+ # Polygon
+ my (@p)=split(' ',$par);
+ my ($nxpos,$nypos);
+
+ foreach my $p (@p) { $p/=$unitwidth; }
+ $stream.=PutXY($xpos,$ypos)." m\n";
+
+ for (my $i=0; $i < $#p; $i+=2)
+ {
+ $xpos+=($p[$i]);
+ $ypos+=($p[$i+1]);
+ $stream.=PutXY($xpos,$ypos)." l\n";
+ }
+
+ if ($Dcmd eq 'p')
+ {
+ $stream.="s\n";
+ }
+ else
+ {
+ $stream.="f\n";
+ }
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 'c')
+ {
+ # Stroke circle
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+
+ DrawCircle($p[0],$p[0]);
+ $stream.="s\n";
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 'C')
+ {
+ # Fill circle
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+
+ DrawCircle($p[0],$p[0]);
+ $stream.="f\n";
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 'e')
+ {
+ # Stroke ellipse
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+
+ DrawCircle($p[0],$p[1]);
+ $stream.="s\n";
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 'E')
+ {
+ # Fill ellipse
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+
+ DrawCircle($p[0],$p[1]);
+ $stream.="f\n";
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 'l')
+ {
+ # Line To
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+
+ foreach my $p (@p) { $p/=$unitwidth; }
+ $stream.=PutXY($xpos,$ypos)." m\n";
+ $xpos+=$p[0];
+ $ypos+=$p[1];
+ $stream.=PutXY($xpos,$ypos)." l\n";
+
+ $stream.="s\n";
+ $poschg=1;
+ }
+ elsif ($Dcmd eq 't')
+ {
+ # Line Thickness
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+
+ foreach my $p (@p) { $p/=$unitwidth; }
+ # $xpos+=$p[0]*100; # WTF!!!
+ #int lw = ((font::res/(72*font::sizescale))*linewidth*env->size)/1000;
+ $p[0]=(($desc{res}/(72*$desc{sizescale}))*$linewidth*$cftsz)/1000 if $p[0] < 0;
+ $lwidth=$p[0];
+ $stream.="$p[0] w\n";
+ $poschg=1;
+ $xpos+=$lwidth;
+ }
+ elsif ($Dcmd eq 'a')
+ {
+ # Arc
+ $par=substr($par,1);
+ my (@p)=split(' ',$par);
+ my $rad180=3.14159;
+ my $rad360=$rad180*2;
+ my $rad90=$rad180/2;
+
+ foreach my $p (@p) { $p/=$unitwidth; }
+
+ # Documentation is wrong. Groff does not use Dh1,Dv1 as centre of the circle!
+
+ my $centre=adjust_arc_centre(\@p);
+
+ # Using formula here : http://www.tinaja.com/glib/bezcirc2.pdf
+ # First calculate angle between start and end point
+
+ my ($startang,$r)=RtoP(-$centre->[0],$centre->[1]);
+ my ($endang,$r2)=RtoP(($p[0]+$p[2])-$centre->[0],-($p[1]+$p[3]-$centre->[1]));
+ $endang+=$rad360 if $endang < $startang;
+ my $totang=($endang-$startang)/4; # do it in 4 pieces
+
+ # Now 1 piece
+
+ my $x0=cos($totang/2);
+ my $y0=sin($totang/2);
+ my $x3=$x0;
+ my $y3=-$y0;
+ my $x1=(4-$x0)/3;
+ my $y1=((1-$x0)*(3-$x0))/(3*$y0);
+ my $x2=$x1;
+ my $y2=-$y1;
+
+ # Rotate to start position and draw 4 pieces
+
+ foreach my $j (0..3)
+ {
+ PlotArcSegment($totang/2+$startang+$j*$totang,$r,$xpos+$centre->[0],GraphY($ypos+$centre->[1]),$x0,$y0,$x1,$y1,$x2,$y2,$x3,$y3);
+ }
+
+ $xpos+=$p[0]+$p[2];
+ $ypos+=$p[1]+$p[3];
+
+ $poschg=1;
+ }
+}
+
+sub deg
+{
+ return int($_[0]*180/3.14159);
+}
+
+sub adjust_arc_centre
+{
+ # Taken from geometry.cpp
+
+ # We move the center along a line parallel to the line between
+ # the specified start point and end point so that the center
+ # is equidistant between the start and end point.
+ # It can be proved (using Lagrange multipliers) that this will
+ # give the point nearest to the specified center that is equidistant
+ # between the start and end point.
+
+ my $p=shift;
+ my @c;
+ my $x = $p->[0] + $p->[2]; # (x, y) is the end point
+ my $y = $p->[1] + $p->[3];
+ my $n = $x*$x + $y*$y;
+ if ($n != 0)
+ {
+ $c[0]= $p->[0];
+ $c[1] = $p->[1];
+ my $k = .5 - ($c[0]*$x + $c[1]*$y)/$n;
+ $c[0] += $k*$x;
+ $c[1] += $k*$y;
+ return(\@c);
+ }
+ else
+ {
+ return(undef);
+ }
+}
+
+
+sub PlotArcSegment
+{
+ my ($ang,$r,$transx,$transy,$x0,$y0,$x1,$y1,$x2,$y2,$x3,$y3)=@_;
+ my $cos=cos($ang);
+ my $sin=sin($ang);
+ my @mat=($cos,$sin,-$sin,$cos,0,0);
+ my $lw=$lwidth/$r;
+
+ $stream.="q $r 0 0 $r $transx $transy cm ".join(' ',@mat)." cm $lw w $x0 $y0 m $x1 $y1 $x2 $y2 $x3 $y3 c S Q\n";
+}
+
+sub DrawCircle
+{
+ my $hd=shift;
+ my $vd=shift;
+ my $hr=$hd/2/$unitwidth;
+ my $vr=$vd/2/$unitwidth;
+ my $kappa=0.5522847498;
+ $hd/=$unitwidth;
+ $vd/=$unitwidth;
+
+
+ $stream.=PutXY(($xpos+$hd),$ypos)." m\n";
+ $stream.=PutXY(($xpos+$hd),($ypos+$vr*$kappa))." ".PutXY(($xpos+$hr+$hr*$kappa),($ypos+$vr))." ".PutXY(($xpos+$hr),($ypos+$vr))." c\n";
+ $stream.=PutXY(($xpos+$hr-$hr*$kappa),($ypos+$vr))." ".PutXY(($xpos),($ypos+$vr*$kappa))." ".PutXY(($xpos),($ypos))." c\n";
+ $stream.=PutXY(($xpos),($ypos-$vr*$kappa))." ".PutXY(($xpos+$hr-$hr*$kappa),($ypos-$vr))." ".PutXY(($xpos+$hr),($ypos-$vr))." c\n";
+ $stream.=PutXY(($xpos+$hr+$hr*$kappa),($ypos-$vr))." ".PutXY(($xpos+$hd),($ypos-$vr*$kappa))." ".PutXY(($xpos+$hd),($ypos))." c\n";
+ $xpos+=$hd;
+
+ $poschg=1;
+}
+
+sub FindCircle
+{
+ my ($x1,$y1,$x2,$y2,$x3,$y3)=@_;
+ my ($Xo, $Yo);
+
+ my $x=$x2+$x3;
+ my $y=$y2+$y3;
+ my $n=$x**2+$y**2;
+
+ if ($n)
+ {
+ my $k=.5-($x2*$x + $y2*$y)/$n;
+ return(sqrt($n),$x2+$k*$x,$y2+$k*$y);
+ }
+ else
+ {
+ return(-1);
+ }
+
+}
+
+sub PtoR
+{
+ my ($theta,$r)=@_;
+
+ return($r*cos($theta),$r*sin($theta));
+}
+
+sub RtoP
+{
+ my ($x,$y)=@_;
+
+ return(atan2($y,$x),sqrt($x**2+$y**2));
+}
+
+sub PutLine
+{
+
+ my $f=shift;
+
+ IsText() if !defined($f);
+
+ return if (scalar(@lin) == 0) or (!defined($lin[0]->[0]) and $#lin == 0);
+
+# $stream.="% --- wht=$whtsz, pend=$pendmv, nomv=$nomove\n" if $debug;
+ $pendmv-=$nomove;
+ $lin[$#lin]->[1]=-$pendmv/$cftsz if ($pendmv != 0);
+
+ if (0)
+ {
+ if (scalar(@lin) == 1 and (!defined($lin[0]->[1]) or $lin[0]->[1] == 0))
+ {
+ $stream.="($lin[0]->[0]) Tj\n";
+ }
+ else
+ {
+ $stream.="[";
+
+ foreach my $wd (@lin)
+ {
+ $stream.="($wd->[0]) " if defined($wd->[0]);
+ $stream.="$wd->[1] " if defined($wd->[1]) and $wd->[1] != 0;
+ }
+
+ $stream.="] TJ\n";
+ }
+ }
+ else
+ {
+ if (scalar(@lin) == 1 and (!defined($lin[0]->[1]) or $lin[0]->[1] == 0))
+ {
+ $stream.="0 Tw ($lin[0]->[0]) Tj\n";
+ }
+ else
+ {
+ if ($wt>=-1 or $#lin == 0 or $lin[0]->[1]>=0)
+ {
+ $stream.="0 Tw [";
+
+ foreach my $wd (@lin)
+ {
+ $stream.="($wd->[0]) " if defined($wd->[0]);
+ $stream.="$wd->[1] " if defined($wd->[1]) and $wd->[1] != 0;
+ }
+
+ $stream.="] TJ\n";
+ }
+ else
+ {
+ # $stream.="\%dg 0 Tw [";
+ #
+ # foreach my $wd (@lin)
+ # {
+ # $stream.="($wd->[0]) " if defined($wd->[0]);
+ # $stream.="$wd->[1] " if defined($wd->[1]) and $wd->[1] != 0;
+ # }
+ #
+ # $stream.="] TJ\n";
+ #
+ # my $wt=$lin[0]->[1]||0;
+
+ # while ($wt < -$whtsz/$cftsz)
+ # {
+ # $wt+=$whtsz/$cftsz;
+ # }
+
+ $stream.=sprintf( "%.3f Tw ",-($whtsz+$wt*$cftsz)/$unitwidth-$curkern );
+ if (!defined($lin[0]->[0]) and defined($lin[0]->[1]))
+ {
+ $stream.="[ $lin[0]->[1] (";
+ shift @lin;
+ }
+ else
+ {
+ $stream.="[(";
+ }
+
+ foreach my $wd (@lin)
+ {
+ my $wwt=$wd->[1]||0;
+
+ while ($wwt <= $wt+.1)
+ {
+ $wwt-=$wt;
+ $wd->[0].=' ';
+ }
+
+ if (abs($wwt) < .1 or $wwt == 0)
+ {
+ $stream.="$wd->[0]" if defined($wd->[0]);
+ }
+ else
+ {
+ $wwt=sprintf("%.3f",$wwt);
+ $stream.="$wd->[0]) $wwt (" if defined($wd->[0]);
+ }
+ }
+ $stream.=")] TJ\n";
+ }
+ }
+ }
+
+ @lin=();
+ $xpos+=$pendmv/$unitwidth;
+ $pendmv=0;
+ $nomove=0;
+ $wt=-1;
+}
+
+sub LoadAhead
+{
+ my $no=shift;
+
+ foreach my $j (1..$no)
+ {
+ my $lin=<>;
+ chomp($lin);
+ $lin=~s/\r$//;
+ $lct++;
+
+ push(@ahead,$lin);
+ $stream.="%% $lin\n" if $debug;
+ }
+}
+
+sub do_V
+{
+ my $par=shift;
+
+ if ($mode eq 't')
+ {
+ PutLine();
+ }
+ else
+ {
+ $xpos+=$pendmv/$unitwidth;
+ $pendmv=0;
+ }
+
+ $ypos=$par/$unitwidth;
+
+ LoadAhead(1);
+
+ if (substr($ahead[0],0,1) eq 'H')
+ {
+ $xpos=substr($ahead[0],1)/$unitwidth;
+
+ @ahead=();
+
+ }
+
+# $nomove=$pendmv=0;
+ $poschg=1;
+}
+
+sub do_v
+{
+ my $par=shift;
+
+ PutLine();
+
+ $ypos+=$par/$unitwidth;
+
+ $poschg=1;
+}
+
+sub TextWid
+{
+ my $txt=shift;
+ my $w=0;
+ my $ck=0;
+
+ foreach my $c (split('',$txt))
+ {
+ my $cn=ord($c);
+ $widtbl->[$cn]=$origwidtbl->[$cn]*$cftsz if !defined($widtbl->[$cn]);
+ $w+=$widtbl->[$cn];
+ }
+
+ $ck=length($txt)*$curkern;
+
+ return(($w/$unitwidth)+$ck);
+}
+
+sub do_t
+{
+ my $par=shift;
+
+ if ($kernadjust != $curkern)
+ {
+ PutLine();
+ $stream.="$kernadjust Tc\n";
+ $curkern=$kernadjust;
+ }
+
+ my $wid=TextWid($par);
+
+ $par=reverse(split('',$par)) if $xrev;
+ if ($n_flg and defined($mark))
+ {
+ $mark->{ypos}=$ypos;
+ $mark->{xpos}=$xpos;
+ }
+
+ $n_flg=0;
+ IsText();
+
+ $xpos+=$wid;
+ $xpos+=($pendmv-$nomove)/$unitwidth;
+
+ $stream.="% == '$par'=$wid 'xpos=$xpos\n" if $debug;
+ $par=~s/\\/\\\\/g;
+ $par=~s/\)/\\)/g;
+ $par=~s/\(/\\(/g;
+
+ # $pendmv = 'h' move since last 't'
+ # $nomove = width of char(s) added by 'C', 'N' or 'c'
+ # $w-flg = 'w' seen since last t
+
+ if ($fontchg)
+ {
+ PutLine();
+ $whtsz=$fontlst{$cft}->{FNT}->{spacewidth}*$cftsz;
+ $stream.="/F$cft $cftsz Tf\n", $fontchg=0 if $fontchg && defined($cft);
+ }
+
+ $gotT=1;
+
+ $stream.="% --- wht=$whtsz, pend=$pendmv, nomv=$nomove\n" if $debug;
+
+# if ($w_flg && $#lin > -1)
+# {
+# $lin[$#lin]->[0].=' ';
+# $pendmv-=$whtsz;
+# $dontglue=1 if $pendmv==0;
+# }
+
+ $wt=-$pendmv/$cftsz if $w_flg and $wt==-1;
+ $pendmv-=$nomove;
+ $nomove=0;
+ $w_flg=0;
+
+ if ($xrev)
+ {
+ PutLine(0) if $#lin > -1;
+ MakeMatrix(1);
+ $stream.="$matrix ".PutXY($xpos,$ypos)." Tm\n", $poschg=0;
+ $stream.="$curkern Tc\n";
+ $stream.="0 Tw ";
+ $stream.="($par) Tj\n";
+ MakeMatrix();
+ $stream.="$matrix ".PutXY($xpos,$ypos)." Tm\n", $poschg=0;
+ $matrixchg=0;
+ $stream.="$curkern Tc\n";
+ return;
+ }
+
+ if ($pendmv)
+ {
+ if ($#lin == -1)
+ {
+ push(@lin,[undef,-$pendmv/$cftsz]);
+ }
+ else
+ {
+ $lin[$#lin]->[1]=-$pendmv/$cftsz;
+ }
+
+ push(@lin,[$par,undef]);
+# $xpos+=$pendmv/$unitwidth;
+ $pendmv=0
+ }
+ else
+ {
+ if ($#lin == -1)
+ {
+ push(@lin,[$par,undef]);
+ }
+ else
+ {
+ $lin[$#lin]->[0].=$par;
+ }
+ }
+}
+
+sub do_u
+{
+ my $par=shift;
+
+ $par=m/([+-]?\d+) (.*)/;
+ $kernadjust=$1/$unitwidth;
+ do_t($2);
+ $kernadjust=0;
+}
+
+sub do_h
+{
+ $pendmv+=shift;
+}
+
+sub do_H
+{
+ my $par=shift;
+
+ if ($mode eq 't')
+ {
+ PutLine();
+ }
+ else
+ {
+ $xpos+=$pendmv/$unitwidth;
+ $pendmv=0;
+ }
+
+ my $newx=$par/$unitwidth;
+ $stream.=sprintf("%.3f",$newx-$tmxpos)." 0 Td\n" if $mode eq 't';
+ $tmxpos=$xpos=$newx;
+ $pendmv=$nomove=0;
+}
+
+sub do_C
+{
+ my $par=shift;
+ my $nm;
+
+ ($par,$nm)=FindChar($par);
+
+ do_t($par);
+ $nomove=$nm;
+}
+
+sub FindChar
+{
+ my $chnm=shift;
+ my $fnt=$fontlst{$cft}->{FNT};
+
+ if (exists($fnt->{GNM}->{$chnm}))
+ {
+ my $ch=$fnt->{GNM}->{$chnm};
+ $ch=RemapChr($ch,$fnt,$chnm) if ($ch > 255);
+
+ return(chr($ch),$fnt->{WID}->[$ch]*$cftsz);
+ }
+ else
+ {
+ return(' ');
+ }
+}
+
+sub RemapChr
+{
+ my $ch=shift;
+ my $fnt=shift;
+ my $chnm=shift;
+ my $unused=0;
+
+ foreach my $un (2..$#{$fnt->{GNO}})
+ {
+ $unused=$un,last if $fnt->{GNO}->[$un] eq '/.notdef';
+ }
+
+ if (--$unused <= 255)
+ {
+ $fnt->{GNM}->{$chnm}=$unused++;
+ $fnt->{GNO}->[$unused]=$fnt->{GNO}->[$ch+1];
+ $fnt->{WID}->[$unused]=$fnt->{WID}->[$ch+1];
+ $ch=$unused-1;
+ return($ch);
+ }
+ else
+ {
+ Msg(0,"Too many glyphs used in font '$cft'");
+ return(32);
+ }
+}
+
+sub do_c
+{
+ my $par=shift;
+
+ push(@ahead,substr($par,1));
+ $par=substr($par,0,1);
+ my $ch=ord($par);
+ do_N($ch);
+ $nomove=$fontlst{$cft}->{FNT}->{WID}->[$ch]*$cftsz;
+}
+
+sub do_N
+{
+ my $par=shift;
+
+ if ($par > 255)
+ {
+ my $fnt=$fontlst{$cft}->{FNT};
+ my $chnm='';
+
+ foreach my $c (keys %{$fnt->{GNM}})
+ {
+ $chnm=$c,last if $fnt->{GNM}->{$c} == $par;
+ }
+
+ $par=RemapChr($par,$fnt,$chnm);
+ }
+
+ do_t(chr($par));
+ $nomove=$fontlst{$cft}->{FNT}->{WID}->[$par]*$cftsz;
+}
+
+sub do_n
+{
+ $gotT=0;
+ PutLine();
+ $pendmv=$nomove=0;
+ $n_flg=1;
+ @lin=();
+ PutHotSpot($xpos) if defined($mark);
+}
diff --git a/src/devices/gropdf/pdfmom.man b/src/devices/gropdf/pdfmom.man
new file mode 100644
index 0000000..ef05d5e
--- /dev/null
+++ b/src/devices/gropdf/pdfmom.man
@@ -0,0 +1,140 @@
+.ig
+Copyright (C) 2012
+ Free Software Foundation, Inc.
+written by Deri James <deri@chuzzlewit.demon.co.uk>
+and Peter Schaffter <peter@schaffter.ca)
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+..
+.
+.TH PDFMOM @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
+.
+.
+.SH NAME
+.
+pdfmom \- Produce PDF documents using the mom macro set
+.
+.
+.SH SYNOPSIS
+.
+.SY pdfmom
+.OP \-Tps "\fR[pdfroff options]"
+[groff options]
+.I files .\|.\|.
+.YS
+.
+.SY pdfmom
+.OP \-Tpdf
+[groff options]
+.I files .\|.\|.
+.YS
+.
+.
+.SH DESCRIPTION
+.
+.B pdfmom
+is a wrapper around
+.B groff
+that facilitates the production of PDF documents from files
+formatted with the mom macros.
+.
+.P
+.B pdfmom
+prints to stdout, so output must be redirected to a destination
+file. The size of the final PDF can be reduced by piping the output
+through
+.BR ps2pdf .
+.
+.P
+If called with the
+.B \-Tpdf
+option (which is the default),
+.B pdfmom
+processes files using groff's native PDF driver,
+.BR gropdf .
+If
+.B \-Tps
+is given, processing is passed over to
+.BR pdfroff ,
+which uses
+.BR groff 's
+PostScript driver.
+In either case, multiple runs of the source file are peformed in
+order to satisfy any forward references in the document.
+.
+.P
+.B pdfmom
+accepts all the same options as
+.BR groff .
+If
+.B \-Tps
+is given, the options associated with
+.B pdfroff
+are accepted as well.
+Please note that when
+.B pdfmom
+calls
+.BR pdfroff ,
+the
+.
+.P
+.RS
+.B -mpdfmark -mom --no-toc
+.RE
+.
+.P
+options are implied and should not be given on the
+command line.
+Equally, it is not necessary to supply the
+.B -mom
+or
+.B "-m\~mom"
+options when
+.B \-Tps
+is absent.
+.
+.P
+PDF integration with the
+.B mom
+macros is discussed in full in the PDF manual,
+.IR "Producing PDFs with groff and mom" .
+.
+.
+.SH BUGS
+.
+.B pdfmom
+sometimes issues warnings of the type
+.
+.P
+.RS 2
+\&.\|.\|.:
+.B can't transparently output node at top level
+.RE
+.
+.P
+This is more of an annoyance than a bug, and may safely be ignored.
+.
+.
+.SH "SEE ALSO"
+.
+.BR groff (@MAN1EXT@),
+.BR pdfroff (@MAN1EXT@),
+.BR ps2pdf (@MAN1EXT@)
+.
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
diff --git a/src/devices/gropdf/pdfmom.pl b/src/devices/gropdf/pdfmom.pl
new file mode 100644
index 0000000..8ba3c61
--- /dev/null
+++ b/src/devices/gropdf/pdfmom.pl
@@ -0,0 +1,84 @@
+#!@PERLPATH@ -w
+#
+# pdfmom : Frontend to run groff -mom to produce PDFs
+# Deri James : Friday 16 Mar 2012
+#
+
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# Written by Deri James <deri@chuzzlewit.demon.co.uk>
+#
+# This file is part of groff.
+#
+# groff is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# groff is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+use strict;
+my @cmd;
+my $dev='pdf';
+
+$ENV{PATH}=$ENV{GROFF_BIN_PATH}.':'.$ENV{PATH} if exists($ENV{GROFF_BIN_PATH});
+
+while (my $c=shift)
+{
+ if (substr($c,0,2) eq '-T')
+ {
+ if (length($c) > 2)
+ {
+ $dev=substr($c,2);
+ }
+ else
+ {
+ $dev=shift;
+ }
+
+ next;
+ }
+ elsif ($c eq '-z' or $c eq '-Z')
+ {
+ $dev=$c;
+ next;
+ }
+
+ elsif ($c eq '-v')
+ {
+ print "GNU pdfmom (groff) version @VERSION@\n";
+ exit;
+ }
+
+ push(@cmd,$c);
+}
+
+my $cmdstring=join(' ',@cmd);
+
+if ($dev eq 'pdf')
+{
+ system("groff -Tpdf -dPDF.EXPORT=1 -mom -z $cmdstring 2>&1 | grep '^.ds' | groff -Tpdf -mom - $cmdstring");
+}
+elsif ($dev eq 'ps')
+{
+ system("pdfroff -mpdfmark -mom --no-toc $cmdstring");
+}
+elsif ($dev eq '-z') # pseudo dev - just compile for warnings
+{
+ system("groff -Tpdf -mom -z $cmdstring");
+}
+elsif ($dev eq '-Z') # pseudo dev - produce troff output
+{
+ system("groff -Tpdf -mom -Z $cmdstring");
+}
+else
+{
+ print STDERR "Not compatible with device '-T $dev'\n";
+ exit 1;
+}
+
diff --git a/src/devices/grops/Makefile.sub b/src/devices/grops/Makefile.sub
index e1595cb..95ebd27 100644
--- a/src/devices/grops/Makefile.sub
+++ b/src/devices/grops/Makefile.sub
@@ -1,6 +1,6 @@
PROG=grops$(EXEEXT)
MAN1=grops.n
-XLIBS=$(LIBDRIVER) $(LIBGROFF)
+XLIBS=$(LIBDRIVER) $(LIBGROFF) $(LIBGNU)
MLIB=$(LIBM)
OBJS=\
ps.$(OBJEXT) \
diff --git a/src/devices/grops/grops.man b/src/devices/grops/grops.man
index 2d4ee4a..d60c221 100644
--- a/src/devices/grops/grops.man
+++ b/src/devices/grops/grops.man
@@ -1,6 +1,5 @@
.ig
-Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008,
- 2009, 2010
+Copyright (C) 1989-2006, 2008-2011
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -29,6 +28,7 @@ the original English.
.
.de FT
. if '\\*(.T'ps' .ft \\$1
+. if '\\*(.T'pdf' .ft \\$1
..
.
.
@@ -55,10 +55,6 @@ grops \- PostScript driver for groff
.IR .\|.\|. ]
.YS
.
-.LP
-It is possible to have whitespace between a command line option and its
-parameter.
-.
.
.SH DESCRIPTION
.
@@ -115,6 +111,10 @@ below for a guide how to install fonts for
.
.
.SH OPTIONS
+.LP
+It is possible to have whitespace between a command line option and its
+parameter.
+.
.
.TP
.BI \-b n
diff --git a/src/devices/grotty/tty.cpp b/src/devices/grotty/tty.cpp
index 8765410..e25f934 100644
--- a/src/devices/grotty/tty.cpp
+++ b/src/devices/grotty/tty.cpp
@@ -1,6 +1,6 @@
// -*- C++ -*-
-/* Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
- 2010
+/* Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2009-2011
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -311,11 +311,8 @@ void tty_printer::make_underline(int w)
if (!w)
warning("can't underline zero-width character");
else {
- int n = w / font::hor;
- for (int i = 0; i < n; i++)
- putchar('_');
- for (int j = 0; j < n; j++)
- putchar('\b');
+ putchar('_');
+ putchar('\b');
}
}
else {
@@ -337,10 +334,8 @@ void tty_printer::make_bold(output_character c, int w)
if (!w)
warning("can't print zero-width character in bold");
else {
- int n = w / font::hor;
put_char(c);
- for (int i = 0; i < n; i++)
- putchar('\b');
+ putchar('\b');
}
}
else {
diff --git a/src/devices/xditview/Makefile.sub b/src/devices/xditview/Makefile.sub
index f195844..927807e 100644
--- a/src/devices/xditview/Makefile.sub
+++ b/src/devices/xditview/Makefile.sub
@@ -2,7 +2,7 @@ PROG=gxditview$(EXEEXT)
MAN1=gxditview.n
MLIB=$(LIBM)
XLIBS=$(LIBXUTIL)
-EXTRA_CFLAGS=$(X_CFLAGS)
+EXTRA_CFLAGS=$(X_CFLAGS) -Dlint
EXTRA_LDFLAGS=$(X_LIBS) $(X_PRE_LIBS) -lXaw -lXmu -lXt -lX11 $(X_EXTRA_LIBS)
OBJS=\
device.$(OBJEXT) \
diff --git a/src/include/config.hin b/src/include/config.hin
index 08e6001..3f1ff1e 100644
--- a/src/include/config.hin
+++ b/src/include/config.hin
@@ -1,5 +1,8 @@
/* src/include/config.hin. Generated from configure.ac by autoheader. */
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
/* Define if your C++ doesn't understand `delete []'. */
#undef ARRAY_DELETE_NEEDS_SIZE
@@ -38,7 +41,7 @@
/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
-/* Define if you have the iconv() function. */
+/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV
/* Define to 1 if you have the <inttypes.h> header file. */
@@ -116,6 +119,9 @@
/* Define if <math.h> defines struct exception. */
#undef HAVE_STRUCT_EXCEPTION
+/* Define to 1 if you have the `symlink' function. */
+#undef HAVE_SYMLINK
+
/* Define to 1 if you have the <sys/dir.h> header file. */
#undef HAVE_SYS_DIR_H
@@ -125,6 +131,9 @@
/* Define if you have sys_nerr in <errno.h>, <stdio.h>, or <stdio.h>. */
#undef HAVE_SYS_NERR
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
@@ -140,6 +149,12 @@
/* Define to 1 if you have the `vsnprintf' function. */
#undef HAVE_VSNPRINTF
+/* Define to 1 if O_NOATIME works. */
+#undef HAVE_WORKING_O_NOATIME
+
+/* Define to 1 if O_NOFOLLOW works. */
+#undef HAVE_WORKING_O_NOFOLLOW
+
/* Define as const if the declaration of iconv() needs const. */
#undef ICONV_CONST
@@ -197,6 +212,9 @@
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
/* Define to the version of this package. */
#undef PACKAGE_VERSION
@@ -215,17 +233,54 @@
/* Define if your C++ compiler uses a traditional (Reiser) preprocessor. */
#undef TRADITIONAL_CPP
+/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
/* Define if the 0200 bit of the status returned by wait() indicates whether a
core image was produced for a process that was terminated by a signal. */
#undef WCOREFLAG
-/* Define to 1 if your processor stores words with the most significant byte
- first (like Motorola and SPARC, unlike Intel and VAX). */
-#undef WORDS_BIGENDIAN
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+# undef WORDS_BIGENDIAN
+# endif
+#endif
/* Define to 1 if the X Window System is missing or not being used. */
#undef X_DISPLAY_MISSING
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
/* Define if -D_POSIX_SOURCE is necessary. */
#undef _POSIX_SOURCE
diff --git a/src/include/localcharset.h b/src/include/localcharset.h
index a1592ab..6d3b7c2 100644
--- a/src/include/localcharset.h
+++ b/src/include/localcharset.h
@@ -1,19 +1,19 @@
/* Determine a canonical name for the current locale's character encoding.
- Copyright (C) 2000-2003 Free Software Foundation, Inc.
+ Copyright (C) 2000-2003, 2009-2012 Free Software Foundation, Inc.
This file is part of the GNU CHARSET Library.
This program 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 3 of the License, or
- (at your option) any later version.
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
#ifndef _LOCALCHARSET_H
#define _LOCALCHARSET_H
diff --git a/src/libs/gnulib/Makefile.in b/src/libs/gnulib/Makefile.in
index abd3dd7..a062c88 100644
--- a/src/libs/gnulib/Makefile.in
+++ b/src/libs/gnulib/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -15,10 +14,26 @@
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
@@ -36,23 +51,29 @@ host_triplet = @host@
subdir = .
DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
- $(top_srcdir)/configure build-aux/compile \
- build-aux/config.guess build-aux/config.sub build-aux/depcomp \
- build-aux/install-sh build-aux/missing
+ $(top_srcdir)/build-aux/compile \
+ $(top_srcdir)/build-aux/config.guess \
+ $(top_srcdir)/build-aux/config.sub \
+ $(top_srcdir)/build-aux/install-sh \
+ $(top_srcdir)/build-aux/missing $(top_srcdir)/configure \
+ build-aux/compile build-aux/config.guess build-aux/config.sub \
+ build-aux/depcomp build-aux/install-sh build-aux/missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
- $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/extensions.m4 \
- $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/glibc21.m4 \
- $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \
+ $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+ $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
$(top_srcdir)/m4/include_next.m4 \
+ $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
$(top_srcdir)/m4/libunistring-base.m4 \
$(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/longlong.m4 \
$(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/onceonly.m4 \
- $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
- $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wctype_h.m4 \
- $(top_srcdir)/m4/wcwidth.m4 $(top_srcdir)/m4/wint_t.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/warn-on-use.m4 \
+ $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
@@ -70,21 +91,30 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir dist dist-all distcheck
+ cscope distdir dist dist-all distcheck
ETAGS = etags
CTAGS = ctags
+CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
- { test ! -d "$(distdir)" \
- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr "$(distdir)"; }; }
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -112,11 +142,17 @@ am__relativize = \
reldir="$$dir2"
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
+pkglibexecdir = @pkglibexecdir@
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+ARFLAGS = @ARFLAGS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -141,18 +177,59 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
GLIBC21 = @GLIBC21@
GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
GNULIB_MBRLEN = @GNULIB_MBRLEN@
GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
GNULIB_MBSINIT = @GNULIB_MBSINIT@
GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
GREP = @GREP@
HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
HAVE_FEATURES_H = @HAVE_FEATURES_H@
@@ -175,11 +252,42 @@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
HAVE_WCHAR_H = @HAVE_WCHAR_H@
HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE__BOOL = @HAVE__BOOL@
INCLUDE_NEXT = @INCLUDE_NEXT@
INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
INSTALL = @INSTALL@
@@ -187,6 +295,8 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
LDFLAGS = @LDFLAGS@
LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
@@ -198,10 +308,12 @@ LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
NEXT_STDDEF_H = @NEXT_STDDEF_H@
NEXT_STDINT_H = @NEXT_STDINT_H@
NEXT_WCHAR_H = @NEXT_WCHAR_H@
@@ -217,6 +329,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
RANLIB = @RANLIB@
REPLACE_BTOWC = @REPLACE_BTOWC@
@@ -229,18 +343,24 @@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
REPLACE_NULL = @REPLACE_NULL@
+REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@
+REPLACE_TOWLOWER = @REPLACE_TOWLOWER@
REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
REPLACE_WCTOB = @REPLACE_WCTOB@
REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
STDDEF_H = @STDDEF_H@
STDINT_H = @STDINT_H@
STRIP = @STRIP@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
VERSION = @VERSION@
WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
WINT_T_SUFFIX = @WINT_T_SUFFIX@
@@ -279,6 +399,7 @@ infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
+lispdir = @lispdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
@@ -303,7 +424,7 @@ all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
-am--refresh:
+am--refresh: Makefile
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
@@ -339,10 +460,8 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__aclocal_m4_deps):
config.h: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
+ @if test ! -f $@; then rm -f stamp-h1; else :; fi
+ @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
@@ -356,12 +475,12 @@ distclean-hdr:
-rm -f config.h stamp-h1
# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
@@ -371,7 +490,11 @@ $(RECURSIVE_TARGETS):
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
@@ -385,37 +508,6 @@ $(RECURSIVE_TARGETS):
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
@@ -424,6 +516,10 @@ ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
+cscopelist-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+ done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -487,8 +583,32 @@ GTAGS:
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+
+clean-cscope:
+ -rm -f cscope.files
+
+cscope.files: clean-cscope cscopelist-recursive cscopelist
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(DISTFILES)
$(am__remove_distdir)
@@ -524,13 +644,10 @@ distdir: $(DISTFILES)
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
@@ -559,36 +676,36 @@ distdir: $(DISTFILES)
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
- $(am__remove_distdir)
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
-dist-lzma: distdir
- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
- $(am__remove_distdir)
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
- $(am__remove_distdir)
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
-dist dist-all: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
@@ -599,8 +716,8 @@ distcheck: dist
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.lzma*) \
- lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
@@ -610,9 +727,9 @@ distcheck: dist
*.zip*) \
unzip $(distdir).zip ;;\
esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
- mkdir $(distdir)/_build
- mkdir $(distdir)/_inst
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
@@ -620,6 +737,7 @@ distcheck: dist
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -643,13 +761,21 @@ distcheck: dist
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd "$$am__cwd" \
|| exit 1
- $(am__remove_distdir)
+ $(am__post_remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
- @$(am__cd) '$(distuninstallcheck_dir)' \
- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
@@ -680,10 +806,15 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
@@ -765,20 +896,22 @@ ps-am:
uninstall-am:
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
- ctags-recursive install-am install-strip tags-recursive
+ cscopelist-recursive ctags-recursive install-am install-strip \
+ tags-recursive
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am am--refresh check check-am clean clean-generic \
- ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
- dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
- distclean distclean-generic distclean-hdr distclean-tags \
- distcleancheck distdir distuninstallcheck dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs installdirs-am maintainer-clean \
+ all all-am am--refresh check check-am clean clean-cscope \
+ clean-generic cscope cscopelist cscopelist-recursive ctags \
+ ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-lzip \
+ dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
+ distclean-generic distclean-hdr distclean-tags distcleancheck \
+ distdir distuninstallcheck dvi dvi-am html html-am info \
+ info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
diff --git a/src/libs/gnulib/aclocal.m4 b/src/libs/gnulib/aclocal.m4
index 96bf7e0..2246b39 100644
--- a/src/libs/gnulib/aclocal.m4
+++ b/src/libs/gnulib/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.12.5 -*- Autoconf -*-
+
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -13,13 +13,13 @@
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],,
-[m4_warning([this file was generated for autoconf 2.67.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -31,10 +31,10 @@ To do so, use the procedure documented by the package, typically `autoreconf'.])
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
+[am__api_version='1.12'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11.1], [],
+m4_if([$1], [1.12.5], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -50,22 +50,22 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
+[AM_AUTOMAKE_VERSION([1.12.5])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
#
# Of course, Automake must honor this variable whenever it calls a
# tool from the auxiliary directory. The problem is that $srcdir (and
@@ -84,7 +84,7 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
#
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
# are both prefixed by $srcdir. In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
+# harmless because $srcdir is '.', but things will broke when you
# start a VPATH build or use an absolute $srcdir.
#
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
@@ -110,22 +110,19 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 9
-
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
# Define a conditional.
AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
AC_SUBST([$1_TRUE])dnl
AC_SUBST([$1_FALSE])dnl
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
@@ -144,16 +141,14 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 10
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
# will think it sees a *use*, and therefore will trigger all it's
# C support machinery. Also note that it means that autoscan, seeing
@@ -163,7 +158,7 @@ fi])])
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
# We try a few techniques and use that to set a single cache variable.
#
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
@@ -176,12 +171,13 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
AC_REQUIRE([AM_DEP_TRACK])dnl
-ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
- [$1], CXX, [depcc="$CXX" am_compiler_list=],
- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
- [$1], UPC, [depcc="$UPC" am_compiler_list=],
- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
- [depcc="$$1" am_compiler_list=])
+m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
+ [$1], [CXX], [depcc="$CXX" am_compiler_list=],
+ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+ [$1], [UPC], [depcc="$UPC" am_compiler_list=],
+ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
AC_CACHE_CHECK([dependency style of $depcc],
[am_cv_$1_dependencies_compiler_type],
@@ -189,8 +185,9 @@ AC_CACHE_CHECK([dependency style of $depcc],
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -229,16 +226,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
@@ -247,16 +244,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
test "$am__universal" = false || continue
;;
nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
if test "x$enable_dependency_tracking" = xyes; then
continue
else
break
fi
;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
@@ -304,7 +301,7 @@ AM_CONDITIONAL([am__fastdep$1], [
# AM_SET_DEPDIR
# -------------
# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
AC_DEFUN([AM_SET_DEPDIR],
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
@@ -314,28 +311,33 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
# AM_DEP_TRACK
# ------------
AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors])
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+ [--enable-dependency-tracking],
+ [do not reject slow dependency extractors])
+AS_HELP_STRING(
+ [--disable-dependency-tracking],
+ [speeds up one-time build])])
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
+ am__nodep='_no'
fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])dnl
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
])
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-#serial 5
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
@@ -354,7 +356,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
+ # We used to match only the files named 'Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
@@ -366,21 +368,19 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
+ # from the Makefile without running 'make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`AS_DIRNAME(["$file"])`
@@ -398,7 +398,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
# This macro should only be invoked once -- use via AC_REQUIRE.
#
# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each `.P' file that we will
+# is enabled. FIXME. This creates each '.P' file that we will
# need in order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
@@ -408,15 +408,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 16
-
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
@@ -461,31 +458,41 @@ AC_SUBST([CYGPATH_W])
# Define the identity of the package.
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+[AC_DIAGNOSE([obsolete],
+[$0: two- and three-arguments forms are deprecated. For more info, see:
+http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+m4_if(
+ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+ [ok:ok],,
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
# Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
@@ -496,28 +503,35 @@ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
[_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
- [_AM_DEPENDENCIES(CC)],
- [define([AC_PROG_CC],
- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+ [_AM_DEPENDENCIES([CC])],
+ [m4_define([AC_PROG_CC],
+ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [_AM_DEPENDENCIES(CXX)],
- [define([AC_PROG_CXX],
- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+ [_AM_DEPENDENCIES([CXX])],
+ [m4_define([AC_PROG_CXX],
+ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
- [_AM_DEPENDENCIES(OBJC)],
- [define([AC_PROG_OBJC],
- defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+ [_AM_DEPENDENCIES([OBJC])],
+ [m4_define([AC_PROG_OBJC],
+ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+dnl Support for Objective C++ was only introduced in Autoconf 2.65,
+dnl but we still cater to Autoconf 2.62.
+m4_ifdef([AC_PROG_OBJCXX],
+[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+ [_AM_DEPENDENCIES([OBJCXX])],
+ [m4_define([AC_PROG_OBJCXX],
+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl
])
_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
])
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
dnl mangled by Autoconf and run in a shell conditional statement.
m4_define([_AC_COMPILER_EXEEXT],
@@ -545,7 +559,7 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -564,16 +578,14 @@ if test x"${install_sh}" != xset; then
install_sh="\${SHELL} $am_aux_dir/install-sh"
esac
fi
-AC_SUBST(install_sh)])
+AC_SUBST([install_sh])])
-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2003-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT],
@@ -589,14 +601,12 @@ AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 4
-
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
@@ -614,7 +624,7 @@ am__quote=
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
@@ -639,15 +649,12 @@ AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
-# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 6
-
# AM_PROG_CC_C_O
# --------------
# Like AC_PROG_CC_C_O, but changed for automake.
@@ -676,15 +683,12 @@ m4_define([AC_PROG_CC],
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 6
-
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
AC_DEFUN([AM_MISSING_PROG],
@@ -692,7 +696,6 @@ AC_DEFUN([AM_MISSING_PROG],
$1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)])
-
# AM_MISSING_HAS_RUN
# ------------------
# Define MISSING if not defined so far and test if it supports --run.
@@ -713,59 +716,31 @@ if eval "$MISSING --run true"; then
am_missing_run="$MISSING --run "
else
am_missing_run=
- AC_MSG_WARN([`missing' script is too old or missing])
+ AC_MSG_WARN(['missing' script is too old or missing])
fi
])
-# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
- [[\\/$]]* | ?:[[\\/]]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 4
-
# _AM_MANGLE_OPTION(NAME)
# -----------------------
AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
-# ------------------------------
+# --------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
+# ------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
@@ -778,22 +753,16 @@ AC_DEFUN([_AM_IF_OPTION],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 5
-
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
@@ -804,32 +773,40 @@ case `pwd` in
esac
case $srcdir in
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
- AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
esac
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-alias in your environment])
- fi
-
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+ alias in your environment])
+ fi
+ if test "$[2]" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
test "$[2]" = conftest.file
)
then
@@ -839,9 +816,25 @@ else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
-AC_MSG_RESULT(yes)])
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+ [AC_MSG_CHECKING([that generated files are newer than configure])
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -849,34 +842,32 @@ AC_MSG_RESULT(yes)])
# AM_PROG_INSTALL_STRIP
# ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
+# One issue with vendor 'install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
# is unlikely to handle the host's binaries.
# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
+# always use install-sh in "make install-strip", and initialize
# STRIPPROG with the value of the STRIP variable (set by the user).
AC_DEFUN([AM_PROG_INSTALL_STRIP],
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
if test "$cross_compiling" != no; then
AC_CHECK_TOOL([STRIP], [strip], :)
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -884,24 +875,22 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
AC_DEFUN([_AM_SUBST_NOTMAKE])
# AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
+# --------------------------
# Public sister of _AM_SUBST_NOTMAKE.
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 2004-2012 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 2
-
# _AM_PROG_TAR(FORMAT)
# --------------------
# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
#
# Substitute a variable $(am__tar) that is a command
# writing to stdout a FORMAT-tarball containing the directory
@@ -912,10 +901,11 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# a tarball read from stdin.
# $(am__untar) < result.tar
AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4_if([$1], [v7],
- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
[m4_case([$1], [ustar],, [pax],,
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
@@ -923,7 +913,7 @@ AC_MSG_CHECKING([how to create a $1 tar archive])
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
+# Solaris sh will not grok spaces in the rhs of '-'.
for _am_tool in $_am_tools
do
case $_am_tool in
@@ -986,16 +976,21 @@ AC_SUBST([am__untar])
m4_include([m4/00gnulib.m4])
m4_include([m4/codeset.m4])
+m4_include([m4/configmake.m4])
m4_include([m4/extensions.m4])
+m4_include([m4/extern-inline.m4])
m4_include([m4/fcntl-o.m4])
m4_include([m4/glibc21.m4])
m4_include([m4/gnulib-common.m4])
m4_include([m4/include_next.m4])
+m4_include([m4/inttypes-pri.m4])
+m4_include([m4/inttypes.m4])
m4_include([m4/libunistring-base.m4])
m4_include([m4/localcharset.m4])
m4_include([m4/longlong.m4])
m4_include([m4/multiarch.m4])
m4_include([m4/onceonly.m4])
+m4_include([m4/stdbool.m4])
m4_include([m4/stddef_h.m4])
m4_include([m4/stdint.m4])
m4_include([m4/warn-on-use.m4])
diff --git a/src/libs/gnulib/build-aux/compile b/src/libs/gnulib/build-aux/compile
index c0096a7..718dc6d 100755
--- a/src/libs/gnulib/build-aux/compile
+++ b/src/libs/gnulib/build-aux/compile
@@ -1,10 +1,9 @@
#! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
+# Wrapper for compilers which do not understand '-c -o'.
-scriptversion=2009-10-06.20; # UTC
+scriptversion=2012-10-14.11; # UTC
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software
-# Foundation, Inc.
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
@@ -29,21 +28,224 @@ scriptversion=2009-10-06.20; # UTC
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
+nl='
+'
+
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" "" $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+ file=$1
+ case $file in
+ / | /[!/]*) # absolute file, and not a UNC file
+ if test -z "$file_conv"; then
+ # lazily determine how to convert abs files
+ case `uname -s` in
+ MINGW*)
+ file_conv=mingw
+ ;;
+ CYGWIN*)
+ file_conv=cygwin
+ ;;
+ *)
+ file_conv=wine
+ ;;
+ esac
+ fi
+ case $file_conv/,$2, in
+ *,$file_conv,*)
+ ;;
+ mingw/*)
+ file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+ ;;
+ cygwin/*)
+ file=`cygpath -m "$file" || echo "$file"`
+ ;;
+ wine/*)
+ file=`winepath -w "$file" || echo "$file"`
+ ;;
+ esac
+ ;;
+ esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ found=no
+ save_IFS=$IFS
+ IFS=';'
+ for dir in $lib_path $LIB
+ do
+ IFS=$save_IFS
+ if $shared && test -f "$dir/$lib.dll.lib"; then
+ found=yes
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ if test -f "$dir/lib$lib.a"; then
+ found=yes
+ lib=$dir/lib$lib.a
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+ # Assume a capable shell
+ lib_path=
+ shared=:
+ linker_opts=
+ for arg
+ do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ eat=1
+ case $2 in
+ *.o | *.[oO][bB][jJ])
+ func_file_conv "$2"
+ set x "$@" -Fo"$file"
+ shift
+ ;;
+ *)
+ func_file_conv "$2"
+ set x "$@" -Fe"$file"
+ shift
+ ;;
+ esac
+ ;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -I*)
+ func_file_conv "${1#-I}" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -l*)
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
+ shift
+ ;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
+ -L*)
+ func_cl_dashL "${1#-L}"
+ ;;
+ -static)
+ shared=false
+ ;;
+ -Wl,*)
+ arg=${1#-Wl,}
+ save_ifs="$IFS"; IFS=','
+ for flag in $arg; do
+ IFS="$save_ifs"
+ linker_opts="$linker_opts $flag"
+ done
+ IFS="$save_ifs"
+ ;;
+ -Xlinker)
+ eat=1
+ linker_opts="$linker_opts $2"
+ ;;
+ -*)
+ set x "$@" "$1"
+ shift
+ ;;
+ *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+ func_file_conv "$1"
+ set x "$@" -Tp"$file"
+ shift
+ ;;
+ *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+ func_file_conv "$1" mingw
+ set x "$@" "$file"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+ done
+ if test -n "$linker_opts"; then
+ linker_opts="-link$linker_opts"
+ fi
+ exec "$@" $linker_opts
+ exit 1
+}
+
+eat=
+
case $1 in
'')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
+right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
@@ -53,11 +255,13 @@ EOF
echo "compile $scriptversion"
exit $?
;;
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ func_cl_wrapper "$@" # Doesn't return...
+ ;;
esac
ofile=
cfile=
-eat=
for arg
do
@@ -66,8 +270,8 @@ do
else
case $1 in
-o)
- # configure might choose to run compile as `compile cc -o foo foo.c'.
- # So we strip `-o arg' only if arg is an object.
+ # configure might choose to run compile as 'compile cc -o foo foo.c'.
+ # So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
@@ -94,10 +298,10 @@ do
done
if test -z "$ofile" || test -z "$cfile"; then
- # If no `-o' option was seen then we might have been invoked from a
+ # If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
- # `.c' file was seen then we are probably linking. That is also
+ # '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
@@ -106,7 +310,7 @@ fi
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
-# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
diff --git a/src/libs/gnulib/build-aux/config.guess b/src/libs/gnulib/build-aux/config.guess
index 4c8f032..872b96a 100755
--- a/src/libs/gnulib/build-aux/config.guess
+++ b/src/libs/gnulib/build-aux/config.guess
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
-timestamp='2010-09-24'
+timestamp='2012-09-25'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -17,9 +17,7 @@ timestamp='2010-09-24'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -57,8 +55,8 @@ GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -92,7 +90,7 @@ if test $# != 0; then
exit 1
fi
-trap 'exit 1' HUP INT TERM
+trap 'exit 1' 1 2 15
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
@@ -106,7 +104,7 @@ trap 'exit 1' HUP INT TERM
set_cc_for_build='
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
: ${TMPDIR=/tmp} ;
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
@@ -145,7 +143,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
@@ -181,7 +179,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
fi
;;
*)
- os=netbsd
+ os=netbsd
;;
esac
# The OS release
@@ -202,6 +200,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
@@ -224,7 +226,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
@@ -270,7 +272,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
@@ -296,12 +301,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo s390-ibm-zvmoe
exit ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
+ echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -395,23 +400,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
exit ;;
@@ -481,8 +486,8 @@ EOF
echo m88k-motorola-sysv3
exit ;;
AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@@ -495,7 +500,7 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit ;;
@@ -595,52 +600,52 @@ EOF
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
+ esac ;;
+ esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ sed 's/^ //' << EOF >$dummy.c
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -731,22 +736,22 @@ EOF
exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
@@ -770,14 +775,14 @@ EOF
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -789,30 +794,35 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
- case ${UNAME_MACHINE} in
- pc98)
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac
exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
+ i*:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
*:Interix*:*)
- case ${UNAME_MACHINE} in
+ case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
@@ -858,6 +868,13 @@ EOF
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
@@ -867,7 +884,7 @@ EOF
EV6) UNAME_MACHINE=alphaev6 ;;
EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
+ esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
@@ -879,20 +896,29 @@ EOF
then
echo ${UNAME_MACHINE}-unknown-linux-gnu
else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ fi
fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
cris:Linux:*:*)
- echo cris-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
frv:Linux:*:*)
- echo frv-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:Linux:*:*)
LIBC=gnu
@@ -934,7 +960,7 @@ EOF
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
- echo or32-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
@@ -960,7 +986,7 @@ EOF
echo ${UNAME_MACHINE}-ibm-linux
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -969,16 +995,16 @@ EOF
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-tilera-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -987,11 +1013,11 @@ EOF
echo i386-sequent-sysv4
exit ;;
i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
+ # Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit ;;
i*86:OS/2:*:*)
@@ -1023,7 +1049,7 @@ EOF
fi
exit ;;
i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
@@ -1051,13 +1077,13 @@ EOF
exit ;;
pc:*:*:*)
# Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i586.
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configury will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
- exit ;;
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit ;;
@@ -1092,8 +1118,8 @@ EOF
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
@@ -1136,10 +1162,10 @@ EOF
echo ns32k-sni-sysv
fi
exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
@@ -1165,11 +1191,11 @@ EOF
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv${UNAME_RELEASE}
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit ;;
@@ -1182,6 +1208,9 @@ EOF
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@@ -1237,7 +1266,7 @@ EOF
NEO-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
+ NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
@@ -1282,13 +1311,13 @@ EOF
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
+ echo mips-sei-seiux${UNAME_RELEASE}
exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;;
*:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
case "${UNAME_MACHINE}" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
@@ -1306,11 +1335,11 @@ EOF
i*86:AROS:*:*)
echo ${UNAME_MACHINE}-pc-aros
exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
esac
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
@@ -1328,11 +1357,11 @@ main ()
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
- "4"
+ "4"
#else
- ""
+ ""
#endif
- ); exit (0);
+ ); exit (0);
#endif
#endif
diff --git a/src/libs/gnulib/build-aux/config.sub b/src/libs/gnulib/build-aux/config.sub
index 3ec94f1..89b1286 100755
--- a/src/libs/gnulib/build-aux/config.sub
+++ b/src/libs/gnulib/build-aux/config.sub
@@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
-timestamp='2010-12-11'
+timestamp='2012-10-10'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -21,9 +21,7 @@ timestamp='2010-12-11'
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -76,8 +74,8 @@ version="\
GNU config.sub ($timestamp)
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -125,13 +123,17 @@ esac
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
@@ -154,12 +156,12 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze)
+ -apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
- -bluegene*)
- os=-cnk
+ -bluegene*)
+ os=-cnk
;;
-sim | -cisco | -oki | -wec | -winbond)
os=
@@ -175,10 +177,10 @@ case $os in
os=-chorusos
basic_machine=$1
;;
- -chorusrdb)
- os=-chorusrdb
+ -chorusrdb)
+ os=-chorusrdb
basic_machine=$1
- ;;
+ ;;
-hiux*)
os=-hiuxwe2
;;
@@ -223,6 +225,12 @@ case $os in
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
-lynx*)
os=-lynxos
;;
@@ -247,20 +255,27 @@ case $basic_machine in
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
+ | aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | arc \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
+ | epiphany \
| fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep | metag \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -286,22 +301,23 @@ case $basic_machine in
| nds32 | nds32le | nds32be \
| nios | nios2 \
| ns16k | ns32k \
+ | open8 \
| or32 \
| pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
- | rx \
+ | rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu | strongarm \
- | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
- | v850 | v850e \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \
- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
@@ -314,8 +330,7 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12 | picochip)
- # Motorola 68HC11/12.
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -325,6 +340,21 @@ case $basic_machine in
basic_machine=mt-unknown
;;
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
+ ;;
+
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
@@ -339,11 +369,13 @@ case $basic_machine in
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
+ | aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
+ | be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
@@ -352,12 +384,15 @@ case $basic_machine in
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -382,24 +417,26 @@ case $basic_machine in
| nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
- | romp-* | rs6000-* | rx-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tile-* | tilegx-* \
+ | tile*-* \
| tron-* \
| ubicom32-* \
- | v850-* | v850e-* | vax-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-* | z80-*)
@@ -424,7 +461,7 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
- abacus)
+ abacus)
basic_machine=abacus-unknown
;;
adobe68k)
@@ -507,7 +544,7 @@ case $basic_machine in
basic_machine=c90-cray
os=-unicos
;;
- cegcc)
+ cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
@@ -697,7 +734,6 @@ case $basic_machine in
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
@@ -755,9 +791,13 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
- microblaze)
+ microblaze*)
basic_machine=microblaze-xilinx
;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
@@ -794,10 +834,18 @@ case $basic_machine in
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
+ msys)
+ basic_machine=i386-pc
+ os=-msys
+ ;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
@@ -862,10 +910,10 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
- neo-tandem)
+ neo-tandem)
basic_machine=neo-tandem
;;
- nse-tandem)
+ nse-tandem)
basic_machine=nse-tandem
;;
nsr-tandem)
@@ -950,9 +998,10 @@ case $basic_machine in
;;
power) basic_machine=power-ibm
;;
- ppc) basic_machine=powerpc-unknown
+ ppc | ppcbe) basic_machine=powerpc-unknown
;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
@@ -1046,6 +1095,9 @@ case $basic_machine in
basic_machine=i860-stratus
os=-sysv4
;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
sun2)
basic_machine=m68000-sun
;;
@@ -1102,13 +1154,8 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
- # This must be matched before tile*.
- tilegx*)
- basic_machine=tilegx-unknown
- os=-linux-gnu
- ;;
tile*)
- basic_machine=tile-unknown
+ basic_machine=$basic_machine-unknown
os=-linux-gnu
;;
tx39)
@@ -1178,6 +1225,9 @@ case $basic_machine in
xps | xps100)
basic_machine=xps100-honeywell
;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
ymp)
basic_machine=ymp-cray
os=-unicos
@@ -1275,11 +1325,11 @@ esac
if [ x"$os" != x"" ]
then
case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
+ # First match some system type aliases
+ # that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
- -auroraux)
- os=-auroraux
+ -auroraux)
+ os=-auroraux
;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
@@ -1309,15 +1359,15 @@ case $os in
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -openbsd* | -solidbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-uclibc* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1364,7 +1414,7 @@ case $os in
-opened*)
os=-openedition
;;
- -os400*)
+ -os400*)
os=-os400
;;
-wince*)
@@ -1413,7 +1463,7 @@ case $os in
-sinix*)
os=-sysv4
;;
- -tpf*)
+ -tpf*)
os=-tpf
;;
-triton*)
@@ -1458,8 +1508,8 @@ case $os in
-dicos*)
os=-dicos
;;
- -nacl*)
- ;;
+ -nacl*)
+ ;;
-none)
;;
*)
@@ -1482,10 +1532,10 @@ else
# system, and we'll never get to this point.
case $basic_machine in
- score-*)
+ score-*)
os=-elf
;;
- spu-*)
+ spu-*)
os=-elf
;;
*-acorn)
@@ -1497,8 +1547,11 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
- c4x-* | tic4x-*)
- os=-coff
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ hexagon-*)
+ os=-elf
;;
tic54x-*)
os=-coff
@@ -1527,14 +1580,11 @@ case $basic_machine in
;;
m68000-sun)
os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
;;
m68*-cisco)
os=-aout
;;
- mep-*)
+ mep-*)
os=-elf
;;
mips*-cisco)
@@ -1561,7 +1611,7 @@ case $basic_machine in
*-ibm)
os=-aix
;;
- *-knuth)
+ *-knuth)
os=-mmixware
;;
*-wec)
diff --git a/src/libs/gnulib/build-aux/depcomp b/src/libs/gnulib/build-aux/depcomp
index df8eea7..e1f51f4 100755
--- a/src/libs/gnulib/build-aux/depcomp
+++ b/src/libs/gnulib/build-aux/depcomp
@@ -1,10 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-07-12.20; # UTC
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -28,7 +27,7 @@ scriptversion=2009-04-28.21; # UTC
case $1 in
'')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
@@ -40,11 +39,11 @@ as side-effects.
Environment variables:
depmode Dependency tracking mode.
- source Source file read by `PROGRAMS ARGS'.
- object Object file output by `PROGRAMS ARGS'.
+ source Source file read by 'PROGRAMS ARGS'.
+ object Object file output by 'PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
- tmpdepfile Temporary file to use when outputing dependencies.
+ tmpdepfile Temporary file to use when outputting dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
@@ -57,6 +56,12 @@ EOF
;;
esac
+# A tabulation character.
+tab=' '
+# A newline character.
+nl='
+'
+
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
@@ -69,6 +74,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
@@ -90,10 +98,24 @@ if test "$depmode" = msvcmsys; then
# This is just like msvisualcpp but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
- cygpath_u="sed s,\\\\\\\\,/,g"
+ cygpath_u='sed s,\\\\,/,g'
depmode=msvisualcpp
fi
+if test "$depmode" = msvc7msys; then
+ # This is just like msvc7 but w/o cygpath translation.
+ # Just convert the backslash-escaped backslashes to single forward
+ # slashes to satisfy depend.m4
+ cygpath_u='sed s,\\\\,/,g'
+ depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
+fi
+
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
@@ -123,13 +145,17 @@ gcc3)
;;
gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
+## -MM, not -M (despite what the docs say). Also, it might not be
+## supported by the other compilers which use the 'gcc' depmode.
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
@@ -148,20 +174,21 @@ gcc)
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
+## This next piece of magic avoids the "deleted header file" problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
+ tr ' ' "$nl" < "$tmpdepfile" |
+## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
-## well.
+## well. hp depmode also adds that space, but also prefixes the VPATH
+## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+ | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -193,18 +220,15 @@ sgi)
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
+ # the IRIX cc adds comments like '#:fec' to the end of the
# dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
+ tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> "$depfile"
+ tr "$nl" ' ' >> "$depfile"
echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
+ tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> "$depfile"
else
@@ -216,10 +240,17 @@ sgi)
rm -f "$tmpdepfile"
;;
+xlc)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts `$object:' at the
+ # current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
@@ -249,12 +280,11 @@ aix)
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
- # Each line is of the form `foo.o: dependent.h'.
+ # Each line is of the form 'foo.o: dependent.h'.
# Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
+ # '$object: dependent.h' and one to simply 'dependent.h:'.
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
@@ -265,23 +295,26 @@ aix)
;;
icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
+ # However on
+ # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
- # which is wrong. We want:
+ # which is wrong. We want
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using \ :
+ # and will wrap long lines using '\':
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
-
+ # tcc 0.9.26 (FIXME still under development at the moment of writing)
+ # will emit a similar output, but also prepend the continuation lines
+ # with horizontal tabulation characters.
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
@@ -290,6 +323,85 @@ icc)
exit $stat
fi
rm -f "$depfile"
+ # Each line is of the form 'foo.o: dependent.h',
+ # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # '$object: dependent.h' and one to simply 'dependent.h:'.
+ sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \
+ < "$tmpdepfile" > "$depfile"
+ sed '
+ s/[ '"$tab"'][ '"$tab"']*/ /g
+ s/^ *//
+ s/ *\\*$//
+ s/^[^:]*: *//
+ /^$/d
+ /:$/d
+ s/$/ :/
+ ' < "$tmpdepfile" >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file. A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+ # Portland's C compiler understands '-MD'.
+ # Will always output deps to 'file.d' where file is the root name of the
+ # source file under compilation, even if file resides in a subdirectory.
+ # The object file name does not affect the name of the '.d' file.
+ # pgcc 10.2 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using '\' :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ # Use the source, not the object, to determine the base name, since
+ # that's sadly what pgcc will do too.
+ base=`echo "$source" | sed -e 's|^.*/||' -e 's/\.[-_a-zA-Z0-9]*$//'`
+ tmpdepfile="$base.d"
+
+ # For projects that build the same source file twice into different object
+ # files, the pgcc approach of using the *source* file root name can cause
+ # problems in parallel builds. Use a locking strategy to avoid stomping on
+ # the same $tmpdepfile.
+ lockdir="$base.d-lock"
+ trap "echo '$0: caught signal, cleaning up...' >&2; rm -rf $lockdir" 1 2 13 15
+ numtries=100
+ i=$numtries
+ while test $i -gt 0 ; do
+ # mkdir is a portable test-and-set.
+ if mkdir $lockdir 2>/dev/null; then
+ # This process acquired the lock.
+ "$@" -MD
+ stat=$?
+ # Release the lock.
+ rm -rf $lockdir
+ break
+ else
+ ## the lock is being held by a different process,
+ ## wait until the winning process is done or we timeout
+ while test -d $lockdir && test $i -gt 0; do
+ sleep 1
+ i=`expr $i - 1`
+ done
+ fi
+ i=`expr $i - 1`
+ done
+ trap - 1 2 13 15
+ if test $i -le 0; then
+ echo "$0: failed to acquire lock after $numtries attempts" >&2
+ echo "$0: check lockdir '$lockdir'" >&2
+ exit 1
+ fi
+
+ if test $stat -ne 0; then
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
@@ -334,7 +446,7 @@ hp2)
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
- # Add `dependent.h:' lines.
+ # Add 'dependent.h:' lines.
sed -ne '2,${
s/^ *//
s/ \\*$//
@@ -349,9 +461,9 @@ hp2)
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
+ # dependencies in 'foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
@@ -397,14 +509,59 @@ tru64)
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
+msvc7)
+ if test "$libtool" = yes; then
+ showIncludes=-Wc,-showIncludes
+ else
+ showIncludes=-showIncludes
+ fi
+ "$@" $showIncludes > "$tmpdepfile"
+ stat=$?
+ grep -v '^Note: including file: ' "$tmpdepfile"
+ if test "$stat" = 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ # The first sed program below extracts the file names and escapes
+ # backslashes for cygpath. The second sed program outputs the file
+ # name when reading, but also accumulates all include files in the
+ # hold buffer in order to output them again at the end. This only
+ # works with sed implementations that can handle large buffers.
+ sed < "$tmpdepfile" -n '
+/^Note: including file: *\(.*\)/ {
+ s//\1/
+ s/\\/\\\\/g
+ p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+ s/.*/'"$tab"'/
+ G
+ p
+}' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvc7msys)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
@@ -422,7 +579,7 @@ dashmstdout)
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
@@ -442,15 +599,14 @@ dashmstdout)
done
test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
+ # Require at least two characters before searching for ':'
# in the target name. This is to cope with DOS-style filenames:
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
+ tr ' ' "$nl" < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -503,9 +659,10 @@ makedepend)
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
+ # makedepend may prepend the VPATH from the source file name to the object.
+ # No need to regex-escape $object, excess matching of '.' is harmless.
+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -525,7 +682,7 @@ cpp)
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
@@ -594,8 +751,8 @@ msvisualcpp)
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+ echo "$tab" >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
diff --git a/src/libs/gnulib/build-aux/install-sh b/src/libs/gnulib/build-aux/install-sh
index 6781b98..377bb86 100755
--- a/src/libs/gnulib/build-aux/install-sh
+++ b/src/libs/gnulib/build-aux/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-11-20.07; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,7 +35,7 @@ scriptversion=2009-04-28.21; # UTC
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
@@ -156,6 +156,10 @@ while test $# -ne 0; do
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
shift;;
-T) no_target_directory=true;;
@@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
fi
shift # arg
dst_arg=$arg
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
done
fi
@@ -194,13 +202,17 @@ if test $# -eq 0; then
echo "$0: no input file specified." >&2
exit 1
fi
- # It's OK to call `install-sh -d' without argument.
+ # It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
- trap '(exit $?); exit' 1 2 13 15
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
@@ -228,9 +240,9 @@ fi
for src
do
- # Protect names starting with `-'.
+ # Protect names problematic for 'test' and other utilities.
case $src in
- -*) src=./$src;;
+ -* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
@@ -252,12 +264,7 @@ do
echo "$0: no destination specified." >&2
exit 1
fi
-
dst=$dst_arg
- # Protect names starting with `-'.
- case $dst in
- -*) dst=./$dst;;
- esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
@@ -347,7 +354,7 @@ do
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writeable bit of parent directory when it shouldn't.
+ # other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
@@ -385,7 +392,7 @@ do
case $dstdir in
/*) prefix='/';;
- -*) prefix='./';;
+ [-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
@@ -403,7 +410,7 @@ do
for d
do
- test -z "$d" && continue
+ test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
diff --git a/src/libs/gnulib/build-aux/missing b/src/libs/gnulib/build-aux/missing
index 28055d2..9a55648 100755
--- a/src/libs/gnulib/build-aux/missing
+++ b/src/libs/gnulib/build-aux/missing
@@ -1,10 +1,9 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-01-06.18; # UTC
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
@@ -26,7 +25,7 @@ scriptversion=2009-04-28.21; # UTC
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
fi
@@ -34,7 +33,7 @@ run=:
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-# In the cases where this matters, `missing' is being run in the
+# In the cases where this matters, 'missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
@@ -65,7 +64,7 @@ case $1 in
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
@@ -74,21 +73,20 @@ Options:
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`config.h.in'
+ aclocal touch file 'aclocal.m4'
+ autoconf touch file 'configure'
+ autoheader touch file 'config.h.in'
autom4te touch the output file, or create a stub one
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
+ automake touch all 'Makefile.in' files
+ bison create 'y.tab.[ch]', if possible, from existing .[ch]
+ flex create 'lex.yy.c', if possible, from existing .c
help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
+ lex create 'lex.yy.c', if possible, from existing .c
makeinfo touch the output file
- tar try tar, gnutar, gtar, then tar without non-portable flags
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+ yacc create 'y.tab.[ch]', if possible, from existing .[ch]
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
Send bug reports to <bug-automake@gnu.org>."
exit $?
@@ -100,8 +98,8 @@ Send bug reports to <bug-automake@gnu.org>."
;;
-*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
+ echo 1>&2 "$0: Unknown '$1' option"
+ echo 1>&2 "Try '$0 --help' for more information"
exit 1
;;
@@ -122,22 +120,13 @@ case $1 in
# Not GNU programs, they don't have --version.
;;
- tar*)
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- exit 1
- fi
- ;;
-
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
- # running `$TOOL --version' or `$TOOL --help' to check whether
+ # running '$TOOL --version' or '$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
@@ -149,27 +138,27 @@ esac
case $program in
aclocal*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
+WARNING: '$1' is $msg. You should only need it if
+ you modified 'acinclude.m4' or '${configure_ac}'. You might want
+ to install the Automake and Perl packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+WARNING: '$1' is $msg. You should only need it if
+ you modified '${configure_ac}'. You might want to install the
+ Autoconf and GNU m4 packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
+WARNING: '$1' is $msg. You should only need it if
+ you modified 'acconfig.h' or '${configure_ac}'. You might want
+ to install the Autoconf and GNU m4 packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
@@ -186,9 +175,9 @@ WARNING: \`$1' is $msg. You should only need it if
automake*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
+WARNING: '$1' is $msg. You should only need it if
+ you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'.
+ You might want to install the Automake and Perl packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
@@ -197,10 +186,10 @@ WARNING: \`$1' is $msg. You should only need it if
autom4te*)
echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
+WARNING: '$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
- You can get \`$1' as part of \`Autoconf' from any GNU
+ You can get '$1' as part of Autoconf from any GNU
archive site."
file=`echo "$*" | sed -n "$sed_output"`
@@ -220,13 +209,13 @@ WARNING: \`$1' is needed, but is $msg.
bison*|yacc*)
echo 1>&2 "\
-WARNING: \`$1' $msg. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
+WARNING: '$1' $msg. You should only need it if
+ you modified a '.y' file. You may need the Bison package
in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
+ Bison from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
- eval LASTARG="\${$#}"
+ eval LASTARG=\${$#}
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
@@ -250,13 +239,13 @@ WARNING: \`$1' $msg. You should only need it if
lex*|flex*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
+WARNING: '$1' is $msg. You should only need it if
+ you modified a '.l' file. You may need the Flex package
in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
+ Flex from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
- eval LASTARG="\${$#}"
+ eval LASTARG=\${$#}
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
@@ -273,10 +262,10 @@ WARNING: \`$1' is $msg. You should only need it if
help2man*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
+WARNING: '$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
+ Help2man package in order for those modifications to take
+ effect. You can get Help2man from any GNU archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
@@ -291,12 +280,12 @@ WARNING: \`$1' is $msg. You should only need it if
makeinfo*)
echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
+WARNING: '$1' is $msg. You should only need it if
+ you modified a '.texi' or '.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
+ call might also be the consequence of using a buggy 'make' (AIX,
+ DU, IRIX). You might want to install the Texinfo package or
+ the GNU make package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
@@ -318,49 +307,14 @@ WARNING: \`$1' is $msg. You should only need it if
touch $file
;;
- tar*)
- shift
-
- # We have already tried tar in the generic part.
- # Look for gnutar/gtar before invocation to avoid ugly error
- # messages.
- if (gnutar --version > /dev/null 2>&1); then
- gnutar "$@" && exit 0
- fi
- if (gtar --version > /dev/null 2>&1); then
- gtar "$@" && exit 0
- fi
- firstarg="$1"
- if shift; then
- case $firstarg in
- *o*)
- firstarg=`echo "$firstarg" | sed s/o//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- case $firstarg in
- *h*)
- firstarg=`echo "$firstarg" | sed s/h//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- fi
-
- echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
- You may want to install GNU tar or Free paxutils, or check the
- command line arguments."
- exit 1
- ;;
-
*)
echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
+WARNING: '$1' is needed, and is $msg.
You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
+ proper tools for further handling them. Check the 'README' file,
it often tells you about the needed prerequisites for installing
this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
+ some other package would contain this missing '$1' program."
exit 1
;;
esac
diff --git a/src/libs/gnulib/build-aux/arg-nonnull.h b/src/libs/gnulib/build-aux/snippet/arg-nonnull.h
index 7e3e2db..8ea2a47 100644
--- a/src/libs/gnulib/build-aux/arg-nonnull.h
+++ b/src/libs/gnulib/build-aux/snippet/arg-nonnull.h
@@ -1,5 +1,5 @@
/* A C macro for declaring that specific arguments must not be NULL.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published
@@ -9,7 +9,7 @@
This program 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
- Lesser General Public License for more details.
+ General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
diff --git a/src/libs/gnulib/build-aux/c++defs.h b/src/libs/gnulib/build-aux/snippet/c++defs.h
index 0c2fad7..b35b933 100644
--- a/src/libs/gnulib/build-aux/c++defs.h
+++ b/src/libs/gnulib/build-aux/snippet/c++defs.h
@@ -1,5 +1,5 @@
/* C++ compatible function declaration macros.
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published
@@ -9,7 +9,7 @@
This program 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
- Lesser General Public License for more details.
+ General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
diff --git a/src/libs/gnulib/build-aux/warn-on-use.h b/src/libs/gnulib/build-aux/snippet/warn-on-use.h
index 171e599..1736a1b 100644
--- a/src/libs/gnulib/build-aux/warn-on-use.h
+++ b/src/libs/gnulib/build-aux/snippet/warn-on-use.h
@@ -1,5 +1,5 @@
/* A C macro for emitting warnings if a function is used.
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published
@@ -9,7 +9,7 @@
This program 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
- Lesser General Public License for more details.
+ General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
@@ -55,7 +55,7 @@
rather than issue the nice warning, but the end result of informing
the developer about their portability problem is still achieved):
#if HAVE_RAW_DECL_ENVIRON
- static inline char ***rpl_environ (void) { return &environ; }
+ static char ***rpl_environ (void) { return &environ; }
_GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
# undef environ
# define environ (*rpl_environ ())
diff --git a/src/libs/gnulib/config.h.in b/src/libs/gnulib/config.h.in
index eef3cb4..8d3f3b3 100644
--- a/src/libs/gnulib/config.h.in
+++ b/src/libs/gnulib/config.h.in
@@ -1,9 +1,5 @@
/* config.h.in. Generated from configure.ac by autoheader. */
-/* Define if the compiler is building for multiple architectures of Apple
- platforms at once. */
-#undef AA_APPLE_UNIVERSAL_BUILD
-
/* Define to the number of bits in type 'ptrdiff_t'. */
#undef BITSIZEOF_PTRDIFF_T
@@ -26,9 +22,9 @@
don't. */
#undef HAVE_DECL_GETC_UNLOCKED
-/* Define to 1 if you have the declaration of `iswblank', and to 0 if you
+/* Define to 1 if you have the declaration of `towlower', and to 0 if you
don't. */
-#undef HAVE_DECL_ISWBLANK
+#undef HAVE_DECL_TOWLOWER
/* Define to 1 if you have the declaration of `wcwidth', and to 0 if you
don't. */
@@ -40,16 +36,13 @@
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
-/* Define to 1 if you have the `iswblank' function. */
-#undef HAVE_ISWBLANK
-
-/* Define to 1 if you have the `iswcntrl' function. */
+/* Define to 1 if you have the 'iswcntrl' function. */
#undef HAVE_ISWCNTRL
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
#undef HAVE_LANGINFO_CODESET
-/* Define to 1 if the system has the type `long long int'. */
+/* Define to 1 if the system has the type 'long long int'. */
#undef HAVE_LONG_LONG_INT
/* Define to 1 if you have the <memory.h> header file. */
@@ -58,6 +51,15 @@
/* Define to 1 if btowc is declared even after undefining macros. */
#undef HAVE_RAW_DECL_BTOWC
+/* Define to 1 if imaxabs is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_IMAXABS
+
+/* Define to 1 if imaxdiv is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_IMAXDIV
+
+/* Define to 1 if iswctype is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_ISWCTYPE
+
/* Define to 1 if mbrlen is declared even after undefining macros. */
#undef HAVE_RAW_DECL_MBRLEN
@@ -73,21 +75,120 @@
/* Define to 1 if mbsrtowcs is declared even after undefining macros. */
#undef HAVE_RAW_DECL_MBSRTOWCS
+/* Define to 1 if strtoimax is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRTOIMAX
+
+/* Define to 1 if strtoumax is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_STRTOUMAX
+
+/* Define to 1 if towctrans is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_TOWCTRANS
+
+/* Define to 1 if wcpcpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCPCPY
+
+/* Define to 1 if wcpncpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCPNCPY
+
/* Define to 1 if wcrtomb is declared even after undefining macros. */
#undef HAVE_RAW_DECL_WCRTOMB
+/* Define to 1 if wcscasecmp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCASECMP
+
+/* Define to 1 if wcscat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCAT
+
+/* Define to 1 if wcschr is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCHR
+
+/* Define to 1 if wcscmp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCMP
+
+/* Define to 1 if wcscoll is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCOLL
+
+/* Define to 1 if wcscpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCPY
+
+/* Define to 1 if wcscspn is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSCSPN
+
+/* Define to 1 if wcsdup is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSDUP
+
+/* Define to 1 if wcslen is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSLEN
+
+/* Define to 1 if wcsncasecmp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSNCASECMP
+
+/* Define to 1 if wcsncat is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSNCAT
+
+/* Define to 1 if wcsncmp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSNCMP
+
+/* Define to 1 if wcsncpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSNCPY
+
+/* Define to 1 if wcsnlen is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSNLEN
+
/* Define to 1 if wcsnrtombs is declared even after undefining macros. */
#undef HAVE_RAW_DECL_WCSNRTOMBS
+/* Define to 1 if wcspbrk is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSPBRK
+
+/* Define to 1 if wcsrchr is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSRCHR
+
/* Define to 1 if wcsrtombs is declared even after undefining macros. */
#undef HAVE_RAW_DECL_WCSRTOMBS
+/* Define to 1 if wcsspn is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSSPN
+
+/* Define to 1 if wcsstr is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSSTR
+
+/* Define to 1 if wcstok is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSTOK
+
+/* Define to 1 if wcswidth is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSWIDTH
+
+/* Define to 1 if wcsxfrm is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCSXFRM
+
/* Define to 1 if wctob is declared even after undefining macros. */
#undef HAVE_RAW_DECL_WCTOB
+/* Define to 1 if wctrans is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCTRANS
+
+/* Define to 1 if wctype is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WCTYPE
+
/* Define to 1 if wcwidth is declared even after undefining macros. */
#undef HAVE_RAW_DECL_WCWIDTH
+/* Define to 1 if wmemchr is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WMEMCHR
+
+/* Define to 1 if wmemcmp is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WMEMCMP
+
+/* Define to 1 if wmemcpy is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WMEMCPY
+
+/* Define to 1 if wmemmove is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WMEMMOVE
+
+/* Define to 1 if wmemset is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_WMEMSET
+
/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
#undef HAVE_SIGNED_SIG_ATOMIC_T
@@ -97,9 +198,6 @@
/* Define to 1 if 'wint_t' is a signed integer type. */
#undef HAVE_SIGNED_WINT_T
-/* Define to 1 if you have the <stddef.h> header file. */
-#undef HAVE_STDDEF_H
-
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
@@ -112,6 +210,9 @@
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
+/* Define to 1 if you have the 'symlink' function. */
+#undef HAVE_SYMLINK
+
/* Define to 1 if you have the <sys/bitypes.h> header file. */
#undef HAVE_SYS_BITYPES_H
@@ -124,10 +225,13 @@
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
+/* Define to 1 if you have the `towlower' function. */
+#undef HAVE_TOWLOWER
+
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
-/* Define to 1 if the system has the type `unsigned long long int'. */
+/* Define to 1 if the system has the type 'unsigned long long int'. */
#undef HAVE_UNSIGNED_LONG_LONG_INT
/* Define to 1 if you have the <wchar.h> header file. */
@@ -139,7 +243,7 @@
/* Define to 1 if you have the <wctype.h> header file. */
#undef HAVE_WCTYPE_H
-/* Define to 1 if you have the `wcwidth' function. */
+/* Define to 1 if you have the 'wcwidth' function. */
#undef HAVE_WCWIDTH
/* Define if you have the 'wint_t' type. */
@@ -151,6 +255,9 @@
/* Define to 1 if O_NOFOLLOW works. */
#undef HAVE_WORKING_O_NOFOLLOW
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
#undef NO_MINUS_C_MINUS_O
@@ -175,6 +282,9 @@
/* Define to the version of this package. */
#undef PACKAGE_VERSION
+/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
+#undef PRI_MACROS_BROKEN
+
/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
'ptrdiff_t'. */
#undef PTRDIFF_T_SUFFIX
@@ -190,38 +300,23 @@
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
-/* Version number of package */
-#undef VERSION
-
-/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
- 'wchar_t'. */
-#undef WCHAR_T_SUFFIX
-
-/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
- 'wint_t'. */
-#undef WINT_T_SUFFIX
-
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
- this defined. */
-#undef _POSIX_1_SOURCE
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-#undef _POSIX_SOURCE
-
-/* Define to 500 only on HP-UX. */
-#undef _XOPEN_SOURCE
-
/* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
+/* Enable general extensions on OS X. */
+#ifndef _DARWIN_C_SOURCE
+# undef _DARWIN_C_SOURCE
+#endif
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
+/* HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500,
+ regardless of whether compiling with -Ae or -D_HPUX_SOURCE=1. */
+#ifdef __hpux
+# define _XOPEN_SOURCE 500
+#endif
/* Enable threading extensions on Solaris. */
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
@@ -236,16 +331,100 @@
#endif
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-#undef inline
+/* Version number of package */
+#undef VERSION
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'wchar_t'. */
+#undef WCHAR_T_SUFFIX
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'wint_t'. */
+#undef WINT_T_SUFFIX
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 1 to make NetBSD features available. MINIX 3 needs this. */
+#undef _NETBSD_SOURCE
+
+/* The _Noreturn keyword of C11. */
+#if ! (defined _Noreturn \
+ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
+# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
+ || 0x5110 <= __SUNPRO_C)
+# define _Noreturn __attribute__ ((__noreturn__))
+# elif defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn
+# endif
+#endif
+
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for 'stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'.
+ _GL_EXTERN_INLINE is a portable alternative to 'extern inline'.
+ _GL_INLINE_HEADER_BEGIN contains useful stuff to put
+ in an include file, before uses of _GL_INLINE.
+ It suppresses GCC's bogus "no previous prototype for 'FOO'" diagnostic,
+ when FOO is an inline function in the header; see
+ <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>.
+ _GL_INLINE_HEADER_END contains useful stuff to put
+ in the same include file, after uses of _GL_INLINE.
+
+ Suppress the use of extern inline on Apple's platforms,
+ as Libc-825.25 (2012-09-19) is incompatible with it; see
+ <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
+ Perhaps Apple will fix this some day. */
+#if ((__GNUC__ \
+ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
+ : 199901L <= __STDC_VERSION__) \
+ && !defined __APPLE__)
+# define _GL_INLINE inline
+# define _GL_EXTERN_INLINE extern inline
+#elif 2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __APPLE__
+# if __GNUC_GNU_INLINE__
+ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
+# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
+# else
+# define _GL_INLINE extern inline
+# endif
+# define _GL_EXTERN_INLINE extern
+#else
+# define _GL_INLINE static _GL_UNUSED
+# define _GL_EXTERN_INLINE static _GL_UNUSED
+#endif
+
+#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
+# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
+# define _GL_INLINE_HEADER_CONST_PRAGMA
+# else
+# define _GL_INLINE_HEADER_CONST_PRAGMA \
+ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
+# endif
+# define _GL_INLINE_HEADER_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
+ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
+ _GL_INLINE_HEADER_CONST_PRAGMA
+# define _GL_INLINE_HEADER_END \
+ _Pragma ("GCC diagnostic pop")
+#else
+# define _GL_INLINE_HEADER_BEGIN
+# define _GL_INLINE_HEADER_END
#endif
/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
- __APPLE__ && __MACH__ test for MacOS X.
+ __APPLE__ && __MACH__ test for Mac OS X.
__APPLE_CC__ tests for the Apple compiler and its version.
__STDC_VERSION__ tests for the C99 mode. */
#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
@@ -264,3 +443,17 @@
is a misnomer outside of parameter lists. */
#define _UNUSED_PARAMETER_ _GL_UNUSED
+/* The __pure__ attribute was added in gcc 2.96. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
+#endif
+
+/* The __const__ attribute was added in gcc 2.95. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
+#else
+# define _GL_ATTRIBUTE_CONST /* empty */
+#endif
+
diff --git a/src/libs/gnulib/configure b/src/libs/gnulib/configure
index afdcb57..9d9698b 100755
--- a/src/libs/gnulib/configure
+++ b/src/libs/gnulib/configure
@@ -1,11 +1,9 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.67 for dummy 0.
+# Generated by GNU Autoconf 2.69 for dummy 0.
#
#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -89,6 +87,7 @@ fi
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -133,6 +132,31 @@ export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
@@ -166,7 +190,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -211,14 +236,25 @@ IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
if test x$as_have_required = xno; then :
@@ -320,6 +356,14 @@ $as_echo X"$as_dir" |
} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -441,6 +485,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
@@ -475,16 +523,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -496,28 +544,8 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -600,18 +628,26 @@ LTLIBOBJS
LIBOBJS
LIBGNU_LTLIBDEPS
LIBGNU_LIBDEPS
+REPLACE_TOWLOWER
REPLACE_ISWCNTRL
HAVE_WCTYPE_H
NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H
NEXT_WCTYPE_H
+HAVE_ISWCNTRL
REPLACE_ISWBLANK
+HAVE_WCTRANS_T
+HAVE_WCTYPE_T
HAVE_ISWBLANK
-HAVE_ISWCNTRL
+GNULIB_TOWCTRANS
+GNULIB_WCTRANS
+GNULIB_ISWCTYPE
+GNULIB_WCTYPE
+GNULIB_ISWBLANK
HAVE_WINT_T
HAVE_FEATURES_H
-HAVE_WCHAR_H
NEXT_AS_FIRST_DIRECTIVE_WCHAR_H
NEXT_WCHAR_H
+REPLACE_WCSWIDTH
REPLACE_WCWIDTH
REPLACE_WCSNRTOMBS
REPLACE_WCSRTOMBS
@@ -626,6 +662,34 @@ REPLACE_BTOWC
REPLACE_MBSTATE_T
HAVE_DECL_WCWIDTH
HAVE_DECL_WCTOB
+HAVE_WCSWIDTH
+HAVE_WCSTOK
+HAVE_WCSSTR
+HAVE_WCSPBRK
+HAVE_WCSSPN
+HAVE_WCSCSPN
+HAVE_WCSRCHR
+HAVE_WCSCHR
+HAVE_WCSDUP
+HAVE_WCSXFRM
+HAVE_WCSCOLL
+HAVE_WCSNCASECMP
+HAVE_WCSCASECMP
+HAVE_WCSNCMP
+HAVE_WCSCMP
+HAVE_WCSNCAT
+HAVE_WCSCAT
+HAVE_WCPNCPY
+HAVE_WCSNCPY
+HAVE_WCPCPY
+HAVE_WCSCPY
+HAVE_WCSNLEN
+HAVE_WCSLEN
+HAVE_WMEMSET
+HAVE_WMEMMOVE
+HAVE_WMEMCPY
+HAVE_WMEMCMP
+HAVE_WMEMCHR
HAVE_WCSNRTOMBS
HAVE_WCSRTOMBS
HAVE_WCRTOMB
@@ -635,6 +699,34 @@ HAVE_MBRLEN
HAVE_MBRTOWC
HAVE_MBSINIT
HAVE_BTOWC
+GNULIB_WCSWIDTH
+GNULIB_WCSTOK
+GNULIB_WCSSTR
+GNULIB_WCSPBRK
+GNULIB_WCSSPN
+GNULIB_WCSCSPN
+GNULIB_WCSRCHR
+GNULIB_WCSCHR
+GNULIB_WCSDUP
+GNULIB_WCSXFRM
+GNULIB_WCSCOLL
+GNULIB_WCSNCASECMP
+GNULIB_WCSCASECMP
+GNULIB_WCSNCMP
+GNULIB_WCSCMP
+GNULIB_WCSNCAT
+GNULIB_WCSCAT
+GNULIB_WCPNCPY
+GNULIB_WCSNCPY
+GNULIB_WCPCPY
+GNULIB_WCSCPY
+GNULIB_WCSNLEN
+GNULIB_WCSLEN
+GNULIB_WMEMSET
+GNULIB_WMEMMOVE
+GNULIB_WMEMCPY
+GNULIB_WMEMCMP
+GNULIB_WMEMCHR
GNULIB_WCWIDTH
GNULIB_WCSNRTOMBS
GNULIB_WCSRTOMBS
@@ -650,6 +742,38 @@ LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE
LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE
LIBUNISTRING_UNIWIDTH_H
LIBUNISTRING_UNITYPES_H
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H
+NEXT_STDDEF_H
+GL_GENERATE_STDDEF_H_FALSE
+GL_GENERATE_STDDEF_H_TRUE
+STDDEF_H
+HAVE_WCHAR_T
+REPLACE_NULL
+HAVE__BOOL
+GL_GENERATE_STDBOOL_H_FALSE
+GL_GENERATE_STDBOOL_H_TRUE
+STDBOOL_H
+LOCALCHARSET_TESTS_ENVIRONMENT
+GLIBC21
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H
+NEXT_INTTYPES_H
+UINT64_MAX_EQ_ULONG_MAX
+UINT32_MAX_LT_UINTMAX_MAX
+PRIPTR_PREFIX
+PRI_MACROS_BROKEN
+INT64_MAX_EQ_LONG_MAX
+INT32_MAX_LT_INTMAX_MAX
+REPLACE_STRTOIMAX
+HAVE_DECL_STRTOUMAX
+HAVE_DECL_STRTOIMAX
+HAVE_DECL_IMAXDIV
+HAVE_DECL_IMAXABS
+GNULIB_STRTOUMAX
+GNULIB_STRTOIMAX
+GNULIB_IMAXDIV
+GNULIB_IMAXABS
+GL_GENERATE_STDINT_H_FALSE
+GL_GENERATE_STDINT_H_TRUE
STDINT_H
WINT_T_SUFFIX
WCHAR_T_SUFFIX
@@ -664,33 +788,31 @@ BITSIZEOF_WCHAR_T
BITSIZEOF_SIG_ATOMIC_T
BITSIZEOF_SIZE_T
BITSIZEOF_PTRDIFF_T
+APPLE_UNIVERSAL_BUILD
HAVE_SYS_BITYPES_H
HAVE_SYS_INTTYPES_H
HAVE_STDINT_H
NEXT_AS_FIRST_DIRECTIVE_STDINT_H
NEXT_STDINT_H
-HAVE_SYS_TYPES_H
-HAVE_INTTYPES_H
-HAVE_UNSIGNED_LONG_LONG_INT
-HAVE_LONG_LONG_INT
-NEXT_AS_FIRST_DIRECTIVE_STDDEF_H
-NEXT_STDDEF_H
PRAGMA_COLUMNS
PRAGMA_SYSTEM_HEADER
INCLUDE_NEXT_AS_FIRST_DIRECTIVE
INCLUDE_NEXT
-STDDEF_H
-HAVE_WCHAR_T
-REPLACE_NULL
-APPLE_UNIVERSAL_BUILD
-LOCALCHARSET_TESTS_ENVIRONMENT
-GLIBC21
+HAVE_SYS_TYPES_H
+HAVE_INTTYPES_H
+HAVE_WCHAR_H
+HAVE_UNSIGNED_LONG_LONG_INT
+HAVE_LONG_LONG_INT
+pkglibexecdir
+lispdir
GL_COND_LIBTOOL_FALSE
GL_COND_LIBTOOL_TRUE
+RANLIB
+ARFLAGS
+AR
EGREP
GREP
CPP
-RANLIB
host_os
host_vendor
host_cpu
@@ -702,6 +824,7 @@ build
am__fastdepCC_FALSE
am__fastdepCC_TRUE
CCDEPMODE
+am__nodep
AMDEPBACKSLASH
AMDEP_FALSE
AMDEP_TRUE
@@ -1194,7 +1317,7 @@ Try \`$0 --help' for more information"
$as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
$as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
esac
@@ -1245,8 +1368,6 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1410,8 +1531,10 @@ Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-dependency-tracking
+ do not reject slow dependency extractors
+ --disable-dependency-tracking
+ speeds up one-time build
Some influential environment variables:
CC C compiler command
@@ -1490,9 +1613,9 @@ test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
dummy configure 0
-generated by GNU Autoconf 2.67
+generated by GNU Autoconf 2.69
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1536,7 +1659,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_compile
@@ -1573,7 +1696,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_cpp
@@ -1586,10 +1709,10 @@ fi
ac_fn_c_check_header_mongrel ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval "test \"\${$3+set}\"" = set; then :
+ if eval \${$3+:} false; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
fi
eval ac_res=\$$3
@@ -1652,7 +1775,7 @@ $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
eval "$3=\$ac_header_compiler"
@@ -1661,7 +1784,7 @@ eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_mongrel
@@ -1702,7 +1825,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=$ac_status
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_run
@@ -1716,7 +1839,7 @@ ac_fn_c_check_header_compile ()
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1734,7 +1857,7 @@ fi
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_compile
@@ -1765,7 +1888,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -1779,57 +1902,11 @@ fi
# interfere with the next link command; also delete a directory that is
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_link
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
-# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- as_decl_name=`echo $2|sed 's/ *(.*//'`
- as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-#ifndef $as_decl_name
-#ifdef __cplusplus
- (void) $as_decl_use;
-#else
- (void) $as_decl_name;
-#endif
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$3=yes"
-else
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_decl
-
# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
# --------------------------------------------
# Tries to find the compile-time value of EXPR in a program that includes
@@ -1847,7 +1924,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -1863,7 +1941,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -1889,7 +1968,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -1905,7 +1985,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -1939,7 +2020,8 @@ int
main ()
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
;
return 0;
@@ -2003,7 +2085,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
rm -f conftest.val
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_compute_int
@@ -2016,7 +2098,7 @@ ac_fn_c_check_func ()
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2071,15 +2153,115 @@ fi
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ as_decl_name=`echo $2|sed 's/ *(.*//'`
+ as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+ (void) $as_decl_use;
+#else
+ (void) $as_decl_name;
+#endif
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_decl
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by dummy $as_me 0, which was
-generated by GNU Autoconf 2.67. Invocation command line was
+generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2191,7 +2373,7 @@ trap 'exit_status=$?
$as_echo "## ---------------- ##
## Cache variables. ##
-## ---------------- ##"[]
+## ---------------- ##"
echo
# The following way of writing the cache mishandles newlines in values,
(
@@ -2227,7 +2409,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
$as_echo "## ----------------- ##
## Output variables. ##
-## ----------------- ##"[]
+## ----------------- ##"
echo
for ac_var in $ac_subst_vars
do
@@ -2242,7 +2424,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
if test -n "$ac_subst_files"; then
$as_echo "## ------------------- ##
## File substitutions. ##
-## ------------------- ##"[]
+## ------------------- ##"
echo
for ac_var in $ac_subst_files
do
@@ -2258,7 +2440,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
if test -s confdefs.h; then
$as_echo "## ----------- ##
## confdefs.h. ##
-## ----------- ##"[]
+## ----------- ##"
echo
cat confdefs.h
echo
@@ -2358,12 +2540,13 @@ $as_echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
-gl_header_list="$gl_header_list stddef.h"
-gl_header_list="$gl_header_list stdint.h"
gl_header_list="$gl_header_list wchar.h"
+gl_header_list="$gl_header_list stdint.h"
+gl_header_list="$gl_header_list inttypes.h"
+gl_header_list="$gl_header_list unistd.h"
+gl_func_list="$gl_func_list symlink"
gl_header_list="$gl_header_list features.h"
gl_func_list="$gl_func_list iswcntrl"
-gl_func_list="$gl_func_list iswblank"
gl_header_list="$gl_header_list wctype.h"
gl_func_list="$gl_func_list wcwidth"
# Check that the precious variables saved in the cache have kept the same
@@ -2463,7 +2646,7 @@ ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-am__api_version='1.11'
+am__api_version='1.12'
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
@@ -2482,7 +2665,7 @@ am__api_version='1.11'
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
$as_echo_n "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then :
+if ${ac_cv_path_install+:} false; then :
$as_echo_n "(cached) " >&6
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -2502,7 +2685,7 @@ case $as_dir/ in #((
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
@@ -2560,9 +2743,6 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
$as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
@@ -2573,32 +2753,40 @@ case `pwd` in
esac
case $srcdir in
*[\\\"\#\$\&\'\`$am_lf\ \ ]*)
- as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
esac
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$*" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$*" != "X $srcdir/configure conftest.file" \
- && test "$*" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
-alias in your environment" "$LINENO" 5
- fi
-
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+ alias in your environment" "$LINENO" 5
+ fi
+ if test "$2" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
test "$2" = conftest.file
)
then
@@ -2610,6 +2798,16 @@ Check your system clock" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
test "$program_prefix" != NONE &&
program_transform_name="s&^&$program_prefix&;$program_transform_name"
# Use a double $ so make ignores it.
@@ -2636,8 +2834,8 @@ if eval "$MISSING --run true"; then
am_missing_run="$MISSING --run "
else
am_missing_run=
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
if test x"${install_sh}" != xset; then
@@ -2649,17 +2847,17 @@ if test x"${install_sh}" != xset; then
esac
fi
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
+# will honor the 'STRIP' environment variable to overrule this program.
if test "$cross_compiling" != no; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then :
+if ${ac_cv_prog_STRIP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$STRIP"; then
@@ -2671,7 +2869,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2699,7 +2897,7 @@ if test -z "$ac_cv_prog_STRIP"; then
set dummy strip; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_STRIP"; then
@@ -2711,7 +2909,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2752,7 +2950,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
- if test "${ac_cv_path_mkdir+set}" = set; then :
+ if ${ac_cv_path_mkdir+:} false; then :
$as_echo_n "(cached) " >&6
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -2762,7 +2960,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
- { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
'mkdir (GNU coreutils) '* | \
'mkdir (coreutils) '* | \
@@ -2791,20 +2989,13 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
$as_echo "$MKDIR_P" >&6; }
-
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
- [\\/$]* | ?:[\\/]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then :
+if ${ac_cv_prog_AWK+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$AWK"; then
@@ -2816,7 +3007,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2844,7 +3035,7 @@ done
$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
$as_echo_n "(cached) " >&6
else
cat >conftest.make <<\_ACEOF
@@ -2930,13 +3121,19 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
@@ -2956,7 +3153,7 @@ if test -n "$ac_tool_prefix"; then
set dummy ${ac_tool_prefix}gcc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
@@ -2968,7 +3165,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2996,7 +3193,7 @@ if test -z "$ac_cv_prog_CC"; then
set dummy gcc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
@@ -3008,7 +3205,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3049,7 +3246,7 @@ if test -z "$CC"; then
set dummy ${ac_tool_prefix}cc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
@@ -3061,7 +3258,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3089,7 +3286,7 @@ if test -z "$CC"; then
set dummy cc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
@@ -3102,7 +3299,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
@@ -3148,7 +3345,7 @@ if test -z "$CC"; then
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
@@ -3160,7 +3357,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3192,7 +3389,7 @@ do
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
@@ -3204,7 +3401,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3475,7 +3672,7 @@ rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
ac_clean_files=$ac_clean_files_save
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then :
+if ${ac_cv_objext+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3526,7 +3723,7 @@ OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+if ${ac_cv_c_compiler_gnu+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3563,7 +3760,7 @@ ac_test_CFLAGS=${CFLAGS+set}
ac_save_CFLAGS=$CFLAGS
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
+if ${ac_cv_prog_cc_g+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_save_c_werror_flag=$ac_c_werror_flag
@@ -3641,7 +3838,7 @@ else
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then :
+if ${ac_cv_prog_cc_c89+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_prog_cc_c89=no
@@ -3650,8 +3847,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -3754,7 +3950,7 @@ am__quote=
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
@@ -3787,6 +3983,7 @@ fi
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
+ am__nodep='_no'
fi
if test "x$enable_dependency_tracking" != xno; then
AMDEP_TRUE=
@@ -3802,15 +3999,16 @@ depcc="$CC" am_compiler_list=
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
@@ -3844,16 +4042,16 @@ else
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
@@ -3862,16 +4060,16 @@ else
test "$am__universal" = false || continue
;;
nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
if test "x$enable_dependency_tracking" = xyes; then
continue
else
break
fi
;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
@@ -3930,7 +4128,7 @@ fi
$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
$as_echo_n "(cached) " >&6
else
cat >conftest.make <<\_ACEOF
@@ -3965,7 +4163,7 @@ $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
$as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then :
+if ${ac_cv_build+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_build_alias=$build_alias
@@ -3999,7 +4197,7 @@ case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
$as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then :
+if ${ac_cv_host+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "x$host_alias" = x; then
@@ -4032,226 +4230,6 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
- ac_ct_RANLIB=$RANLIB
- # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_RANLIB"; then
- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_RANLIB" = x; then
- RANLIB=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- RANLIB=$ac_ct_RANLIB
- fi
-else
- RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-
-if test "x$CC" != xcc; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
-$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
-$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
-fi
-set dummy $CC; ac_cc=`$as_echo "$2" |
- sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if eval "test \"\${ac_cv_prog_cc_${ac_cc}_c_o+set}\"" = set; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-# Make sure it works both with $CC and with simple cc.
-# We do the test twice because some compilers refuse to overwrite an
-# existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-rm -f conftest2.*
-if { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } &&
- test -f conftest2.$ac_objext && { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; };
-then
- eval ac_cv_prog_cc_${ac_cc}_c_o=yes
- if test "x$CC" != xcc; then
- # Test first that cc exists at all.
- if { ac_try='cc -c conftest.$ac_ext >&5'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
- rm -f conftest2.*
- if { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } &&
- test -f conftest2.$ac_objext && { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; };
- then
- # cc works too.
- :
- else
- # cc exists but doesn't like -o.
- eval ac_cv_prog_cc_${ac_cc}_c_o=no
- fi
- fi
- fi
-else
- eval ac_cv_prog_cc_${ac_cc}_c_o=no
-fi
-rm -f core conftest*
-
-fi
-if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
-
-fi
-
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
- # Losing compiler, so override with the script.
- # FIXME: It is wrong to rewrite CC.
- # But if we don't then we get into trouble of one sort or another.
- # A longer-term fix would be to have automake use am__CC in this case,
- # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
- CC="$am_aux_dir/compile $CC"
-fi
-
-
-
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -4265,7 +4243,7 @@ if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then :
+ if ${ac_cv_prog_CPP+:} false; then :
$as_echo_n "(cached) " >&6
else
# Double quotes because CPP needs to be expanded
@@ -4393,7 +4371,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then :
+if ${ac_cv_path_GREP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -z "$GREP"; then
@@ -4407,7 +4385,7 @@ do
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ as_fn_executable_p "$ac_path_GREP" || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
@@ -4456,7 +4434,7 @@ $as_echo "$ac_cv_path_GREP" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
$as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then :
+if ${ac_cv_path_EGREP+:} false; then :
$as_echo_n "(cached) " >&6
else
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
@@ -4473,7 +4451,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -4521,9 +4499,375 @@ $as_echo "$ac_cv_path_EGREP" >&6; }
EGREP="$ac_cv_path_EGREP"
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5
+$as_echo_n "checking for Minix Amsterdam compiler... " >&6; }
+if ${gl_cv_c_amsterdam_compiler+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef __ACK__
+Amsterdam
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Amsterdam" >/dev/null 2>&1; then :
+ gl_cv_c_amsterdam_compiler=yes
+else
+ gl_cv_c_amsterdam_compiler=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5
+$as_echo "$gl_cv_c_amsterdam_compiler" >&6; }
+ if test -z "$AR"; then
+ if test $gl_cv_c_amsterdam_compiler = yes; then
+ AR='cc -c.a'
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='-o'
+ fi
+ else
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AR" = x; then
+ AR="ar"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='cru'
+ fi
+ fi
+ else
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='cru'
+ fi
+ fi
+
+
+ if test -z "$RANLIB"; then
+ if test $gl_cv_c_amsterdam_compiler = yes; then
+ RANLIB=':'
+ else
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+ fi
+ fi
+
+
+
+if test "x$CC" != xcc; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+then
+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+ if test "x$CC" != xcc; then
+ # Test first that cc exists at all.
+ if { ac_try='cc -c conftest.$ac_ext >&5'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+ rm -f conftest2.*
+ if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+ then
+ # cc works too.
+ :
+ else
+ # cc exists but doesn't like -o.
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+ fi
+ fi
+ fi
+else
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then :
+if ${ac_cv_header_stdc+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4651,10 +4995,8 @@ done
-
-
ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = x""yes; then :
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
MINIX=yes
else
MINIX=
@@ -4671,20 +5013,15 @@ $as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
$as_echo "#define _MINIX 1" >>confdefs.h
- fi
- case "$host_os" in
- hpux*)
+$as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h
-$as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h
-
- ;;
- esac
+ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if test "${ac_cv_safe_to_define___extensions__+set}" = set; then :
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4714,6 +5051,8 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
$as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+ $as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h
+
$as_echo "#define _GNU_SOURCE 1" >>confdefs.h
$as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
@@ -4758,305 +5097,156 @@ gl_ltlibdeps=
+
LIBC_FATAL_STDERR_=1
export LIBC_FATAL_STDERR_
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
-$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
-if test "${am_cv_langinfo_codeset+set}" = set; then :
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
+$as_echo_n "checking for unsigned long long int... " >&6; }
+if ${ac_cv_type_unsigned_long_long_int+:} false; then :
$as_echo_n "(cached) " >&6
else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ ac_cv_type_unsigned_long_long_int=yes
+ if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <langinfo.h>
+
+ /* For now, do not test the preprocessor; as of 2007 there are too many
+ implementations with broken preprocessors. Perhaps this can
+ be revisited in 2012. In the meantime, code should not expect
+ #if to work with literals wider than 32 bits. */
+ /* Test literals. */
+ long long int ll = 9223372036854775807ll;
+ long long int nll = -9223372036854775807LL;
+ unsigned long long int ull = 18446744073709551615ULL;
+ /* Test constant expressions. */
+ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+ ? 1 : -1)];
+ typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+ ? 1 : -1)];
+ int i = 63;
int
main ()
{
-char* cs = nl_langinfo(CODESET); return !cs;
+/* Test availability of runtime routines for shift and division. */
+ long long int llmax = 9223372036854775807ll;
+ unsigned long long int ullmax = 18446744073709551615ull;
+ return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+ | (llmax / ll) | (llmax % ll)
+ | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+ | (ullmax / ull) | (ullmax % ull));
;
return 0;
}
+
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- am_cv_langinfo_codeset=yes
+
else
- am_cv_langinfo_codeset=no
+ ac_cv_type_unsigned_long_long_int=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
-
+ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
-$as_echo "$am_cv_langinfo_codeset" >&6; }
- if test $am_cv_langinfo_codeset = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
+$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
-$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
+$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5
-$as_echo_n "checking for working fcntl.h... " >&6; }
-if test "${gl_cv_header_working_fcntl_h+set}" = set; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if ${ac_cv_type_long_long_int+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test "$cross_compiling" = yes; then :
- gl_cv_header_working_fcntl_h=cross-compiling
+ ac_cv_type_long_long_int=yes
+ if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+ ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+ if test $ac_cv_type_long_long_int = yes; then
+ if test "$cross_compiling" = yes; then :
+ :
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
- #include <fcntl.h>
- #ifndef O_NOATIME
- #define O_NOATIME 0
- #endif
- #ifndef O_NOFOLLOW
- #define O_NOFOLLOW 0
- #endif
- static int const constants[] =
- {
- O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
- O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
- };
-
+#include <limits.h>
+ #ifndef LLONG_MAX
+ # define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ # define LLONG_MAX (HALF - 1 + HALF)
+ #endif
int
main ()
{
-
- int result = !constants;
- {
- static char const sym[] = "conftest.sym";
- if (symlink (".", sym) != 0)
- result |= 2;
- else
- {
- int fd = open (sym, O_RDONLY | O_NOFOLLOW);
- if (fd >= 0)
- {
- close (fd);
- result |= 4;
- }
- }
- unlink (sym);
- }
- {
- static char const file[] = "confdefs.h";
- int fd = open (file, O_RDONLY | O_NOATIME);
- if (fd < 0)
- result |= 8;
- else
- {
- struct stat st0;
- if (fstat (fd, &st0) != 0)
- result |= 16;
- else
- {
- char c;
- sleep (1);
- if (read (fd, &c, 1) != 1)
- result |= 24;
- else
- {
- if (close (fd) != 0)
- result |= 32;
- else
- {
- struct stat st1;
- if (stat (file, &st1) != 0)
- result |= 40;
- else
- if (st0.st_atime != st1.st_atime)
- result |= 64;
- }
- }
- }
- }
- }
- return result;
+long long int n = 1;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;
;
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
- gl_cv_header_working_fcntl_h=yes
+
else
- case $? in #(
- 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
- 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
- 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
- *) gl_cv_header_working_fcntl_h='no';;
- esac
+ ac_cv_type_long_long_int=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+ fi
+ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5
-$as_echo "$gl_cv_header_working_fcntl_h" >&6; }
-
- case $gl_cv_header_working_fcntl_h in #(
- *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
- *) ac_val=1;;
- esac
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WORKING_O_NOATIME $ac_val
-_ACEOF
-
-
- case $gl_cv_header_working_fcntl_h in #(
- *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
- *) ac_val=1;;
- esac
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WORKING_O_NOFOLLOW $ac_val
-_ACEOF
-
-
-
- ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
-if test "x$ac_cv_have_decl_getc_unlocked" = x""yes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
-_ACEOF
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5
-$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; }
-if test "${ac_cv_gnu_library_2_1+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
- Lucky GNU user
- #endif
-#endif
-#ifdef __UCLIBC__
- Lucky user
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Lucky" >/dev/null 2>&1; then :
- ac_cv_gnu_library_2_1=yes
-else
- ac_cv_gnu_library_2_1=no
-fi
-rm -f conftest*
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
+$as_echo "$ac_cv_type_long_long_int" >&6; }
+ if test $ac_cv_type_long_long_int = yes; then
+$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
-$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+ fi
- GLIBC21="$ac_cv_gnu_library_2_1"
- gl_cv_c_multiarch=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifndef __APPLE_CC__
- not a universal capable compiler
- #endif
- typedef int dummy;
+ for ac_header in $gl_header_list
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
- arch=
- prev=
- for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
- if test -n "$prev"; then
- case $word in
- i?86 | x86_64 | ppc | ppc64)
- if test -z "$arch" || test "$arch" = "$word"; then
- arch="$word"
- else
- gl_cv_c_multiarch=yes
- fi
- ;;
- esac
- prev=
- else
- if test "x$word" = "x-arch"; then
- prev=arch
- fi
- fi
- done
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- if test $gl_cv_c_multiarch = yes; then
-$as_echo "#define AA_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+done
- APPLE_UNIVERSAL_BUILD=1
- else
- APPLE_UNIVERSAL_BUILD=0
- fi
- REPLACE_NULL=0;
- HAVE_WCHAR_T=1;
- STDDEF_H='';
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
-$as_echo_n "checking for wchar_t... " >&6; }
-if test "${gt_cv_c_wchar_t+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stddef.h>
- wchar_t foo = (wchar_t)'\0';
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gt_cv_c_wchar_t=yes
-else
- gt_cv_c_wchar_t=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
-$as_echo "$gt_cv_c_wchar_t" >&6; }
- if test $gt_cv_c_wchar_t = yes; then
-
-$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
-
- fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5
$as_echo_n "checking whether the preprocessor supports include_next... " >&6; }
-if test "${gl_cv_have_include_next+set}" = set; then :
+if ${gl_cv_have_include_next+:} false; then :
$as_echo_n "(cached) " >&6
else
rm -rf conftestd1a conftestd1b conftestd2
@@ -5136,7 +5326,7 @@ $as_echo "$gl_cv_have_include_next" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system header files limit the line length" >&5
$as_echo_n "checking whether system header files limit the line length... " >&6; }
-if test "${gl_cv_pragma_columns+set}" = set; then :
+if ${gl_cv_pragma_columns+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5170,530 +5360,64 @@ $as_echo "$gl_cv_pragma_columns" >&6; }
- for ac_header in $gl_header_list
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
-$as_echo_n "checking for long long int... " >&6; }
-if test "${ac_cv_type_long_long_int+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
- /* For now, do not test the preprocessor; as of 2007 there are too many
- implementations with broken preprocessors. Perhaps this can
- be revisited in 2012. In the meantime, code should not expect
- #if to work with literals wider than 32 bits. */
- /* Test literals. */
- long long int ll = 9223372036854775807ll;
- long long int nll = -9223372036854775807LL;
- unsigned long long int ull = 18446744073709551615ULL;
- /* Test constant expressions. */
- typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
- ? 1 : -1)];
- typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
- ? 1 : -1)];
- int i = 63;
-int
-main ()
-{
-/* Test availability of runtime routines for shift and division. */
- long long int llmax = 9223372036854775807ll;
- unsigned long long int ullmax = 18446744073709551615ull;
- return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
- | (llmax / ll) | (llmax % ll)
- | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
- | (ullmax / ull) | (ullmax % ull));
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- if test "$cross_compiling" = yes; then :
- ac_cv_type_long_long_int=yes
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <limits.h>
- #ifndef LLONG_MAX
- # define HALF \
- (1LL << (sizeof (long long int) * CHAR_BIT - 2))
- # define LLONG_MAX (HALF - 1 + HALF)
- #endif
-int
-main ()
-{
-long long int n = 1;
- int i;
- for (i = 0; ; i++)
- {
- long long int m = n << i;
- if (m >> i != n)
- return 1;
- if (LLONG_MAX / 2 < m)
- break;
- }
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ac_cv_type_long_long_int=yes
-else
- ac_cv_type_long_long_int=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-else
- ac_cv_type_long_long_int=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
-$as_echo "$ac_cv_type_long_long_int" >&6; }
- if test $ac_cv_type_long_long_int = yes; then
-
-$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
-
- fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
-$as_echo_n "checking for unsigned long long int... " >&6; }
-if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
+ gl_cv_c_multiarch=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
- /* For now, do not test the preprocessor; as of 2007 there are too many
- implementations with broken preprocessors. Perhaps this can
- be revisited in 2012. In the meantime, code should not expect
- #if to work with literals wider than 32 bits. */
- /* Test literals. */
- long long int ll = 9223372036854775807ll;
- long long int nll = -9223372036854775807LL;
- unsigned long long int ull = 18446744073709551615ULL;
- /* Test constant expressions. */
- typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
- ? 1 : -1)];
- typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
- ? 1 : -1)];
- int i = 63;
-int
-main ()
-{
-/* Test availability of runtime routines for shift and division. */
- long long int llmax = 9223372036854775807ll;
- unsigned long long int ullmax = 18446744073709551615ull;
- return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
- | (llmax / ll) | (llmax % ll)
- | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
- | (ullmax / ull) | (ullmax % ull));
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_type_unsigned_long_long_int=yes
-else
- ac_cv_type_unsigned_long_long_int=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
-$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
- if test $ac_cv_type_unsigned_long_long_int = yes; then
-
-$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
-
- fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-gl_libunistring_sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q;}
-i\
-0
-q
-'
-gl_libunistring_sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q;}
-i\
-0
-q
-'
-gl_libunistring_sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p;q;}
-i\
-0
-q
-'
-
-
- if test "$HAVE_LIBUNISTRING" = yes; then
- LIBUNISTRING_VERSION_MAJOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_major"`
- LIBUNISTRING_VERSION_MINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_minor"`
- LIBUNISTRING_VERSION_SUBMINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_subminor"`
- fi
-
-
- GNULIB_BTOWC=0;
- GNULIB_WCTOB=0;
- GNULIB_MBSINIT=0;
- GNULIB_MBRTOWC=0;
- GNULIB_MBRLEN=0;
- GNULIB_MBSRTOWCS=0;
- GNULIB_MBSNRTOWCS=0;
- GNULIB_WCRTOMB=0;
- GNULIB_WCSRTOMBS=0;
- GNULIB_WCSNRTOMBS=0;
- GNULIB_WCWIDTH=0;
- HAVE_BTOWC=1;
- HAVE_MBSINIT=1;
- HAVE_MBRTOWC=1;
- HAVE_MBRLEN=1;
- HAVE_MBSRTOWCS=1;
- HAVE_MBSNRTOWCS=1;
- HAVE_WCRTOMB=1;
- HAVE_WCSRTOMBS=1;
- HAVE_WCSNRTOMBS=1;
- HAVE_DECL_WCTOB=1;
- HAVE_DECL_WCWIDTH=1;
- REPLACE_MBSTATE_T=0;
- REPLACE_BTOWC=0;
- REPLACE_WCTOB=0;
- REPLACE_MBSINIT=0;
- REPLACE_MBRTOWC=0;
- REPLACE_MBRLEN=0;
- REPLACE_MBSRTOWCS=0;
- REPLACE_MBSNRTOWCS=0;
- REPLACE_WCRTOMB=0;
- REPLACE_WCSRTOMBS=0;
- REPLACE_WCSNRTOMBS=0;
- REPLACE_WCWIDTH=0;
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <wchar.h> uses 'inline' correctly" >&5
-$as_echo_n "checking whether <wchar.h> uses 'inline' correctly... " >&6; }
-if test "${gl_cv_header_wchar_h_correct_inline+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- gl_cv_header_wchar_h_correct_inline=yes
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- #define wcstod renamed_wcstod
-#include <wchar.h>
-extern int zero (void);
-int main () { return zero(); }
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
_ACEOF
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- mv conftest.$ac_objext conftest1.$ac_objext
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- #define wcstod renamed_wcstod
-#include <wchar.h>
-int zero (void) { return 0; }
+if ac_fn_c_try_compile "$LINENO"; then :
-_ACEOF
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- mv conftest.$ac_objext conftest2.$ac_objext
- if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&5 2>&1; then
- :
- else
- gl_cv_header_wchar_h_correct_inline=no
+ arch=
+ prev=
+ for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+ if test -n "$prev"; then
+ case $word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$arch" || test "$arch" = "$word"; then
+ arch="$word"
+ else
+ gl_cv_c_multiarch=yes
+ fi
+ ;;
+ esac
+ prev=
+ else
+ if test "x$word" = "x-arch"; then
+ prev=arch
fi
fi
- fi
- rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_wchar_h_correct_inline" >&5
-$as_echo "$gl_cv_header_wchar_h_correct_inline" >&6; }
- if test $gl_cv_header_wchar_h_correct_inline = no; then
- as_fn_error $? "<wchar.h> cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS).
-This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in
-C99 mode. You have four options:
- - Add the flag -fgnu89-inline to CC and reconfigure, or
- - Fix your include files, using parts of
- <http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or
- - Use a gcc version older than 4.3, or
- - Don't use the flags -std=c99 or -std=gnu99.
-Configuration aborted." "$LINENO" 5
- fi
-
-
-
-
-
-
-
-
- :
-
-
-
-
-
- if test $ac_cv_header_features_h = yes; then
- HAVE_FEATURES_H=1
- else
- HAVE_FEATURES_H=0
- fi
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
-$as_echo_n "checking for wint_t... " >&6; }
-if test "${gt_cv_c_wint_t+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
- <wchar.h>.
- BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
- before <wchar.h>. */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
- wint_t foo = (wchar_t)'\0';
-int
-main ()
-{
+ done
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gt_cv_c_wint_t=yes
-else
- gt_cv_c_wint_t=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
-$as_echo "$gt_cv_c_wint_t" >&6; }
- if test $gt_cv_c_wint_t = yes; then
-
-$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
-
+ if test $gl_cv_c_multiarch = yes; then
+ APPLE_UNIVERSAL_BUILD=1
+ else
+ APPLE_UNIVERSAL_BUILD=0
fi
- for ac_func in $gl_func_list
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-
-
-
-
-
-
- ac_fn_c_check_decl "$LINENO" "iswblank" "ac_cv_have_decl_iswblank" "$ac_includes_default"
-if test "x$ac_cv_have_decl_iswblank" = x""yes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ISWBLANK $ac_have_decl
-_ACEOF
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if test "${ac_cv_c_inline+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifndef __cplusplus
-typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
-#endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_inline=$ac_kw
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_inline" != no && break
-done
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
-
-case $ac_cv_c_inline in
- inline | yes) ;;
- *)
- case $ac_cv_c_inline in
- no) ac_val=;;
- *) ac_val=$ac_cv_c_inline;;
- esac
- cat >>confdefs.h <<_ACEOF
-#ifndef __cplusplus
-#define inline $ac_val
-#endif
-_ACEOF
- ;;
-esac
-
-
-
-
-
-
-
-gl_m4_base='m4'
-
-
-
-
-
-
-
-
-
-gl_source_base='lib'
-
-
-
-
-
-
-
-
-
- :
-
-
-
-
-
-
-
-
-
-LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\""
-
-
-
-
-
-
-
- if test $gt_cv_c_wchar_t = no; then
- HAVE_WCHAR_T=0
- STDDEF_H=stddef.h
+ if test $ac_cv_type_long_long_int = yes; then
+ HAVE_LONG_LONG_INT=1
+ else
+ HAVE_LONG_LONG_INT=0
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5
-$as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; }
-if test "${gl_cv_decl_null_works+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stddef.h>
- int test[2 * (sizeof NULL == sizeof (void *)) -1];
-int
-main ()
-{
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gl_cv_decl_null_works=yes
-else
- gl_cv_decl_null_works=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5
-$as_echo "$gl_cv_decl_null_works" >&6; }
- if test $gl_cv_decl_null_works = no; then
- REPLACE_NULL=1
- STDDEF_H=stddef.h
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
+ HAVE_UNSIGNED_LONG_LONG_INT=1
+ else
+ HAVE_UNSIGNED_LONG_LONG_INT=0
fi
- if test -n "$STDDEF_H"; then
-
@@ -5703,72 +5427,10 @@ $as_echo "$gl_cv_decl_null_works" >&6; }
-
-
- if test $gl_cv_have_include_next = yes; then
- gl_cv_next_stddef_h='<'stddef.h'>'
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stddef.h>" >&5
-$as_echo_n "checking absolute name of <stddef.h>... " >&6; }
-if test "${gl_cv_next_stddef_h+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
-
- if test $ac_cv_header_stddef_h = yes; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stddef.h>
-
-_ACEOF
- case "$host_os" in
- aix*) gl_absname_cpp="$ac_cpp -C" ;;
- *) gl_absname_cpp="$ac_cpp" ;;
- esac
- gl_cv_next_stddef_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
- sed -n '\#/stddef.h#{
- s#.*"\(.*/stddef.h\)".*#\1#
- s#^/[^/]#//&#
- p
- q
- }'`'"'
- else
- gl_cv_next_stddef_h='<'stddef.h'>'
- fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5
-$as_echo "$gl_cv_next_stddef_h" >&6; }
- fi
- NEXT_STDDEF_H=$gl_cv_next_stddef_h
-
- if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
- # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
- gl_next_as_first_directive='<'stddef.h'>'
- else
- # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
- gl_next_as_first_directive=$gl_cv_next_stddef_h
- fi
- NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive
-
-
-
- fi
-
-
-
-
-
- if test $ac_cv_type_long_long_int = yes; then
- HAVE_LONG_LONG_INT=1
- else
- HAVE_LONG_LONG_INT=0
- fi
-
-
- if test $ac_cv_type_unsigned_long_long_int = yes; then
- HAVE_UNSIGNED_LONG_LONG_INT=1
+ if test $ac_cv_header_wchar_h = yes; then
+ HAVE_WCHAR_H=1
else
- HAVE_UNSIGNED_LONG_LONG_INT=0
+ HAVE_WCHAR_H=0
fi
@@ -5790,6 +5452,8 @@ $as_echo "$gl_cv_next_stddef_h" >&6; }
+
+
:
@@ -5798,35 +5462,53 @@ $as_echo "$gl_cv_next_stddef_h" >&6; }
+
if test $gl_cv_have_include_next = yes; then
gl_cv_next_stdint_h='<'stdint.h'>'
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdint.h>" >&5
$as_echo_n "checking absolute name of <stdint.h>... " >&6; }
-if test "${gl_cv_next_stdint_h+set}" = set; then :
+if ${gl_cv_next_stdint_h+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test $ac_cv_header_stdint_h = yes; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ if test $ac_cv_header_stdint_h = yes; then
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdint.h>
_ACEOF
- case "$host_os" in
- aix*) gl_absname_cpp="$ac_cpp -C" ;;
- *) gl_absname_cpp="$ac_cpp" ;;
- esac
- gl_cv_next_stdint_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
- sed -n '\#/stdint.h#{
- s#.*"\(.*/stdint.h\)".*#\1#
- s#^/[^/]#//&#
- p
- q
- }'`'"'
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+
+ gl_header_literal_regex=`echo 'stdint.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+ gl_cv_next_stdint_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`'"'
else
- gl_cv_next_stdint_h='<'stdint.h'>'
- fi
+ gl_cv_next_stdint_h='<'stdint.h'>'
+ fi
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5
@@ -5845,6 +5527,7 @@ $as_echo "$gl_cv_next_stdint_h" >&6; }
+
if test $ac_cv_header_stdint_h = yes; then
HAVE_STDINT_H=1
else
@@ -5855,7 +5538,7 @@ $as_echo "$gl_cv_next_stdint_h" >&6; }
if test $ac_cv_header_stdint_h = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5
$as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
-if test "${gl_cv_header_working_stdint_h+set}" = set; then :
+if ${gl_cv_header_working_stdint_h+:} false; then :
$as_echo_n "(cached) " >&6
else
gl_cv_header_working_stdint_h=no
@@ -5863,8 +5546,6 @@ else
/* end confdefs.h. */
-#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
-#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
#include <stdint.h>
/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
@@ -5958,9 +5639,11 @@ uintmax_t j = UINTMAX_MAX;
#include <limits.h> /* for CHAR_BIT */
#define TYPE_MINIMUM(t) \
- ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
#define TYPE_MAXIMUM(t) \
- ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+ ((t) ((t) 0 < (t) -1 \
+ ? (t) -1 \
+ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
struct s {
int check_PTRDIFF:
PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
@@ -6031,8 +5714,6 @@ else
/* end confdefs.h. */
-#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
-#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
#include <stdint.h>
@@ -6149,14 +5830,6 @@ done
- :
-
-
-
-
-
-
-
if test $APPLE_UNIVERSAL_BUILD = 0; then
@@ -6164,7 +5837,7 @@ done
for gltype in ptrdiff_t size_t ; do
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
$as_echo_n "checking for bit size of $gltype... " >&6; }
-if eval "test \"\${gl_cv_bitsizeof_${gltype}+set}\"" = set; then :
+if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" "
@@ -6209,7 +5882,7 @@ _ACEOF
for gltype in sig_atomic_t wchar_t wint_t ; do
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
$as_echo_n "checking for bit size of $gltype... " >&6; }
-if eval "test \"\${gl_cv_bitsizeof_${gltype}+set}\"" = set; then :
+if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" "
@@ -6253,7 +5926,7 @@ _ACEOF
for gltype in sig_atomic_t wchar_t wint_t ; do
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5
$as_echo_n "checking whether $gltype is signed... " >&6; }
-if eval "test \"\${gl_cv_type_${gltype}_signed+set}\"" = set; then :
+if eval \${gl_cv_type_${gltype}_signed+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6312,7 +5985,7 @@ _ACEOF
for gltype in ptrdiff_t size_t ; do
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
-if eval "test \"\${gl_cv_type_${gltype}_suffix+set}\"" = set; then :
+if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
$as_echo_n "(cached) " >&6
else
eval gl_cv_type_${gltype}_suffix=no
@@ -6384,7 +6057,7 @@ _ACEOF
for gltype in sig_atomic_t wchar_t wint_t ; do
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
-if eval "test \"\${gl_cv_type_${gltype}_suffix+set}\"" = set; then :
+if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
$as_echo_n "(cached) " >&6
else
eval gl_cv_type_${gltype}_suffix=no
@@ -6451,14 +6124,1380 @@ _ACEOF
+ if test $BITSIZEOF_WINT_T -lt 32; then
+ BITSIZEOF_WINT_T=32
+ fi
+
STDINT_H=stdint.h
fi
+ if test -n "$STDINT_H"; then
+ GL_GENERATE_STDINT_H_TRUE=
+ GL_GENERATE_STDINT_H_FALSE='#'
+else
+ GL_GENERATE_STDINT_H_TRUE='#'
+ GL_GENERATE_STDINT_H_FALSE=
+fi
+
+
+
+
+
+
+
+
+ GNULIB_IMAXABS=0;
+ GNULIB_IMAXDIV=0;
+ GNULIB_STRTOIMAX=0;
+ GNULIB_STRTOUMAX=0;
+ HAVE_DECL_IMAXABS=1;
+ HAVE_DECL_IMAXDIV=1;
+ HAVE_DECL_STRTOIMAX=1;
+ HAVE_DECL_STRTOUMAX=1;
+ REPLACE_STRTOIMAX=0;
+ INT32_MAX_LT_INTMAX_MAX=1;
+ INT64_MAX_EQ_LONG_MAX='defined _LP64';
+ PRI_MACROS_BROKEN=0;
+ PRIPTR_PREFIX=__PRIPTR_PREFIX;
+ UINT32_MAX_LT_UINTMAX_MAX=1;
+ UINT64_MAX_EQ_ULONG_MAX='defined _LP64';
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_inttypes_h='<'inttypes.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <inttypes.h>" >&5
+$as_echo_n "checking absolute name of <inttypes.h>... " >&6; }
+if ${gl_cv_next_inttypes_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_inttypes_h = yes; then
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <inttypes.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+
+ gl_header_literal_regex=`echo 'inttypes.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+ gl_cv_next_inttypes_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`'"'
+ else
+ gl_cv_next_inttypes_h='<'inttypes.h'>'
+ fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_inttypes_h" >&5
+$as_echo "$gl_cv_next_inttypes_h" >&6; }
+ fi
+ NEXT_INTTYPES_H=$gl_cv_next_inttypes_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'inttypes.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_inttypes_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H=$gl_next_as_first_directive
+
+
+
+ for gl_func in imaxabs imaxdiv strtoimax strtoumax; do
+ as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <inttypes.h>
+
+int
+main ()
+{
+#undef $gl_func
+ (void) $gl_func;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$as_gl_Symbol=yes"
+else
+ eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+ eval ac_cv_have_decl_$gl_func=yes
+fi
+ done
+
+
+
+ for ac_header in inttypes.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_inttypes_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_INTTYPES_H 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_inttypes_h = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5
+$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; }
+if ${gt_cv_inttypes_pri_broken+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <inttypes.h>
+#ifdef PRId32
+char *p = PRId32;
+#endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gt_cv_inttypes_pri_broken=no
+else
+ gt_cv_inttypes_pri_broken=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5
+$as_echo "$gt_cv_inttypes_pri_broken" >&6; }
+ fi
+ if test "$gt_cv_inttypes_pri_broken" = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define PRI_MACROS_BROKEN 1
+_ACEOF
+
+ PRI_MACROS_BROKEN=1
+ else
+ PRI_MACROS_BROKEN=0
+ fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
+$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
+if ${am_cv_langinfo_codeset+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET); return !cs;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ am_cv_langinfo_codeset=yes
+else
+ am_cv_langinfo_codeset=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
+$as_echo "$am_cv_langinfo_codeset" >&6; }
+ if test $am_cv_langinfo_codeset = yes; then
+
+$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
+
+ fi
+
+
+
+
+
+
+
+
+
+
+ for ac_func in $gl_func_list
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+ :
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5
+$as_echo_n "checking for working fcntl.h... " >&6; }
+if ${gl_cv_header_working_fcntl_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ gl_cv_header_working_fcntl_h=cross-compiling
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+ #if HAVE_UNISTD_H
+ # include <unistd.h>
+ #else /* on Windows with MSVC */
+ # include <io.h>
+ # include <stdlib.h>
+ # defined sleep(n) _sleep ((n) * 1000)
+ #endif
+ #include <fcntl.h>
+ #ifndef O_NOATIME
+ #define O_NOATIME 0
+ #endif
+ #ifndef O_NOFOLLOW
+ #define O_NOFOLLOW 0
+ #endif
+ static int const constants[] =
+ {
+ O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+ O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+ };
+
+int
+main ()
+{
+
+ int result = !constants;
+ #if HAVE_SYMLINK
+ {
+ static char const sym[] = "conftest.sym";
+ if (symlink ("/dev/null", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ if (unlink (sym) != 0 || symlink (".", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_RDONLY | O_NOFOLLOW);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ unlink (sym);
+ }
+ #endif
+ {
+ static char const file[] = "confdefs.h";
+ int fd = open (file, O_RDONLY | O_NOATIME);
+ if (fd < 0)
+ result |= 8;
+ else
+ {
+ struct stat st0;
+ if (fstat (fd, &st0) != 0)
+ result |= 16;
+ else
+ {
+ char c;
+ sleep (1);
+ if (read (fd, &c, 1) != 1)
+ result |= 24;
+ else
+ {
+ if (close (fd) != 0)
+ result |= 32;
+ else
+ {
+ struct stat st1;
+ if (stat (file, &st1) != 0)
+ result |= 40;
+ else
+ if (st0.st_atime != st1.st_atime)
+ result |= 64;
+ }
+ }
+ }
+ }
+ }
+ return result;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_header_working_fcntl_h=yes
+else
+ case $? in #(
+ 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+ 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+ 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+ *) gl_cv_header_working_fcntl_h='no';;
+ esac
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5
+$as_echo "$gl_cv_header_working_fcntl_h" >&6; }
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOATIME $ac_val
+_ACEOF
+
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOFOLLOW $ac_val
+_ACEOF
+
+
+
+ ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
+_ACEOF
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5
+$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; }
+if ${ac_cv_gnu_library_2_1+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+#ifdef __UCLIBC__
+ Lucky user
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Lucky" >/dev/null 2>&1; then :
+ ac_cv_gnu_library_2_1=yes
+else
+ ac_cv_gnu_library_2_1=no
+fi
+rm -f conftest*
+
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
+$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+
+ GLIBC21="$ac_cv_gnu_library_2_1"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <stdbool.h>
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ /* See body of main program for 'e'. */
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ /* The following fails for
+ HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+
+int
+main ()
+{
+
+ bool e = &s;
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdbool_h=yes
+else
+ ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+
+
+ REPLACE_NULL=0;
+ HAVE_WCHAR_T=1;
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
+$as_echo_n "checking for wchar_t... " >&6; }
+if ${gt_cv_c_wchar_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gt_cv_c_wchar_t=yes
+else
+ gt_cv_c_wchar_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
+$as_echo "$gt_cv_c_wchar_t" >&6; }
+ if test $gt_cv_c_wchar_t = yes; then
+
+$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
+
+ fi
+
+
+
+
+
+
+
+gl_libunistring_sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+gl_libunistring_sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+gl_libunistring_sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p;q;}
+i\
+0
+q
+'
+
+
+ if test "$HAVE_LIBUNISTRING" = yes; then
+ LIBUNISTRING_VERSION_MAJOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_major"`
+ LIBUNISTRING_VERSION_MINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_minor"`
+ LIBUNISTRING_VERSION_SUBMINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_subminor"`
+ fi
+
+
+ GNULIB_BTOWC=0;
+ GNULIB_WCTOB=0;
+ GNULIB_MBSINIT=0;
+ GNULIB_MBRTOWC=0;
+ GNULIB_MBRLEN=0;
+ GNULIB_MBSRTOWCS=0;
+ GNULIB_MBSNRTOWCS=0;
+ GNULIB_WCRTOMB=0;
+ GNULIB_WCSRTOMBS=0;
+ GNULIB_WCSNRTOMBS=0;
+ GNULIB_WCWIDTH=0;
+ GNULIB_WMEMCHR=0;
+ GNULIB_WMEMCMP=0;
+ GNULIB_WMEMCPY=0;
+ GNULIB_WMEMMOVE=0;
+ GNULIB_WMEMSET=0;
+ GNULIB_WCSLEN=0;
+ GNULIB_WCSNLEN=0;
+ GNULIB_WCSCPY=0;
+ GNULIB_WCPCPY=0;
+ GNULIB_WCSNCPY=0;
+ GNULIB_WCPNCPY=0;
+ GNULIB_WCSCAT=0;
+ GNULIB_WCSNCAT=0;
+ GNULIB_WCSCMP=0;
+ GNULIB_WCSNCMP=0;
+ GNULIB_WCSCASECMP=0;
+ GNULIB_WCSNCASECMP=0;
+ GNULIB_WCSCOLL=0;
+ GNULIB_WCSXFRM=0;
+ GNULIB_WCSDUP=0;
+ GNULIB_WCSCHR=0;
+ GNULIB_WCSRCHR=0;
+ GNULIB_WCSCSPN=0;
+ GNULIB_WCSSPN=0;
+ GNULIB_WCSPBRK=0;
+ GNULIB_WCSSTR=0;
+ GNULIB_WCSTOK=0;
+ GNULIB_WCSWIDTH=0;
+ HAVE_BTOWC=1;
+ HAVE_MBSINIT=1;
+ HAVE_MBRTOWC=1;
+ HAVE_MBRLEN=1;
+ HAVE_MBSRTOWCS=1;
+ HAVE_MBSNRTOWCS=1;
+ HAVE_WCRTOMB=1;
+ HAVE_WCSRTOMBS=1;
+ HAVE_WCSNRTOMBS=1;
+ HAVE_WMEMCHR=1;
+ HAVE_WMEMCMP=1;
+ HAVE_WMEMCPY=1;
+ HAVE_WMEMMOVE=1;
+ HAVE_WMEMSET=1;
+ HAVE_WCSLEN=1;
+ HAVE_WCSNLEN=1;
+ HAVE_WCSCPY=1;
+ HAVE_WCPCPY=1;
+ HAVE_WCSNCPY=1;
+ HAVE_WCPNCPY=1;
+ HAVE_WCSCAT=1;
+ HAVE_WCSNCAT=1;
+ HAVE_WCSCMP=1;
+ HAVE_WCSNCMP=1;
+ HAVE_WCSCASECMP=1;
+ HAVE_WCSNCASECMP=1;
+ HAVE_WCSCOLL=1;
+ HAVE_WCSXFRM=1;
+ HAVE_WCSDUP=1;
+ HAVE_WCSCHR=1;
+ HAVE_WCSRCHR=1;
+ HAVE_WCSCSPN=1;
+ HAVE_WCSSPN=1;
+ HAVE_WCSPBRK=1;
+ HAVE_WCSSTR=1;
+ HAVE_WCSTOK=1;
+ HAVE_WCSWIDTH=1;
+ HAVE_DECL_WCTOB=1;
+ HAVE_DECL_WCWIDTH=1;
+ REPLACE_MBSTATE_T=0;
+ REPLACE_BTOWC=0;
+ REPLACE_WCTOB=0;
+ REPLACE_MBSINIT=0;
+ REPLACE_MBRTOWC=0;
+ REPLACE_MBRLEN=0;
+ REPLACE_MBSRTOWCS=0;
+ REPLACE_MBSNRTOWCS=0;
+ REPLACE_WCRTOMB=0;
+ REPLACE_WCSRTOMBS=0;
+ REPLACE_WCSNRTOMBS=0;
+ REPLACE_WCWIDTH=0;
+ REPLACE_WCSWIDTH=0;
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <wchar.h> uses 'inline' correctly" >&5
+$as_echo_n "checking whether <wchar.h> uses 'inline' correctly... " >&6; }
+if ${gl_cv_header_wchar_h_correct_inline+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gl_cv_header_wchar_h_correct_inline=yes
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #define wcstod renamed_wcstod
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+extern int zero (void);
+int main () { return zero(); }
+
+_ACEOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ mv conftest.$ac_objext conftest1.$ac_objext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #define wcstod renamed_wcstod
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+int zero (void) { return 0; }
+
+_ACEOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ mv conftest.$ac_objext conftest2.$ac_objext
+ if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&5 2>&1; then
+ :
+ else
+ gl_cv_header_wchar_h_correct_inline=no
+ fi
+ fi
+ fi
+ rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_wchar_h_correct_inline" >&5
+$as_echo "$gl_cv_header_wchar_h_correct_inline" >&6; }
+ if test $gl_cv_header_wchar_h_correct_inline = no; then
+ as_fn_error $? "<wchar.h> cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS).
+This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in
+C99 mode. You have four options:
+ - Add the flag -fgnu89-inline to CC and reconfigure, or
+ - Fix your include files, using parts of
+ <http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or
+ - Use a gcc version older than 4.3, or
+ - Don't use the flags -std=c99 or -std=gnu99.
+Configuration aborted." "$LINENO" 5
+ fi
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+ if test $ac_cv_header_features_h = yes; then
+ HAVE_FEATURES_H=1
+ else
+ HAVE_FEATURES_H=0
+ fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
+$as_echo_n "checking for wint_t... " >&6; }
+if ${gt_cv_c_wint_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+ wint_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gt_cv_c_wint_t=yes
+else
+ gt_cv_c_wint_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
+$as_echo "$gt_cv_c_wint_t" >&6; }
+ if test $gt_cv_c_wint_t = yes; then
+
+$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
+
+ fi
+
+
+ GNULIB_ISWBLANK=0;
+ GNULIB_WCTYPE=0;
+ GNULIB_ISWCTYPE=0;
+ GNULIB_WCTRANS=0;
+ GNULIB_TOWCTRANS=0;
+ HAVE_ISWBLANK=1;
+ HAVE_WCTYPE_T=1;
+ HAVE_WCTRANS_T=1;
+ REPLACE_ISWBLANK=0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+gl_m4_base='m4'
+
+
+
+
+
+
+
+
+
+gl_source_base='lib'
+
+ if test "x$datarootdir" = x; then
+ datarootdir='${datadir}'
+
+ fi
+ if test "x$docdir" = x; then
+ docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+
+ fi
+ if test "x$htmldir" = x; then
+ htmldir='${docdir}'
+
+ fi
+ if test "x$dvidir" = x; then
+ dvidir='${docdir}'
+
+ fi
+ if test "x$pdfdir" = x; then
+ pdfdir='${docdir}'
+
+ fi
+ if test "x$psdir" = x; then
+ psdir='${docdir}'
+
+ fi
+ if test "x$lispdir" = x; then
+ lispdir='${datarootdir}/emacs/site-lisp'
+
+ fi
+ if test "x$localedir" = x; then
+ localedir='${datarootdir}/locale'
+
+ fi
+
+ pkglibexecdir='${libexecdir}/${PACKAGE}'
+
+
+
+
+
+
+
+
+ PRIPTR_PREFIX=
+ if test -n "$STDINT_H"; then
+ PRIPTR_PREFIX='"l"'
+ else
+ for glpfx in '' l ll I64; do
+ case $glpfx in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ I64) gltype1='__int64';;
+ esac
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdint.h>
+ extern intptr_t foo;
+ extern $gltype1 foo;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ PRIPTR_PREFIX='"'$glpfx'"'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test -n "$PRIPTR_PREFIX" && break
+ done
+ fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether INT32_MAX < INTMAX_MAX" >&5
+$as_echo_n "checking whether INT32_MAX < INTMAX_MAX... " >&6; }
+if ${gl_cv_test_INT32_MAX_LT_INTMAX_MAX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Work also in C++ mode. */
+ #define __STDC_LIMIT_MACROS 1
+
+ /* Work if build is not clean. */
+ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+ #include <limits.h>
+ #if HAVE_STDINT_H
+ #include <stdint.h>
+ #endif
+
+ #if defined INT32_MAX && defined INTMAX_MAX
+ #define CONDITION (INT32_MAX < INTMAX_MAX)
+ #elif HAVE_LONG_LONG_INT
+ #define CONDITION (sizeof (int) < sizeof (long long int))
+ #else
+ #define CONDITION 0
+ #endif
+ int test[CONDITION ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_test_INT32_MAX_LT_INTMAX_MAX=yes
+else
+ gl_cv_test_INT32_MAX_LT_INTMAX_MAX=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&5
+$as_echo "$gl_cv_test_INT32_MAX_LT_INTMAX_MAX" >&6; }
+ if test $gl_cv_test_INT32_MAX_LT_INTMAX_MAX = yes; then
+ INT32_MAX_LT_INTMAX_MAX=1;
+ else
+ INT32_MAX_LT_INTMAX_MAX=0;
+ fi
+
+
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether INT64_MAX == LONG_MAX" >&5
+$as_echo_n "checking whether INT64_MAX == LONG_MAX... " >&6; }
+if ${gl_cv_test_INT64_MAX_EQ_LONG_MAX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Work also in C++ mode. */
+ #define __STDC_LIMIT_MACROS 1
+
+ /* Work if build is not clean. */
+ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+ #include <limits.h>
+ #if HAVE_STDINT_H
+ #include <stdint.h>
+ #endif
+
+ #if defined INT64_MAX
+ #define CONDITION (INT64_MAX == LONG_MAX)
+ #elif HAVE_LONG_LONG_INT
+ #define CONDITION (sizeof (long long int) == sizeof (long int))
+ #else
+ #define CONDITION 0
+ #endif
+ int test[CONDITION ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_test_INT64_MAX_EQ_LONG_MAX=yes
+else
+ gl_cv_test_INT64_MAX_EQ_LONG_MAX=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&5
+$as_echo "$gl_cv_test_INT64_MAX_EQ_LONG_MAX" >&6; }
+ if test $gl_cv_test_INT64_MAX_EQ_LONG_MAX = yes; then
+ INT64_MAX_EQ_LONG_MAX=1;
+ else
+ INT64_MAX_EQ_LONG_MAX=0;
+ fi
+
+
+ else
+ INT64_MAX_EQ_LONG_MAX=-1
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UINT32_MAX < UINTMAX_MAX" >&5
+$as_echo_n "checking whether UINT32_MAX < UINTMAX_MAX... " >&6; }
+if ${gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Work also in C++ mode. */
+ #define __STDC_LIMIT_MACROS 1
+
+ /* Work if build is not clean. */
+ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+ #include <limits.h>
+ #if HAVE_STDINT_H
+ #include <stdint.h>
+ #endif
+
+ #if defined UINT32_MAX && defined UINTMAX_MAX
+ #define CONDITION (UINT32_MAX < UINTMAX_MAX)
+ #elif HAVE_LONG_LONG_INT
+ #define CONDITION (sizeof (unsigned int) < sizeof (unsigned long long int))
+ #else
+ #define CONDITION 0
+ #endif
+ int test[CONDITION ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=yes
+else
+ gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&5
+$as_echo "$gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX" >&6; }
+ if test $gl_cv_test_UINT32_MAX_LT_UINTMAX_MAX = yes; then
+ UINT32_MAX_LT_UINTMAX_MAX=1;
+ else
+ UINT32_MAX_LT_UINTMAX_MAX=0;
+ fi
+
+
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UINT64_MAX == ULONG_MAX" >&5
+$as_echo_n "checking whether UINT64_MAX == ULONG_MAX... " >&6; }
+if ${gl_cv_test_UINT64_MAX_EQ_ULONG_MAX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Work also in C++ mode. */
+ #define __STDC_LIMIT_MACROS 1
+
+ /* Work if build is not clean. */
+ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+ #include <limits.h>
+ #if HAVE_STDINT_H
+ #include <stdint.h>
+ #endif
+
+ #if defined UINT64_MAX
+ #define CONDITION (UINT64_MAX == ULONG_MAX)
+ #elif HAVE_LONG_LONG_INT
+ #define CONDITION (sizeof (unsigned long long int) == sizeof (unsigned long int))
+ #else
+ #define CONDITION 0
+ #endif
+ int test[CONDITION ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=yes
+else
+ gl_cv_test_UINT64_MAX_EQ_ULONG_MAX=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&5
+$as_echo "$gl_cv_test_UINT64_MAX_EQ_ULONG_MAX" >&6; }
+ if test $gl_cv_test_UINT64_MAX_EQ_ULONG_MAX = yes; then
+ UINT64_MAX_EQ_ULONG_MAX=1;
+ else
+ UINT64_MAX_EQ_ULONG_MAX=0;
+ fi
+
+
+ else
+ UINT64_MAX_EQ_ULONG_MAX=-1
+ fi
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+ LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
+
+
+
+
+
+ # Define two additional variables used in the Makefile substitution.
+
+ if test "$ac_cv_header_stdbool_h" = yes; then
+ STDBOOL_H=''
+ else
+ STDBOOL_H='stdbool.h'
+ fi
+
+ if test -n "$STDBOOL_H"; then
+ GL_GENERATE_STDBOOL_H_TRUE=
+ GL_GENERATE_STDBOOL_H_FALSE='#'
+else
+ GL_GENERATE_STDBOOL_H_TRUE='#'
+ GL_GENERATE_STDBOOL_H_FALSE=
+fi
+
+
+ if test "$ac_cv_type__Bool" = yes; then
+ HAVE__BOOL=1
+ else
+ HAVE__BOOL=0
+ fi
+
+
+
+
+
+ STDDEF_H=
+ if test $gt_cv_c_wchar_t = no; then
+ HAVE_WCHAR_T=0
+ STDDEF_H=stddef.h
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5
+$as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; }
+if ${gl_cv_decl_null_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+ int test[2 * (sizeof NULL == sizeof (void *)) -1];
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_decl_null_works=yes
+else
+ gl_cv_decl_null_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5
+$as_echo "$gl_cv_decl_null_works" >&6; }
+ if test $gl_cv_decl_null_works = no; then
+ REPLACE_NULL=1
+ STDDEF_H=stddef.h
+ fi
+
+ if test -n "$STDDEF_H"; then
+ GL_GENERATE_STDDEF_H_TRUE=
+ GL_GENERATE_STDDEF_H_FALSE='#'
+else
+ GL_GENERATE_STDDEF_H_TRUE='#'
+ GL_GENERATE_STDDEF_H_FALSE=
+fi
+
+ if test -n "$STDDEF_H"; then
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_stddef_h='<'stddef.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stddef.h>" >&5
+$as_echo_n "checking absolute name of <stddef.h>... " >&6; }
+if ${gl_cv_next_stddef_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+
+ gl_header_literal_regex=`echo 'stddef.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+ gl_cv_next_stddef_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5
+$as_echo "$gl_cv_next_stddef_h" >&6; }
+ fi
+ NEXT_STDDEF_H=$gl_cv_next_stddef_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'stddef.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_stddef_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive
+
+
+
+
+ fi
+
+
+
+
if { test "$HAVE_LIBUNISTRING" != yes \
|| {
@@ -6486,7 +7525,6 @@ _ACEOF
-
if { test "$HAVE_LIBUNISTRING" != yes \
|| {
@@ -6514,7 +7552,6 @@ _ACEOF
-
if { test "$HAVE_LIBUNISTRING" != yes \
|| {
@@ -6524,7 +7561,7 @@ _ACEOF
|| { test $LIBUNISTRING_VERSION_MAJOR -eq 0 \
&& { test $LIBUNISTRING_VERSION_MINOR -lt 9 \
|| { test $LIBUNISTRING_VERSION_MINOR -eq 9 \
- && test $LIBUNISTRING_VERSION_SUBMINOR -lt 0
+ && test $LIBUNISTRING_VERSION_SUBMINOR -lt 4
}
}
}
@@ -6548,13 +7585,6 @@ fi
- :
-
-
-
-
-
-
@@ -6566,35 +7596,53 @@ fi
+
if test $gl_cv_have_include_next = yes; then
gl_cv_next_wchar_h='<'wchar.h'>'
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <wchar.h>" >&5
$as_echo_n "checking absolute name of <wchar.h>... " >&6; }
-if test "${gl_cv_next_wchar_h+set}" = set; then :
+if ${gl_cv_next_wchar_h+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test $ac_cv_header_wchar_h = yes; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ if test $ac_cv_header_wchar_h = yes; then
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <wchar.h>
_ACEOF
- case "$host_os" in
- aix*) gl_absname_cpp="$ac_cpp -C" ;;
- *) gl_absname_cpp="$ac_cpp" ;;
- esac
- gl_cv_next_wchar_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
- sed -n '\#/wchar.h#{
- s#.*"\(.*/wchar.h\)".*#\1#
- s#^/[^/]#//&#
- p
- q
- }'`'"'
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+
+ gl_header_literal_regex=`echo 'wchar.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+ gl_cv_next_wchar_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`'"'
else
- gl_cv_next_wchar_h='<'wchar.h'>'
- fi
+ gl_cv_next_wchar_h='<'wchar.h'>'
+ fi
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wchar_h" >&5
@@ -6613,6 +7661,7 @@ $as_echo "$gl_cv_next_wchar_h" >&6; }
+
if test $ac_cv_header_wchar_h = yes; then
HAVE_WCHAR_H=1
else
@@ -6631,17 +7680,20 @@ $as_echo "$gl_cv_next_wchar_h" >&6; }
- for gl_func in btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb wcsrtombs wcsnrtombs wcwidth; do
+ for gl_func in btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb wcsrtombs wcsnrtombs wcwidth wmemchr wmemcmp wmemcpy wmemmove wmemset wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth ; do
as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
-if eval "test \"\${$as_gl_Symbol+set}\"" = set; then :
+if eval \${$as_gl_Symbol+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-/* Some systems require additional headers. */
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
#if !(defined __GLIBC__ && !defined __UCLIBC__)
# include <stddef.h>
# include <stdio.h>
@@ -6668,7 +7720,7 @@ fi
eval ac_res=\$$as_gl_Symbol
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+ if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
_ACEOF
@@ -6696,7 +7748,14 @@ fi
fi
- :
+
+ if test $gt_cv_c_wint_t = yes; then
+ HAVE_WINT_T=1
+ else
+ HAVE_WINT_T=0
+ fi
+
+
@@ -6709,42 +7768,79 @@ fi
- if test $ac_cv_func_iswblank = yes; then
- HAVE_ISWBLANK=1
- REPLACE_ISWBLANK=0
- else
- HAVE_ISWBLANK=0
- if test $ac_cv_have_decl_iswblank = yes; then
- REPLACE_ISWBLANK=1
- else
- REPLACE_ISWBLANK=0
- fi
- fi
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_wctype_h='<'wctype.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <wctype.h>" >&5
+$as_echo_n "checking absolute name of <wctype.h>... " >&6; }
+if ${gl_cv_next_wctype_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
- :
+ if test $ac_cv_header_wctype_h = yes; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <wctype.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+
+ gl_header_literal_regex=`echo 'wctype.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+ gl_cv_next_wctype_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`'"'
+ else
+ gl_cv_next_wctype_h='<'wctype.h'>'
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wctype_h" >&5
+$as_echo "$gl_cv_next_wctype_h" >&6; }
+ fi
+ NEXT_WCTYPE_H=$gl_cv_next_wctype_h
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'wctype.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_wctype_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H=$gl_next_as_first_directive
- if test $gt_cv_c_wint_t = yes; then
- HAVE_WINT_T=1
- else
- HAVE_WINT_T=0
- fi
if test $ac_cv_header_wctype_h = yes; then
if test $ac_cv_func_iswcntrl = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iswcntrl works" >&5
$as_echo_n "checking whether iswcntrl works... " >&6; }
-if test "${gl_cv_func_iswcntrl_works+set}" = set; then :
+if ${gl_cv_func_iswcntrl_works+:} false; then :
$as_echo_n "(cached) " >&6
else
@@ -6764,9 +7860,9 @@ main ()
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
- gl_cv_func_iswcntrl_works=yes
+ gl_cv_func_iswcntrl_works="guessing yes"
else
- gl_cv_func_iswcntrl_works=no
+ gl_cv_func_iswcntrl_works="guessing no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
@@ -6774,12 +7870,17 @@ else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
- #include <stddef.h>
- #include <stdio.h>
- #include <time.h>
- #include <wchar.h>
- #include <wctype.h>
- int main () { return iswprint ('x') == 0; }
+ /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+ included before <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+ must be included before <wchar.h>. */
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+ #include <wctype.h>
+ int main () { return iswprint ('x') == 0; }
+
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
gl_cv_func_iswcntrl_works=yes
@@ -6795,77 +7896,207 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_iswcntrl_works" >&5
$as_echo "$gl_cv_func_iswcntrl_works" >&6; }
fi
+ HAVE_WCTYPE_H=1
+ else
+ HAVE_WCTYPE_H=0
+ fi
+ case "$gl_cv_func_iswcntrl_works" in
+ *yes) REPLACE_ISWCNTRL=0 ;;
+ *) REPLACE_ISWCNTRL=1 ;;
+ esac
- :
+ if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
+ :
+ fi
+ if test $REPLACE_ISWCNTRL = 1; then
+ REPLACE_TOWLOWER=1
+ else
+ for ac_func in towlower
+do :
+ ac_fn_c_check_func "$LINENO" "towlower" "ac_cv_func_towlower"
+if test "x$ac_cv_func_towlower" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_TOWLOWER 1
+_ACEOF
+fi
+done
+ if test $ac_cv_func_towlower = yes; then
+ REPLACE_TOWLOWER=0
+ else
+ ac_fn_c_check_decl "$LINENO" "towlower" "ac_cv_have_decl_towlower" "/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+ included before <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+ must be included before <wchar.h>. */
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+ #if HAVE_WCTYPE_H
+ # include <wctype.h>
+ #endif
+"
+if test "x$ac_cv_have_decl_towlower" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TOWLOWER $ac_have_decl
+_ACEOF
+ if test $ac_cv_have_decl_towlower = yes; then
+ REPLACE_TOWLOWER=1
+ else
+ REPLACE_TOWLOWER=0
+ fi
+ fi
+ fi
- if test $gl_cv_have_include_next = yes; then
- gl_cv_next_wctype_h='<'wctype.h'>'
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <wctype.h>" >&5
-$as_echo_n "checking absolute name of <wctype.h>... " >&6; }
-if test "${gl_cv_next_wctype_h+set}" = set; then :
+
+ if test $HAVE_ISWCNTRL = 0 || test $REPLACE_TOWLOWER = 1; then
+ :
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t" >&5
+$as_echo_n "checking for wctype_t... " >&6; }
+if ${gl_cv_type_wctype_t+:} false; then :
$as_echo_n "(cached) " >&6
else
-
- if test $ac_cv_header_wctype_h = yes; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <wctype.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+ included before <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+ must be included before <wchar.h>. */
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+ #if HAVE_WCTYPE_H
+ # include <wctype.h>
+ #endif
+ wctype_t a;
+
+int
+main ()
+{
+ ;
+ return 0;
+}
_ACEOF
- case "$host_os" in
- aix*) gl_absname_cpp="$ac_cpp -C" ;;
- *) gl_absname_cpp="$ac_cpp" ;;
- esac
- gl_cv_next_wctype_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
- sed -n '\#/wctype.h#{
- s#.*"\(.*/wctype.h\)".*#\1#
- s#^/[^/]#//&#
- p
- q
- }'`'"'
- else
- gl_cv_next_wctype_h='<'wctype.h'>'
- fi
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_type_wctype_t=yes
+else
+ gl_cv_type_wctype_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_wctype_h" >&5
-$as_echo "$gl_cv_next_wctype_h" >&6; }
- fi
- NEXT_WCTYPE_H=$gl_cv_next_wctype_h
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctype_t" >&5
+$as_echo "$gl_cv_type_wctype_t" >&6; }
+ if test $gl_cv_type_wctype_t = no; then
+ HAVE_WCTYPE_T=0
+ fi
- if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
- # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
- gl_next_as_first_directive='<'wctype.h'>'
- else
- # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
- gl_next_as_first_directive=$gl_cv_next_wctype_h
- fi
- NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H=$gl_next_as_first_directive
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctrans_t" >&5
+$as_echo_n "checking for wctrans_t... " >&6; }
+if ${gl_cv_type_wctrans_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+ included before <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+ must be included before <wchar.h>. */
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+ #include <wctype.h>
+ wctrans_t a;
+int
+main ()
+{
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_type_wctrans_t=yes
+else
+ gl_cv_type_wctrans_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- HAVE_WCTYPE_H=1
- else
- HAVE_WCTYPE_H=0
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wctrans_t" >&5
+$as_echo "$gl_cv_type_wctrans_t" >&6; }
+ if test $gl_cv_type_wctrans_t = no; then
+ HAVE_WCTRANS_T=0
fi
- if test "$gl_cv_func_iswcntrl_works" = no; then
- REPLACE_ISWCNTRL=1
- else
- REPLACE_ISWCNTRL=0
- fi
+ for gl_func in wctype iswctype wctrans towctrans ; do
+ as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
+$as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
+if eval \${$as_gl_Symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+# include <wchar.h>
+#endif
+#include <wctype.h>
+
+int
+main ()
+{
+#undef $gl_func
+ (void) $gl_func;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$as_gl_Symbol=yes"
+else
+ eval "$as_gl_Symbol=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_gl_Symbol
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1
+_ACEOF
+
+ eval ac_cv_have_decl_$gl_func=yes
+fi
+ done
@@ -6904,7 +8135,7 @@ $as_echo "$gl_cv_next_wctype_h" >&6; }
#include <wchar.h>
"
-if test "x$ac_cv_have_decl_wcwidth" = x""yes; then :
+if test "x$ac_cv_have_decl_wcwidth" = xyes; then :
ac_have_decl=1
else
ac_have_decl=0
@@ -6919,9 +8150,10 @@ _ACEOF
fi
if test $ac_cv_func_wcwidth = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wcwidth works reasonably in UTF-8 locales" >&5
+ HAVE_WCWIDTH=1
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wcwidth works reasonably in UTF-8 locales" >&5
$as_echo_n "checking whether wcwidth works reasonably in UTF-8 locales... " >&6; }
-if test "${gl_cv_func_wcwidth_works+set}" = set; then :
+if ${gl_cv_func_wcwidth_works+:} false; then :
$as_echo_n "(cached) " >&6
else
@@ -6962,8 +8194,10 @@ int main ()
{
if (wcwidth (0x0301) > 0)
result |= 1;
- if (wcwidth (0x200B) > 0)
+ if (wcwidth (0x05B0) > 0)
result |= 2;
+ if (wcwidth (0x200B) > 0)
+ result |= 4;
}
return result;
}
@@ -6985,8 +8219,11 @@ $as_echo "$gl_cv_func_wcwidth_works" >&6; }
*yes) ;;
*no) REPLACE_WCWIDTH=1 ;;
esac
+ else
+ HAVE_WCWIDTH=0
fi
- if test $ac_cv_func_wcwidth != yes || test $REPLACE_WCWIDTH = 1; then
+
+ if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
@@ -6998,22 +8235,18 @@ $as_echo "$gl_cv_func_wcwidth_works" >&6; }
gl_LIBOBJS="$gl_LIBOBJS wcwidth.$ac_objext"
fi
- if test $ac_cv_func_wcwidth != yes || test $REPLACE_WCWIDTH = 1 \
- || test $HAVE_DECL_WCWIDTH = 0; then
- :
- fi
+ GNULIB_WCWIDTH=1
- GNULIB_WCWIDTH=1
-$as_echo "#define GNULIB_TEST_WCWIDTH 1" >>confdefs.h
+$as_echo "#define GNULIB_TEST_WCWIDTH 1" >>confdefs.h
@@ -7098,10 +8331,21 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
- test "x$cache_file" != "x/dev/null" &&
+ if test "x$cache_file" != "x/dev/null"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
$as_echo "$as_me: updating cache $cache_file" >&6;}
- cat confcache >$cache_file
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
@@ -7132,6 +8376,14 @@ LIBOBJS=$ac_libobjs
LTLIBOBJS=$ac_ltlibobjs
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
if test -n "$EXEEXT"; then
am__EXEEXT_TRUE=
am__EXEEXT_FALSE='#'
@@ -7152,6 +8404,18 @@ if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${GL_GENERATE_STDINT_H_TRUE}" && test -z "${GL_GENERATE_STDINT_H_FALSE}"; then
+ as_fn_error $? "conditional \"GL_GENERATE_STDINT_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then
+ as_fn_error $? "conditional \"GL_GENERATE_STDBOOL_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FALSE}"; then
+ as_fn_error $? "conditional \"GL_GENERATE_STDDEF_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE}" && test -z "${LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_FALSE}"; then
as_fn_error $? "conditional \"LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -7173,7 +8437,7 @@ fi
-: ${CONFIG_STATUS=./config.status}
+: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
@@ -7274,6 +8538,7 @@ fi
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7469,16 +8734,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -7538,28 +8803,16 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -7581,7 +8834,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# values after options handling.
ac_log="
This file was extended by dummy $as_me 0, which was
-generated by GNU Autoconf 2.67. Invocation command line was
+generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -7647,10 +8900,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
dummy config.status 0
-configured by $0, generated by GNU Autoconf 2.67,
+configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -7741,7 +8994,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
@@ -7804,9 +9057,10 @@ fi
# after its creation but before its name has been assigned to `$tmp'.
$debug ||
{
- tmp=
+ tmp= ac_tmp=
trap 'exit_status=$?
- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
' 0
trap 'as_fn_exit 1' 1 2 13 15
}
@@ -7814,12 +9068,13 @@ $debug ||
{
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
+ test -d "$tmp"
} ||
{
tmp=./conf$$-$RANDOM
(umask 077 && mkdir "$tmp")
} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
@@ -7841,7 +9096,7 @@ else
ac_cs_awk_cr=$ac_cr
fi
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
_ACEOF
@@ -7869,7 +9124,7 @@ done
rm -f conf$$subs.sh
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
_ACEOF
sed -n '
h
@@ -7917,7 +9172,7 @@ t delim
rm -f conf$$subs.awk
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
for (key in S) S_is_set[key] = 1
FS = ""
@@ -7949,7 +9204,7 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
else
cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
|| as_fn_error $? "could not setup config files machinery" "$LINENO" 5
_ACEOF
@@ -7983,7 +9238,7 @@ fi # test -n "$CONFIG_FILES"
# No need to generate them if there are no CONFIG_HEADERS.
# This happens for instance with `./config.status Makefile'.
if test -n "$CONFIG_HEADERS"; then
-cat >"$tmp/defines.awk" <<\_ACAWK ||
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
BEGIN {
_ACEOF
@@ -7995,8 +9250,8 @@ _ACEOF
# handling of long lines.
ac_delim='%!_!# '
for ac_last_try in false false :; do
- ac_t=`sed -n "/$ac_delim/p" confdefs.h`
- if test -z "$ac_t"; then
+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_tt"; then
break
elif $ac_last_try; then
as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
@@ -8116,7 +9371,7 @@ do
for ac_f
do
case $ac_f in
- -) ac_f="$tmp/stdin";;
+ -) ac_f="$ac_tmp/stdin";;
*) # Look for the file first in the build tree, then in the source tree
# (if the path is not absolute). The absolute path cannot be DOS-style,
# because $ac_f cannot contain `:'.
@@ -8151,7 +9406,7 @@ $as_echo "$as_me: creating $ac_file" >&6;}
esac
case $ac_tag in
- *:-:* | *:-) cat >"$tmp/stdin" \
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
esac
;;
@@ -8288,21 +9543,22 @@ s&@INSTALL@&$ac_INSTALL&;t t
s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
- rm -f "$tmp/stdin"
+ rm -f "$ac_tmp/stdin"
case $ac_file in
- -) cat "$tmp/out" && rm -f "$tmp/out";;
- *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
esac \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
;;
@@ -8313,20 +9569,20 @@ which seems to be undefined. Please make sure it is defined" >&2;}
if test x"$ac_file" != x-; then
{
$as_echo "/* $configure_input */" \
- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
- } >"$tmp/config.h" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+ } >"$ac_tmp/config.h" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
- if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
$as_echo "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
- mv "$tmp/config.h" "$ac_file" \
+ mv "$ac_tmp/config.h" "$ac_file" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
$as_echo "/* $configure_input */" \
- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
# Compute "$ac_file"'s index in $config_headers.
@@ -8386,7 +9642,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
# Strip MF so we end up with the name of the file.
mf=`echo "$mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
+ # We used to match only the files named 'Makefile.in', but
# some people rename them; so instead we look at the file content.
# Grep'ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
@@ -8420,21 +9676,19 @@ $as_echo X"$mf" |
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
+ # from the Makefile without running 'make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`$as_dirname -- "$file" ||
diff --git a/src/libs/gnulib/configure.ac b/src/libs/gnulib/configure.ac
index 637762a..ce4e08b 100644
--- a/src/libs/gnulib/configure.ac
+++ b/src/libs/gnulib/configure.ac
@@ -18,7 +18,7 @@ m4_pattern_allow([^gl_ES$])dnl a valid locale name
m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
-AC_PROG_RANLIB
+gl_PROG_AR_RANLIB
AM_PROG_CC_C_O
@@ -36,36 +36,27 @@ gl_m4_base='m4'
m4_pushdef([gl_LIBSOURCES_DIR], [])
gl_COMMON
gl_source_base='lib'
-
-
-
-
-
-gl_LOCALCHARSET
-LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\""
-AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
-
-gl_MULTIARCH
-
-gl_STDDEF_H
-
-gl_STDINT_H
-
-
-gl_LIBUNISTRING_LIBHEADER([0.9], [unitypes.h])
-
-gl_LIBUNISTRING_LIBHEADER([0.9], [uniwidth.h])
-
-gl_LIBUNISTRING_MODULE([0.9], [uniwidth/width])
-
-
-gl_WCHAR_H
-
-gl_WCTYPE_H
-
-gl_FUNC_WCWIDTH
-gl_WCHAR_MODULE_INDICATOR([wcwidth])
-
+ gl_CONFIGMAKE_PREP
+ AC_REQUIRE([gl_EXTERN_INLINE])
+ gl_INTTYPES_H
+ gl_INTTYPES_INCOMPLETE
+ gl_LOCALCHARSET
+ LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
+ AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
+ gl_MULTIARCH
+ AM_STDBOOL_H
+ gl_STDDEF_H
+ gl_STDINT_H
+ gl_LIBUNISTRING_LIBHEADER([0.9], [unitypes.h])
+ gl_LIBUNISTRING_LIBHEADER([0.9], [uniwidth.h])
+ gl_LIBUNISTRING_MODULE([0.9.4], [uniwidth/width])
+ gl_WCHAR_H
+ gl_WCTYPE_H
+ gl_FUNC_WCWIDTH
+ if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
+ AC_LIBOBJ([wcwidth])
+ fi
+ gl_WCHAR_MODULE_INDICATOR([wcwidth])
m4_ifval(gl_LIBSOURCES_LIST, [
m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
for gl_file in ]gl_LIBSOURCES_LIST[ ; do
diff --git a/src/libs/gnulib/lib/Makefile.am b/src/libs/gnulib/lib/Makefile.am
index 158a585..e4f588c 100644
--- a/src/libs/gnulib/lib/Makefile.am
+++ b/src/libs/gnulib/lib/Makefile.am
@@ -1,15 +1,27 @@
## DO NOT EDIT! GENERATED AUTOMATICALLY!
## Process this file with automake to produce Makefile.in.
-# Copyright (C) 2002-2010 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
#
-# This file is free software, distributed under the terms of the GNU
-# General Public License. As a special exception to the GNU General
-# Public License, this file may be distributed as part of a program
-# that contains a configuration script generated by Autoconf, under
+# This file 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 3 of the License, or
+# (at your option) any later version.
+#
+# This file 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 this file. If not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License,
+# this file may be distributed as part of a program that
+# contains a configuration script generated by Autoconf, under
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=src/libs/gnulib --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-libtool --macro-prefix=gl wcwidth
+# Reproduce by: gnulib-tool --import --dir=src/libs/gnulib --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl wcwidth
AUTOMAKE_OPTIONS = 1.5 gnits subdir-objects
@@ -36,71 +48,10 @@ libgnu_a_LIBADD = $(gl_LIBOBJS)
libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
EXTRA_libgnu_a_SOURCES =
-## begin gnulib module arg-nonnull
-
-# The BUILT_SOURCES created by this Makefile snippet are not used via #include
-# statements but through direct file reference. Therefore this snippet must be
-# present in all Makefile.am that need it. This is ensured by the applicability
-# 'all' defined above.
-
-BUILT_SOURCES += arg-nonnull.h
-# The arg-nonnull.h that gets inserted into generated .h files is the same as
-# build-aux/arg-nonnull.h, except that it has the copyright header cut off.
-arg-nonnull.h: $(top_srcdir)/build-aux/arg-nonnull.h
- $(AM_V_GEN)rm -f $@-t $@ && \
- sed -n -e '/GL_ARG_NONNULL/,$$p' \
- < $(top_srcdir)/build-aux/arg-nonnull.h \
- > $@-t && \
- mv $@-t $@
-MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t
-
-ARG_NONNULL_H=arg-nonnull.h
-
-EXTRA_DIST += $(top_srcdir)/build-aux/arg-nonnull.h
-
-## end gnulib module arg-nonnull
-
-## begin gnulib module c++defs
-
-# The BUILT_SOURCES created by this Makefile snippet are not used via #include
-# statements but through direct file reference. Therefore this snippet must be
-# present in all Makefile.am that need it. This is ensured by the applicability
-# 'all' defined above.
-
-BUILT_SOURCES += c++defs.h
-# The c++defs.h that gets inserted into generated .h files is the same as
-# build-aux/c++defs.h, except that it has the copyright header cut off.
-c++defs.h: $(top_srcdir)/build-aux/c++defs.h
- $(AM_V_GEN)rm -f $@-t $@ && \
- sed -n -e '/_GL_CXXDEFS/,$$p' \
- < $(top_srcdir)/build-aux/c++defs.h \
- > $@-t && \
- mv $@-t $@
-MOSTLYCLEANFILES += c++defs.h c++defs.h-t
-
-CXXDEFS_H=c++defs.h
-
-EXTRA_DIST += $(top_srcdir)/build-aux/c++defs.h
-
-## end gnulib module c++defs
-
## begin gnulib module configmake
-# Retrieve values of the variables through 'configure' followed by
-# 'make', not directly through 'configure', so that a user who
-# sets some of these variables consistently on the 'make' command
-# line gets correct results.
-#
-# One advantage of this approach, compared to the classical
-# approach of adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS,
-# is that it protects against the use of undefined variables.
-# If, say, $(libdir) is not set in the Makefile, LIBDIR is not
-# defined by this module, and code using LIBDIR gives a
-# compilation error.
-#
-# Another advantage is that 'make' output is shorter.
-#
-# Listed in the same order as the GNU makefile conventions.
+# Listed in the same order as the GNU makefile conventions, and
+# provided by autoconf 2.59c+.
# The Automake-defined pkg* macros are appended, in the order
# listed in the Automake 1.10a+ documentation.
configmake.h: Makefile
@@ -134,11 +85,7 @@ configmake.h: Makefile
echo '#define PKGLIBDIR "$(pkglibdir)"'; \
echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
} | sed '/""/d' > $@-t && \
- if test -f $@ && cmp $@-t $@ > /dev/null; then \
- rm -f $@-t; \
- else \
- rm -f $@; mv $@-t $@; \
- fi
+ mv -f $@-t $@
BUILT_SOURCES += configmake.h
CLEANFILES += configmake.h configmake.h-t
@@ -219,16 +166,87 @@ EXTRA_DIST += config.charset ref-add.sin ref-del.sin
## end gnulib module localcharset
+## begin gnulib module snippet/arg-nonnull
+
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
+# statements but through direct file reference. Therefore this snippet must be
+# present in all Makefile.am that need it. This is ensured by the applicability
+# 'all' defined above.
+
+BUILT_SOURCES += arg-nonnull.h
+# The arg-nonnull.h that gets inserted into generated .h files is the same as
+# build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut
+# off.
+arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ sed -n -e '/GL_ARG_NONNULL/,$$p' \
+ < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \
+ > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t
+
+ARG_NONNULL_H=arg-nonnull.h
+
+EXTRA_DIST += $(top_srcdir)/build-aux/snippet/arg-nonnull.h
+
+## end gnulib module snippet/arg-nonnull
+
+## begin gnulib module snippet/c++defs
+
+# The BUILT_SOURCES created by this Makefile snippet are not used via #include
+# statements but through direct file reference. Therefore this snippet must be
+# present in all Makefile.am that need it. This is ensured by the applicability
+# 'all' defined above.
+
+BUILT_SOURCES += c++defs.h
+# The c++defs.h that gets inserted into generated .h files is the same as
+# build-aux/snippet/c++defs.h, except that it has the copyright header cut off.
+c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ sed -n -e '/_GL_CXXDEFS/,$$p' \
+ < $(top_srcdir)/build-aux/snippet/c++defs.h \
+ > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += c++defs.h c++defs.h-t
+
+CXXDEFS_H=c++defs.h
+
+EXTRA_DIST += $(top_srcdir)/build-aux/snippet/c++defs.h
+
+## end gnulib module snippet/c++defs
+
+## begin gnulib module snippet/warn-on-use
+
+BUILT_SOURCES += warn-on-use.h
+# The warn-on-use.h that gets inserted into generated .h files is the same as
+# build-aux/snippet/warn-on-use.h, except that it has the copyright header cut
+# off.
+warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ sed -n -e '/^.ifndef/,$$p' \
+ < $(top_srcdir)/build-aux/snippet/warn-on-use.h \
+ > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t
+
+WARN_ON_USE_H=warn-on-use.h
+
+EXTRA_DIST += $(top_srcdir)/build-aux/snippet/warn-on-use.h
+
+## end gnulib module snippet/warn-on-use
+
## begin gnulib module stddef
BUILT_SOURCES += $(STDDEF_H)
# We need the following in order to create <stddef.h> when the system
# doesn't have one that works with the given compiler.
-stddef.h: stddef.in.h
+if GL_GENERATE_STDDEF_H
+stddef.h: stddef.in.h $(top_builddir)/config.status
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
@@ -237,6 +255,10 @@ stddef.h: stddef.in.h
< $(srcdir)/stddef.in.h; \
} > $@-t && \
mv $@-t $@
+else
+stddef.h: $(top_builddir)/config.status
+ rm -f $@
+endif
MOSTLYCLEANFILES += stddef.h stddef.h-t
EXTRA_DIST += stddef.in.h
@@ -249,10 +271,12 @@ BUILT_SOURCES += $(STDINT_H)
# We need the following in order to create <stdint.h> when the system
# doesn't have one that works with the given compiler.
-stdint.h: stdint.in.h
+if GL_GENERATE_STDINT_H
+stdint.h: stdint.in.h $(top_builddir)/config.status
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
- sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
@@ -261,6 +285,7 @@ stdint.h: stdint.in.h
-e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
-e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
-e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
-e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
-e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
-e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
@@ -280,6 +305,10 @@ stdint.h: stdint.in.h
< $(srcdir)/stdint.in.h; \
} > $@-t && \
mv $@-t $@
+else
+stdint.h: $(top_builddir)/config.status
+ rm -f $@
+endif
MOSTLYCLEANFILES += stdint.h stdint.h-t
EXTRA_DIST += stdint.in.h
@@ -335,52 +364,63 @@ EXTRA_DIST += uniwidth/cjk.h
## end gnulib module uniwidth/width
-## begin gnulib module warn-on-use
-
-BUILT_SOURCES += warn-on-use.h
-# The warn-on-use.h that gets inserted into generated .h files is the same as
-# build-aux/warn-on-use.h, except that it has the copyright header cut off.
-warn-on-use.h: $(top_srcdir)/build-aux/warn-on-use.h
- $(AM_V_GEN)rm -f $@-t $@ && \
- sed -n -e '/^.ifndef/,$$p' \
- < $(top_srcdir)/build-aux/warn-on-use.h \
- > $@-t && \
- mv $@-t $@
-MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t
-
-WARN_ON_USE_H=warn-on-use.h
-
-EXTRA_DIST += $(top_srcdir)/build-aux/warn-on-use.h
-
-## end gnulib module warn-on-use
-
## begin gnulib module wchar
BUILT_SOURCES += wchar.h
# We need the following in order to create <wchar.h> when the system
# version does not work standalone.
-wchar.h: wchar.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+wchar.h: wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \
-e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
-e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
- -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
- -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
- -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
- -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
- -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
- -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
- -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
- -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
- -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
- -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
- -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
- -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+ -e 's/@''GNULIB_BTOWC''@/$(GNULIB_BTOWC)/g' \
+ -e 's/@''GNULIB_WCTOB''@/$(GNULIB_WCTOB)/g' \
+ -e 's/@''GNULIB_MBSINIT''@/$(GNULIB_MBSINIT)/g' \
+ -e 's/@''GNULIB_MBRTOWC''@/$(GNULIB_MBRTOWC)/g' \
+ -e 's/@''GNULIB_MBRLEN''@/$(GNULIB_MBRLEN)/g' \
+ -e 's/@''GNULIB_MBSRTOWCS''@/$(GNULIB_MBSRTOWCS)/g' \
+ -e 's/@''GNULIB_MBSNRTOWCS''@/$(GNULIB_MBSNRTOWCS)/g' \
+ -e 's/@''GNULIB_WCRTOMB''@/$(GNULIB_WCRTOMB)/g' \
+ -e 's/@''GNULIB_WCSRTOMBS''@/$(GNULIB_WCSRTOMBS)/g' \
+ -e 's/@''GNULIB_WCSNRTOMBS''@/$(GNULIB_WCSNRTOMBS)/g' \
+ -e 's/@''GNULIB_WCWIDTH''@/$(GNULIB_WCWIDTH)/g' \
+ -e 's/@''GNULIB_WMEMCHR''@/$(GNULIB_WMEMCHR)/g' \
+ -e 's/@''GNULIB_WMEMCMP''@/$(GNULIB_WMEMCMP)/g' \
+ -e 's/@''GNULIB_WMEMCPY''@/$(GNULIB_WMEMCPY)/g' \
+ -e 's/@''GNULIB_WMEMMOVE''@/$(GNULIB_WMEMMOVE)/g' \
+ -e 's/@''GNULIB_WMEMSET''@/$(GNULIB_WMEMSET)/g' \
+ -e 's/@''GNULIB_WCSLEN''@/$(GNULIB_WCSLEN)/g' \
+ -e 's/@''GNULIB_WCSNLEN''@/$(GNULIB_WCSNLEN)/g' \
+ -e 's/@''GNULIB_WCSCPY''@/$(GNULIB_WCSCPY)/g' \
+ -e 's/@''GNULIB_WCPCPY''@/$(GNULIB_WCPCPY)/g' \
+ -e 's/@''GNULIB_WCSNCPY''@/$(GNULIB_WCSNCPY)/g' \
+ -e 's/@''GNULIB_WCPNCPY''@/$(GNULIB_WCPNCPY)/g' \
+ -e 's/@''GNULIB_WCSCAT''@/$(GNULIB_WCSCAT)/g' \
+ -e 's/@''GNULIB_WCSNCAT''@/$(GNULIB_WCSNCAT)/g' \
+ -e 's/@''GNULIB_WCSCMP''@/$(GNULIB_WCSCMP)/g' \
+ -e 's/@''GNULIB_WCSNCMP''@/$(GNULIB_WCSNCMP)/g' \
+ -e 's/@''GNULIB_WCSCASECMP''@/$(GNULIB_WCSCASECMP)/g' \
+ -e 's/@''GNULIB_WCSNCASECMP''@/$(GNULIB_WCSNCASECMP)/g' \
+ -e 's/@''GNULIB_WCSCOLL''@/$(GNULIB_WCSCOLL)/g' \
+ -e 's/@''GNULIB_WCSXFRM''@/$(GNULIB_WCSXFRM)/g' \
+ -e 's/@''GNULIB_WCSDUP''@/$(GNULIB_WCSDUP)/g' \
+ -e 's/@''GNULIB_WCSCHR''@/$(GNULIB_WCSCHR)/g' \
+ -e 's/@''GNULIB_WCSRCHR''@/$(GNULIB_WCSRCHR)/g' \
+ -e 's/@''GNULIB_WCSCSPN''@/$(GNULIB_WCSCSPN)/g' \
+ -e 's/@''GNULIB_WCSSPN''@/$(GNULIB_WCSSPN)/g' \
+ -e 's/@''GNULIB_WCSPBRK''@/$(GNULIB_WCSPBRK)/g' \
+ -e 's/@''GNULIB_WCSSTR''@/$(GNULIB_WCSSTR)/g' \
+ -e 's/@''GNULIB_WCSTOK''@/$(GNULIB_WCSTOK)/g' \
+ -e 's/@''GNULIB_WCSWIDTH''@/$(GNULIB_WCSWIDTH)/g' \
+ < $(srcdir)/wchar.in.h | \
+ sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
-e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
-e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
-e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
@@ -390,9 +430,38 @@ wchar.h: wchar.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
-e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
-e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
-e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+ -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \
+ -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \
+ -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \
+ -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \
+ -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \
+ -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \
+ -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \
+ -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \
+ -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \
+ -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \
+ -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \
+ -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \
+ -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \
+ -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \
+ -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \
+ -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \
+ -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \
+ -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \
+ -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \
+ -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \
+ -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \
+ -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \
+ -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \
+ -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \
+ -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \
+ -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \
+ -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \
+ -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \
-e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
-e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
- -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+ | \
+ sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
-e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
-e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
-e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
@@ -404,10 +473,10 @@ wchar.h: wchar.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
-e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
-e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
-e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+ -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
- -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
- < $(srcdir)/wchar.in.h; \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
} > $@-t && \
mv $@-t $@
MOSTLYCLEANFILES += wchar.h wchar.h-t
@@ -416,25 +485,35 @@ EXTRA_DIST += wchar.in.h
## end gnulib module wchar
-## begin gnulib module wctype
+## begin gnulib module wctype-h
BUILT_SOURCES += wctype.h
+libgnu_a_SOURCES += wctype-h.c
# We need the following in order to create <wctype.h> when the system
# doesn't have one that works with the given compiler.
-wctype.h: wctype.in.h $(CXXDEFS_H) $(WARN_ON_USE_H)
+wctype.h: wctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
- sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+ -e 's/@''GNULIB_ISWBLANK''@/$(GNULIB_ISWBLANK)/g' \
+ -e 's/@''GNULIB_WCTYPE''@/$(GNULIB_WCTYPE)/g' \
+ -e 's/@''GNULIB_ISWCTYPE''@/$(GNULIB_ISWCTYPE)/g' \
+ -e 's/@''GNULIB_WCTRANS''@/$(GNULIB_WCTRANS)/g' \
+ -e 's/@''GNULIB_TOWCTRANS''@/$(GNULIB_TOWCTRANS)/g' \
-e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
-e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+ -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \
+ -e 's/@''HAVE_WCTRANS_T''@/$(HAVE_WCTRANS_T)/g' \
-e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
-e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \
-e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
+ -e 's/@''REPLACE_TOWLOWER''@/$(REPLACE_TOWLOWER)/g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
< $(srcdir)/wctype.in.h; \
@@ -444,7 +523,7 @@ MOSTLYCLEANFILES += wctype.h wctype.h-t
EXTRA_DIST += wctype.in.h
-## end gnulib module wctype
+## end gnulib module wctype-h
## begin gnulib module wcwidth
diff --git a/src/libs/gnulib/lib/Makefile.in b/src/libs/gnulib/lib/Makefile.in
index 40a7149..f32024c 100644
--- a/src/libs/gnulib/lib/Makefile.in
+++ b/src/libs/gnulib/lib/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -15,24 +14,52 @@
@SET_MAKE@
-# Copyright (C) 2002-2010 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+#
+# This file 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 3 of the License, or
+# (at your option) any later version.
+#
+# This file 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 this file. If not, see <http://www.gnu.org/licenses/>.
#
-# This file is free software, distributed under the terms of the GNU
-# General Public License. As a special exception to the GNU General
-# Public License, this file may be distributed as part of a program
-# that contains a configuration script generated by Autoconf, under
+# As a special exception to the GNU General Public License,
+# this file may be distributed as part of a program that
+# contains a configuration script generated by Autoconf, under
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=src/libs/gnulib --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-libtool --macro-prefix=gl wcwidth
+# Reproduce by: gnulib-tool --import --dir=src/libs/gnulib --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl wcwidth
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
@@ -50,21 +77,23 @@ host_triplet = @host@
@LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__append_1 = uniwidth/width.c
subdir = lib
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
+ $(srcdir)/Makefile.in $(top_srcdir)/build-aux/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
- $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/extensions.m4 \
- $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/glibc21.m4 \
- $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \
+ $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+ $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
$(top_srcdir)/m4/include_next.m4 \
+ $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
$(top_srcdir)/m4/libunistring-base.m4 \
$(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/longlong.m4 \
$(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/onceonly.m4 \
- $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
- $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wctype_h.m4 \
- $(top_srcdir)/m4/wcwidth.m4 $(top_srcdir)/m4/wint_t.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/warn-on-use.m4 \
+ $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
@@ -72,15 +101,14 @@ CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
-AR = ar
-ARFLAGS = cru
libgnu_a_AR = $(AR) $(ARFLAGS)
am__DEPENDENCIES_1 =
am__libgnu_a_SOURCES_DIST = localcharset.h localcharset.c \
- uniwidth/width.c
+ uniwidth/width.c wctype-h.c
am__dirstamp = $(am__leading_dot)dirstamp
@LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__objects_1 = uniwidth/width.$(OBJEXT)
-am_libgnu_a_OBJECTS = localcharset.$(OBJEXT) $(am__objects_1)
+am_libgnu_a_OBJECTS = localcharset.$(OBJEXT) $(am__objects_1) \
+ wctype-h.$(OBJEXT)
libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS)
LTLIBRARIES = $(noinst_LTLIBRARIES)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
@@ -100,6 +128,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
HEADERS = $(noinst_HEADERS)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
@@ -135,9 +168,12 @@ am__relativize = \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
+pkglibexecdir = @pkglibexecdir@
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+ARFLAGS = @ARFLAGS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -162,18 +198,59 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
GLIBC21 = @GLIBC21@
GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
GNULIB_MBRLEN = @GNULIB_MBRLEN@
GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
GNULIB_MBSINIT = @GNULIB_MBSINIT@
GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
GREP = @GREP@
HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
HAVE_FEATURES_H = @HAVE_FEATURES_H@
@@ -196,11 +273,42 @@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
HAVE_WCHAR_H = @HAVE_WCHAR_H@
HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE__BOOL = @HAVE__BOOL@
INCLUDE_NEXT = @INCLUDE_NEXT@
INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
INSTALL = @INSTALL@
@@ -208,6 +316,8 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
LDFLAGS = @LDFLAGS@
LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
@@ -219,10 +329,12 @@ LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
NEXT_STDDEF_H = @NEXT_STDDEF_H@
NEXT_STDINT_H = @NEXT_STDINT_H@
NEXT_WCHAR_H = @NEXT_WCHAR_H@
@@ -238,6 +350,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
RANLIB = @RANLIB@
REPLACE_BTOWC = @REPLACE_BTOWC@
@@ -250,18 +364,24 @@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
REPLACE_NULL = @REPLACE_NULL@
+REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@
+REPLACE_TOWLOWER = @REPLACE_TOWLOWER@
REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
REPLACE_WCTOB = @REPLACE_WCTOB@
REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
STDDEF_H = @STDDEF_H@
STDINT_H = @STDINT_H@
STRIP = @STRIP@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
VERSION = @VERSION@
WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
WINT_T_SUFFIX = @WINT_T_SUFFIX@
@@ -300,6 +420,7 @@ infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
+lispdir = @lispdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
@@ -322,12 +443,12 @@ SUBDIRS =
noinst_HEADERS =
noinst_LIBRARIES = libgnu.a
noinst_LTLIBRARIES =
-EXTRA_DIST = $(top_srcdir)/build-aux/arg-nonnull.h \
- $(top_srcdir)/build-aux/c++defs.h config.charset ref-add.sin \
- ref-del.sin stddef.in.h stdint.in.h streq.h unitypes.in.h \
- localcharset.h uniwidth.in.h uniwidth/cjk.h \
- $(top_srcdir)/build-aux/warn-on-use.h wchar.in.h wctype.in.h \
- wcwidth.c
+EXTRA_DIST = config.charset ref-add.sin ref-del.sin \
+ $(top_srcdir)/build-aux/snippet/arg-nonnull.h \
+ $(top_srcdir)/build-aux/snippet/c++defs.h \
+ $(top_srcdir)/build-aux/snippet/warn-on-use.h stddef.in.h \
+ stdint.in.h streq.h unitypes.in.h localcharset.h uniwidth.in.h \
+ uniwidth/cjk.h wchar.in.h wctype.in.h wcwidth.c
# The BUILT_SOURCES created by this Makefile snippet are not used via #include
# statements but through direct file reference. Therefore this snippet must be
@@ -338,14 +459,14 @@ EXTRA_DIST = $(top_srcdir)/build-aux/arg-nonnull.h \
# statements but through direct file reference. Therefore this snippet must be
# present in all Makefile.am that need it. This is ensured by the applicability
# 'all' defined above.
-BUILT_SOURCES = arg-nonnull.h c++defs.h configmake.h $(STDDEF_H) \
- $(STDINT_H) $(LIBUNISTRING_UNITYPES_H) \
- $(LIBUNISTRING_UNIWIDTH_H) warn-on-use.h wchar.h wctype.h
+BUILT_SOURCES = configmake.h arg-nonnull.h c++defs.h warn-on-use.h \
+ $(STDDEF_H) $(STDINT_H) $(LIBUNISTRING_UNITYPES_H) \
+ $(LIBUNISTRING_UNIWIDTH_H) wchar.h wctype.h
SUFFIXES = .sed .sin
MOSTLYCLEANFILES = core *.stackdump arg-nonnull.h arg-nonnull.h-t \
- c++defs.h c++defs.h-t stddef.h stddef.h-t stdint.h stdint.h-t \
- unitypes.h unitypes.h-t uniwidth.h uniwidth.h-t warn-on-use.h \
- warn-on-use.h-t wchar.h wchar.h-t wctype.h wctype.h-t
+ c++defs.h c++defs.h-t warn-on-use.h warn-on-use.h-t stddef.h \
+ stddef.h-t stdint.h stdint.h-t unitypes.h unitypes.h-t \
+ uniwidth.h uniwidth.h-t wchar.h wchar.h-t wctype.h wctype.h-t
MOSTLYCLEANDIRS =
CLEANFILES = configmake.h configmake.h-t charset.alias ref-add.sed \
ref-del.sed
@@ -353,14 +474,15 @@ DISTCLEANFILES =
MAINTAINERCLEANFILES =
AM_CPPFLAGS =
AM_CFLAGS =
-libgnu_a_SOURCES = localcharset.h localcharset.c $(am__append_1)
+libgnu_a_SOURCES = localcharset.h localcharset.c $(am__append_1) \
+ wctype-h.c
libgnu_a_LIBADD = $(gl_LIBOBJS)
libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
EXTRA_libgnu_a_SOURCES = wcwidth.c
-ARG_NONNULL_H = arg-nonnull.h
-CXXDEFS_H = c++defs.h
charset_alias = $(DESTDIR)$(libdir)/charset.alias
charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
+ARG_NONNULL_H = arg-nonnull.h
+CXXDEFS_H = c++defs.h
WARN_ON_USE_H = warn-on-use.h
all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -408,28 +530,31 @@ uniwidth/$(DEPDIR)/$(am__dirstamp):
@: > uniwidth/$(DEPDIR)/$(am__dirstamp)
uniwidth/width.$(OBJEXT): uniwidth/$(am__dirstamp) \
uniwidth/$(DEPDIR)/$(am__dirstamp)
-libgnu.a: $(libgnu_a_OBJECTS) $(libgnu_a_DEPENDENCIES)
+libgnu.a: $(libgnu_a_OBJECTS) $(libgnu_a_DEPENDENCIES) $(EXTRA_libgnu_a_DEPENDENCIES)
-rm -f libgnu.a
$(libgnu_a_AR) libgnu.a $(libgnu_a_OBJECTS) $(libgnu_a_LIBADD)
$(RANLIB) libgnu.a
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
mostlyclean-compile:
-rm -f *.$(OBJEXT)
- -rm -f uniwidth/width.$(OBJEXT)
+ -rm -f uniwidth/*.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localcharset.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wctype-h.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wcwidth.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@uniwidth/$(DEPDIR)/width.Po@am__quote@
@@ -450,12 +575,12 @@ distclean-compile:
@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
@@ -465,7 +590,11 @@ $(RECURSIVE_TARGETS):
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
@@ -479,37 +608,6 @@ $(RECURSIVE_TARGETS):
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
@@ -518,6 +616,10 @@ ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
+cscopelist-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+ done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -581,6 +683,20 @@ GTAGS:
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -616,13 +732,10 @@ distdir: $(DISTFILES)
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
@@ -659,10 +772,15 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
@@ -753,56 +871,28 @@ ps-am:
uninstall-am: uninstall-local
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
- ctags-recursive install install-am install-strip \
- tags-recursive
+ cscopelist-recursive ctags-recursive install install-am \
+ install-strip tags-recursive
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am all-local check check-am clean clean-generic \
- clean-noinstLIBRARIES clean-noinstLTLIBRARIES ctags \
- ctags-recursive distclean distclean-compile distclean-generic \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-exec-local \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-local pdf pdf-am ps ps-am tags \
- tags-recursive uninstall uninstall-am uninstall-local
-
-# The arg-nonnull.h that gets inserted into generated .h files is the same as
-# build-aux/arg-nonnull.h, except that it has the copyright header cut off.
-arg-nonnull.h: $(top_srcdir)/build-aux/arg-nonnull.h
- $(AM_V_GEN)rm -f $@-t $@ && \
- sed -n -e '/GL_ARG_NONNULL/,$$p' \
- < $(top_srcdir)/build-aux/arg-nonnull.h \
- > $@-t && \
- mv $@-t $@
-# The c++defs.h that gets inserted into generated .h files is the same as
-# build-aux/c++defs.h, except that it has the copyright header cut off.
-c++defs.h: $(top_srcdir)/build-aux/c++defs.h
- $(AM_V_GEN)rm -f $@-t $@ && \
- sed -n -e '/_GL_CXXDEFS/,$$p' \
- < $(top_srcdir)/build-aux/c++defs.h \
- > $@-t && \
- mv $@-t $@
-
-# Retrieve values of the variables through 'configure' followed by
-# 'make', not directly through 'configure', so that a user who
-# sets some of these variables consistently on the 'make' command
-# line gets correct results.
-#
-# One advantage of this approach, compared to the classical
-# approach of adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS,
-# is that it protects against the use of undefined variables.
-# If, say, $(libdir) is not set in the Makefile, LIBDIR is not
-# defined by this module, and code using LIBDIR gives a
-# compilation error.
-#
-# Another advantage is that 'make' output is shorter.
-#
-# Listed in the same order as the GNU makefile conventions.
+ clean-noinstLIBRARIES clean-noinstLTLIBRARIES cscopelist \
+ cscopelist-recursive ctags ctags-recursive distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-exec-local install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-local pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-local
+
+
+# Listed in the same order as the GNU makefile conventions, and
+# provided by autoconf 2.59c+.
# The Automake-defined pkg* macros are appended, in the order
# listed in the Automake 1.10a+ documentation.
configmake.h: Makefile
@@ -836,11 +926,7 @@ configmake.h: Makefile
echo '#define PKGLIBDIR "$(pkglibdir)"'; \
echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
} | sed '/""/d' > $@-t && \
- if test -f $@ && cmp $@-t $@ > /dev/null; then \
- rm -f $@-t; \
- else \
- rm -f $@; mv $@-t $@; \
- fi
+ mv -f $@-t $@
# We need the following in order to install a simple file in $(libdir)
# which is shared with other installed packages. We use a list of referencing
@@ -900,55 +986,88 @@ charset.alias: config.charset
$(AM_V_GEN)rm -f t-$@ $@ && \
sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@ && \
mv t-$@ $@
+# The arg-nonnull.h that gets inserted into generated .h files is the same as
+# build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut
+# off.
+arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ sed -n -e '/GL_ARG_NONNULL/,$$p' \
+ < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \
+ > $@-t && \
+ mv $@-t $@
+# The c++defs.h that gets inserted into generated .h files is the same as
+# build-aux/snippet/c++defs.h, except that it has the copyright header cut off.
+c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ sed -n -e '/_GL_CXXDEFS/,$$p' \
+ < $(top_srcdir)/build-aux/snippet/c++defs.h \
+ > $@-t && \
+ mv $@-t $@
+# The warn-on-use.h that gets inserted into generated .h files is the same as
+# build-aux/snippet/warn-on-use.h, except that it has the copyright header cut
+# off.
+warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ sed -n -e '/^.ifndef/,$$p' \
+ < $(top_srcdir)/build-aux/snippet/warn-on-use.h \
+ > $@-t && \
+ mv $@-t $@
# We need the following in order to create <stddef.h> when the system
# doesn't have one that works with the given compiler.
-stddef.h: stddef.in.h
- $(AM_V_GEN)rm -f $@-t $@ && \
- { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
- -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
- -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
- -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
- < $(srcdir)/stddef.in.h; \
- } > $@-t && \
- mv $@-t $@
+@GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status
+@GL_GENERATE_STDDEF_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_STDDEF_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+@GL_GENERATE_STDDEF_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ < $(srcdir)/stddef.in.h; \
+@GL_GENERATE_STDDEF_H_TRUE@ } > $@-t && \
+@GL_GENERATE_STDDEF_H_TRUE@ mv $@-t $@
+@GL_GENERATE_STDDEF_H_FALSE@stddef.h: $(top_builddir)/config.status
+@GL_GENERATE_STDDEF_H_FALSE@ rm -f $@
# We need the following in order to create <stdint.h> when the system
# doesn't have one that works with the given compiler.
-stdint.h: stdint.in.h
- $(AM_V_GEN)rm -f $@-t $@ && \
- { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
- sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
- -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
- -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
- -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
- -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
- -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
- -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
- -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
- -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
- -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
- -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
- -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
- -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
- -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
- -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
- -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
- -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
- -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
- -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
- -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
- -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
- -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
- -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
- -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
- -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
- < $(srcdir)/stdint.in.h; \
- } > $@-t && \
- mv $@-t $@
+@GL_GENERATE_STDINT_H_TRUE@stdint.h: stdint.in.h $(top_builddir)/config.status
+@GL_GENERATE_STDINT_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_STDINT_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+@GL_GENERATE_STDINT_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ < $(srcdir)/stdint.in.h; \
+@GL_GENERATE_STDINT_H_TRUE@ } > $@-t && \
+@GL_GENERATE_STDINT_H_TRUE@ mv $@-t $@
+@GL_GENERATE_STDINT_H_FALSE@stdint.h: $(top_builddir)/config.status
+@GL_GENERATE_STDINT_H_FALSE@ rm -f $@
unitypes.h: unitypes.in.h
$(AM_V_GEN)rm -f $@-t $@ && \
@@ -963,38 +1082,60 @@ uniwidth.h: uniwidth.in.h
cat $(srcdir)/uniwidth.in.h; \
} > $@-t && \
mv -f $@-t $@
-# The warn-on-use.h that gets inserted into generated .h files is the same as
-# build-aux/warn-on-use.h, except that it has the copyright header cut off.
-warn-on-use.h: $(top_srcdir)/build-aux/warn-on-use.h
- $(AM_V_GEN)rm -f $@-t $@ && \
- sed -n -e '/^.ifndef/,$$p' \
- < $(top_srcdir)/build-aux/warn-on-use.h \
- > $@-t && \
- mv $@-t $@
# We need the following in order to create <wchar.h> when the system
# version does not work standalone.
-wchar.h: wchar.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+wchar.h: wchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
- sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''HAVE_FEATURES_H''@|$(HAVE_FEATURES_H)|g' \
-e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
-e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
- -e 's|@''GNULIB_BTOWC''@|$(GNULIB_BTOWC)|g' \
- -e 's|@''GNULIB_WCTOB''@|$(GNULIB_WCTOB)|g' \
- -e 's|@''GNULIB_MBSINIT''@|$(GNULIB_MBSINIT)|g' \
- -e 's|@''GNULIB_MBRTOWC''@|$(GNULIB_MBRTOWC)|g' \
- -e 's|@''GNULIB_MBRLEN''@|$(GNULIB_MBRLEN)|g' \
- -e 's|@''GNULIB_MBSRTOWCS''@|$(GNULIB_MBSRTOWCS)|g' \
- -e 's|@''GNULIB_MBSNRTOWCS''@|$(GNULIB_MBSNRTOWCS)|g' \
- -e 's|@''GNULIB_WCRTOMB''@|$(GNULIB_WCRTOMB)|g' \
- -e 's|@''GNULIB_WCSRTOMBS''@|$(GNULIB_WCSRTOMBS)|g' \
- -e 's|@''GNULIB_WCSNRTOMBS''@|$(GNULIB_WCSNRTOMBS)|g' \
- -e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
- -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+ -e 's/@''GNULIB_BTOWC''@/$(GNULIB_BTOWC)/g' \
+ -e 's/@''GNULIB_WCTOB''@/$(GNULIB_WCTOB)/g' \
+ -e 's/@''GNULIB_MBSINIT''@/$(GNULIB_MBSINIT)/g' \
+ -e 's/@''GNULIB_MBRTOWC''@/$(GNULIB_MBRTOWC)/g' \
+ -e 's/@''GNULIB_MBRLEN''@/$(GNULIB_MBRLEN)/g' \
+ -e 's/@''GNULIB_MBSRTOWCS''@/$(GNULIB_MBSRTOWCS)/g' \
+ -e 's/@''GNULIB_MBSNRTOWCS''@/$(GNULIB_MBSNRTOWCS)/g' \
+ -e 's/@''GNULIB_WCRTOMB''@/$(GNULIB_WCRTOMB)/g' \
+ -e 's/@''GNULIB_WCSRTOMBS''@/$(GNULIB_WCSRTOMBS)/g' \
+ -e 's/@''GNULIB_WCSNRTOMBS''@/$(GNULIB_WCSNRTOMBS)/g' \
+ -e 's/@''GNULIB_WCWIDTH''@/$(GNULIB_WCWIDTH)/g' \
+ -e 's/@''GNULIB_WMEMCHR''@/$(GNULIB_WMEMCHR)/g' \
+ -e 's/@''GNULIB_WMEMCMP''@/$(GNULIB_WMEMCMP)/g' \
+ -e 's/@''GNULIB_WMEMCPY''@/$(GNULIB_WMEMCPY)/g' \
+ -e 's/@''GNULIB_WMEMMOVE''@/$(GNULIB_WMEMMOVE)/g' \
+ -e 's/@''GNULIB_WMEMSET''@/$(GNULIB_WMEMSET)/g' \
+ -e 's/@''GNULIB_WCSLEN''@/$(GNULIB_WCSLEN)/g' \
+ -e 's/@''GNULIB_WCSNLEN''@/$(GNULIB_WCSNLEN)/g' \
+ -e 's/@''GNULIB_WCSCPY''@/$(GNULIB_WCSCPY)/g' \
+ -e 's/@''GNULIB_WCPCPY''@/$(GNULIB_WCPCPY)/g' \
+ -e 's/@''GNULIB_WCSNCPY''@/$(GNULIB_WCSNCPY)/g' \
+ -e 's/@''GNULIB_WCPNCPY''@/$(GNULIB_WCPNCPY)/g' \
+ -e 's/@''GNULIB_WCSCAT''@/$(GNULIB_WCSCAT)/g' \
+ -e 's/@''GNULIB_WCSNCAT''@/$(GNULIB_WCSNCAT)/g' \
+ -e 's/@''GNULIB_WCSCMP''@/$(GNULIB_WCSCMP)/g' \
+ -e 's/@''GNULIB_WCSNCMP''@/$(GNULIB_WCSNCMP)/g' \
+ -e 's/@''GNULIB_WCSCASECMP''@/$(GNULIB_WCSCASECMP)/g' \
+ -e 's/@''GNULIB_WCSNCASECMP''@/$(GNULIB_WCSNCASECMP)/g' \
+ -e 's/@''GNULIB_WCSCOLL''@/$(GNULIB_WCSCOLL)/g' \
+ -e 's/@''GNULIB_WCSXFRM''@/$(GNULIB_WCSXFRM)/g' \
+ -e 's/@''GNULIB_WCSDUP''@/$(GNULIB_WCSDUP)/g' \
+ -e 's/@''GNULIB_WCSCHR''@/$(GNULIB_WCSCHR)/g' \
+ -e 's/@''GNULIB_WCSRCHR''@/$(GNULIB_WCSRCHR)/g' \
+ -e 's/@''GNULIB_WCSCSPN''@/$(GNULIB_WCSCSPN)/g' \
+ -e 's/@''GNULIB_WCSSPN''@/$(GNULIB_WCSSPN)/g' \
+ -e 's/@''GNULIB_WCSPBRK''@/$(GNULIB_WCSPBRK)/g' \
+ -e 's/@''GNULIB_WCSSTR''@/$(GNULIB_WCSSTR)/g' \
+ -e 's/@''GNULIB_WCSTOK''@/$(GNULIB_WCSTOK)/g' \
+ -e 's/@''GNULIB_WCSWIDTH''@/$(GNULIB_WCSWIDTH)/g' \
+ < $(srcdir)/wchar.in.h | \
+ sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
-e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
-e 's|@''HAVE_MBSINIT''@|$(HAVE_MBSINIT)|g' \
-e 's|@''HAVE_MBRTOWC''@|$(HAVE_MBRTOWC)|g' \
@@ -1004,9 +1145,38 @@ wchar.h: wchar.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
-e 's|@''HAVE_WCRTOMB''@|$(HAVE_WCRTOMB)|g' \
-e 's|@''HAVE_WCSRTOMBS''@|$(HAVE_WCSRTOMBS)|g' \
-e 's|@''HAVE_WCSNRTOMBS''@|$(HAVE_WCSNRTOMBS)|g' \
+ -e 's|@''HAVE_WMEMCHR''@|$(HAVE_WMEMCHR)|g' \
+ -e 's|@''HAVE_WMEMCMP''@|$(HAVE_WMEMCMP)|g' \
+ -e 's|@''HAVE_WMEMCPY''@|$(HAVE_WMEMCPY)|g' \
+ -e 's|@''HAVE_WMEMMOVE''@|$(HAVE_WMEMMOVE)|g' \
+ -e 's|@''HAVE_WMEMSET''@|$(HAVE_WMEMSET)|g' \
+ -e 's|@''HAVE_WCSLEN''@|$(HAVE_WCSLEN)|g' \
+ -e 's|@''HAVE_WCSNLEN''@|$(HAVE_WCSNLEN)|g' \
+ -e 's|@''HAVE_WCSCPY''@|$(HAVE_WCSCPY)|g' \
+ -e 's|@''HAVE_WCPCPY''@|$(HAVE_WCPCPY)|g' \
+ -e 's|@''HAVE_WCSNCPY''@|$(HAVE_WCSNCPY)|g' \
+ -e 's|@''HAVE_WCPNCPY''@|$(HAVE_WCPNCPY)|g' \
+ -e 's|@''HAVE_WCSCAT''@|$(HAVE_WCSCAT)|g' \
+ -e 's|@''HAVE_WCSNCAT''@|$(HAVE_WCSNCAT)|g' \
+ -e 's|@''HAVE_WCSCMP''@|$(HAVE_WCSCMP)|g' \
+ -e 's|@''HAVE_WCSNCMP''@|$(HAVE_WCSNCMP)|g' \
+ -e 's|@''HAVE_WCSCASECMP''@|$(HAVE_WCSCASECMP)|g' \
+ -e 's|@''HAVE_WCSNCASECMP''@|$(HAVE_WCSNCASECMP)|g' \
+ -e 's|@''HAVE_WCSCOLL''@|$(HAVE_WCSCOLL)|g' \
+ -e 's|@''HAVE_WCSXFRM''@|$(HAVE_WCSXFRM)|g' \
+ -e 's|@''HAVE_WCSDUP''@|$(HAVE_WCSDUP)|g' \
+ -e 's|@''HAVE_WCSCHR''@|$(HAVE_WCSCHR)|g' \
+ -e 's|@''HAVE_WCSRCHR''@|$(HAVE_WCSRCHR)|g' \
+ -e 's|@''HAVE_WCSCSPN''@|$(HAVE_WCSCSPN)|g' \
+ -e 's|@''HAVE_WCSSPN''@|$(HAVE_WCSSPN)|g' \
+ -e 's|@''HAVE_WCSPBRK''@|$(HAVE_WCSPBRK)|g' \
+ -e 's|@''HAVE_WCSSTR''@|$(HAVE_WCSSTR)|g' \
+ -e 's|@''HAVE_WCSTOK''@|$(HAVE_WCSTOK)|g' \
+ -e 's|@''HAVE_WCSWIDTH''@|$(HAVE_WCSWIDTH)|g' \
-e 's|@''HAVE_DECL_WCTOB''@|$(HAVE_DECL_WCTOB)|g' \
-e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
- -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
+ | \
+ sed -e 's|@''REPLACE_MBSTATE_T''@|$(REPLACE_MBSTATE_T)|g' \
-e 's|@''REPLACE_BTOWC''@|$(REPLACE_BTOWC)|g' \
-e 's|@''REPLACE_WCTOB''@|$(REPLACE_WCTOB)|g' \
-e 's|@''REPLACE_MBSINIT''@|$(REPLACE_MBSINIT)|g' \
@@ -1018,28 +1188,37 @@ wchar.h: wchar.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
-e 's|@''REPLACE_WCSRTOMBS''@|$(REPLACE_WCSRTOMBS)|g' \
-e 's|@''REPLACE_WCSNRTOMBS''@|$(REPLACE_WCSNRTOMBS)|g' \
-e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
+ -e 's|@''REPLACE_WCSWIDTH''@|$(REPLACE_WCSWIDTH)|g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
- -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
- < $(srcdir)/wchar.in.h; \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
} > $@-t && \
mv $@-t $@
# We need the following in order to create <wctype.h> when the system
# doesn't have one that works with the given compiler.
-wctype.h: wctype.in.h $(CXXDEFS_H) $(WARN_ON_USE_H)
+wctype.h: wctype.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
- sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+ -e 's/@''GNULIB_ISWBLANK''@/$(GNULIB_ISWBLANK)/g' \
+ -e 's/@''GNULIB_WCTYPE''@/$(GNULIB_WCTYPE)/g' \
+ -e 's/@''GNULIB_ISWCTYPE''@/$(GNULIB_ISWCTYPE)/g' \
+ -e 's/@''GNULIB_WCTRANS''@/$(GNULIB_WCTRANS)/g' \
+ -e 's/@''GNULIB_TOWCTRANS''@/$(GNULIB_TOWCTRANS)/g' \
-e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
-e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+ -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \
+ -e 's/@''HAVE_WCTRANS_T''@/$(HAVE_WCTRANS_T)/g' \
-e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
-e 's/@''REPLACE_ISWBLANK''@/$(REPLACE_ISWBLANK)/g' \
-e 's/@''REPLACE_ISWCNTRL''@/$(REPLACE_ISWCNTRL)/g' \
+ -e 's/@''REPLACE_TOWLOWER''@/$(REPLACE_TOWLOWER)/g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
< $(srcdir)/wctype.in.h; \
diff --git a/src/libs/gnulib/lib/config.charset b/src/libs/gnulib/lib/config.charset
index aa7d00d..a991419 100644
--- a/src/libs/gnulib/lib/config.charset
+++ b/src/libs/gnulib/lib/config.charset
@@ -1,7 +1,7 @@
#! /bin/sh
# Output a system dependent table of character encoding aliases.
#
-# Copyright (C) 2000-2004, 2006-2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2004, 2006-2013 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -14,8 +14,7 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# with this program; if not, see <http://www.gnu.org/licenses/>.
#
# The table consists of lines of the form
# ALIAS CANONICAL
@@ -30,6 +29,8 @@
# The current list of GNU canonical charset names is as follows.
#
# name MIME? used by which systems
+# (darwin = Mac OS X, woe32 = native Windows)
+#
# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin cygwin
# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
diff --git a/src/libs/gnulib/lib/intprops.h b/src/libs/gnulib/lib/intprops.h
new file mode 100644
index 0000000..b473052
--- /dev/null
+++ b/src/libs/gnulib/lib/intprops.h
@@ -0,0 +1,319 @@
+/* intprops.h -- properties of integer types
+
+ Copyright (C) 2001-2005, 2009-2013 Free Software Foundation, Inc.
+
+ This program 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 3 of the License, or
+ (at your option) any later version.
+
+ This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Paul Eggert. */
+
+#ifndef _GL_INTPROPS_H
+#define _GL_INTPROPS_H
+
+#include <limits.h>
+
+/* Return an integer value, converted to the same type as the integer
+ expression E after integer type promotion. V is the unconverted value. */
+#define _GL_INT_CONVERT(e, v) (0 * (e) + (v))
+
+/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00406.html>. */
+#define _GL_INT_NEGATE_CONVERT(e, v) (0 * (e) - (v))
+
+/* The extra casts in the following macros work around compiler bugs,
+ e.g., in Cray C 5.0.3.0. */
+
+/* True if the arithmetic type T is an integer type. bool counts as
+ an integer. */
+#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
+
+/* True if negative values of the signed integer type T use two's
+ complement, ones' complement, or signed magnitude representation,
+ respectively. Much GNU code assumes two's complement, but some
+ people like to be portable to all possible C hosts. */
+#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
+#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
+
+/* True if the signed integer expression E uses two's complement. */
+#define _GL_INT_TWOS_COMPLEMENT(e) (~ _GL_INT_CONVERT (e, 0) == -1)
+
+/* True if the arithmetic type T is signed. */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* Return 1 if the integer expression E, after integer promotion, has
+ a signed type. */
+#define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0)
+
+
+/* Minimum and maximum values for integer types and expressions. These
+ macros have undefined behavior if T is signed and has padding bits.
+ If this is a problem for you, please let us know how to fix it for
+ your host. */
+
+/* The maximum and minimum values for the integer type T. */
+#define TYPE_MINIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) 0 \
+ : TYPE_SIGNED_MAGNITUDE (t) \
+ ? ~ (t) 0 \
+ : ~ TYPE_MAXIMUM (t)))
+#define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
+ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
+
+/* The maximum and minimum values for the type of the expression E,
+ after integer promotion. E should not have side effects. */
+#define _GL_INT_MINIMUM(e) \
+ (_GL_INT_SIGNED (e) \
+ ? - _GL_INT_TWOS_COMPLEMENT (e) - _GL_SIGNED_INT_MAXIMUM (e) \
+ : _GL_INT_CONVERT (e, 0))
+#define _GL_INT_MAXIMUM(e) \
+ (_GL_INT_SIGNED (e) \
+ ? _GL_SIGNED_INT_MAXIMUM (e) \
+ : _GL_INT_NEGATE_CONVERT (e, 1))
+#define _GL_SIGNED_INT_MAXIMUM(e) \
+ (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1)
+
+
+/* Return 1 if the __typeof__ keyword works. This could be done by
+ 'configure', but for now it's easier to do it by hand. */
+#if 2 <= __GNUC__ || 0x5110 <= __SUNPRO_C
+# define _GL_HAVE___TYPEOF__ 1
+#else
+# define _GL_HAVE___TYPEOF__ 0
+#endif
+
+/* Return 1 if the integer type or expression T might be signed. Return 0
+ if it is definitely unsigned. This macro does not evaluate its argument,
+ and expands to an integer constant expression. */
+#if _GL_HAVE___TYPEOF__
+# define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t))
+#else
+# define _GL_SIGNED_TYPE_OR_EXPR(t) 1
+#endif
+
+/* Bound on length of the string representing an unsigned integer
+ value representable in B bits. log10 (2.0) < 146/485. The
+ smallest value of B where this bound is not tight is 2621. */
+#define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485)
+
+/* Bound on length of the string representing an integer type or expression T.
+ Subtract 1 for the sign bit if T is signed, and then add 1 more for
+ a minus sign if needed.
+
+ Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 0 when its argument is
+ signed, this macro may overestimate the true bound by one byte when
+ applied to unsigned types of size 2, 4, 16, ... bytes. */
+#define INT_STRLEN_BOUND(t) \
+ (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT \
+ - _GL_SIGNED_TYPE_OR_EXPR (t)) \
+ + _GL_SIGNED_TYPE_OR_EXPR (t))
+
+/* Bound on buffer size needed to represent an integer type or expression T,
+ including the terminating null. */
+#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
+
+
+/* Range overflow checks.
+
+ The INT_<op>_RANGE_OVERFLOW macros return 1 if the corresponding C
+ operators might not yield numerically correct answers due to
+ arithmetic overflow. They do not rely on undefined or
+ implementation-defined behavior. Their implementations are simple
+ and straightforward, but they are a bit harder to use than the
+ INT_<op>_OVERFLOW macros described below.
+
+ Example usage:
+
+ long int i = ...;
+ long int j = ...;
+ if (INT_MULTIPLY_RANGE_OVERFLOW (i, j, LONG_MIN, LONG_MAX))
+ printf ("multiply would overflow");
+ else
+ printf ("product is %ld", i * j);
+
+ Restrictions on *_RANGE_OVERFLOW macros:
+
+ These macros do not check for all possible numerical problems or
+ undefined or unspecified behavior: they do not check for division
+ by zero, for bad shift counts, or for shifting negative numbers.
+
+ These macros may evaluate their arguments zero or multiple times,
+ so the arguments should not have side effects. The arithmetic
+ arguments (including the MIN and MAX arguments) must be of the same
+ integer type after the usual arithmetic conversions, and the type
+ must have minimum value MIN and maximum MAX. Unsigned types should
+ use a zero MIN of the proper type.
+
+ These macros are tuned for constant MIN and MAX. For commutative
+ operations such as A + B, they are also tuned for constant B. */
+
+/* Return 1 if A + B would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. */
+#define INT_ADD_RANGE_OVERFLOW(a, b, min, max) \
+ ((b) < 0 \
+ ? (a) < (min) - (b) \
+ : (max) - (b) < (a))
+
+/* Return 1 if A - B would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. */
+#define INT_SUBTRACT_RANGE_OVERFLOW(a, b, min, max) \
+ ((b) < 0 \
+ ? (max) + (b) < (a) \
+ : (a) < (min) + (b))
+
+/* Return 1 if - A would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. */
+#define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \
+ ((min) < 0 \
+ ? (a) < - (max) \
+ : 0 < (a))
+
+/* Return 1 if A * B would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. Avoid && and || as they tickle
+ bugs in Sun C 5.11 2010/08/13 and other compilers; see
+ <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00401.html>. */
+#define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max) \
+ ((b) < 0 \
+ ? ((a) < 0 \
+ ? (a) < (max) / (b) \
+ : (b) == -1 \
+ ? 0 \
+ : (min) / (b) < (a)) \
+ : (b) == 0 \
+ ? 0 \
+ : ((a) < 0 \
+ ? (a) < (min) / (b) \
+ : (max) / (b) < (a)))
+
+/* Return 1 if A / B would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. Do not check for division by zero. */
+#define INT_DIVIDE_RANGE_OVERFLOW(a, b, min, max) \
+ ((min) < 0 && (b) == -1 && (a) < - (max))
+
+/* Return 1 if A % B would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. Do not check for division by zero.
+ Mathematically, % should never overflow, but on x86-like hosts
+ INT_MIN % -1 traps, and the C standard permits this, so treat this
+ as an overflow too. */
+#define INT_REMAINDER_RANGE_OVERFLOW(a, b, min, max) \
+ INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max)
+
+/* Return 1 if A << B would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. Here, MIN and MAX are for A only, and B need
+ not be of the same type as the other arguments. The C standard says that
+ behavior is undefined for shifts unless 0 <= B < wordwidth, and that when
+ A is negative then A << B has undefined behavior and A >> B has
+ implementation-defined behavior, but do not check these other
+ restrictions. */
+#define INT_LEFT_SHIFT_RANGE_OVERFLOW(a, b, min, max) \
+ ((a) < 0 \
+ ? (a) < (min) >> (b) \
+ : (max) >> (b) < (a))
+
+
+/* The _GL*_OVERFLOW macros have the same restrictions as the
+ *_RANGE_OVERFLOW macros, except that they do not assume that operands
+ (e.g., A and B) have the same type as MIN and MAX. Instead, they assume
+ that the result (e.g., A + B) has that type. */
+#define _GL_ADD_OVERFLOW(a, b, min, max) \
+ ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \
+ : (a) < 0 ? (b) <= (a) + (b) \
+ : (b) < 0 ? (a) <= (a) + (b) \
+ : (a) + (b) < (b))
+#define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \
+ ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \
+ : (a) < 0 ? 1 \
+ : (b) < 0 ? (a) - (b) <= (a) \
+ : (a) < (b))
+#define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \
+ (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \
+ || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max))
+#define _GL_DIVIDE_OVERFLOW(a, b, min, max) \
+ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \
+ : (a) < 0 ? (b) <= (a) + (b) - 1 \
+ : (b) < 0 && (a) + (b) <= (a))
+#define _GL_REMAINDER_OVERFLOW(a, b, min, max) \
+ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \
+ : (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b) \
+ : (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max))
+
+/* Return a nonzero value if A is a mathematical multiple of B, where
+ A is unsigned, B is negative, and MAX is the maximum value of A's
+ type. A's type must be the same as (A % B)'s type. Normally (A %
+ -B == 0) suffices, but things get tricky if -B would overflow. */
+#define _GL_UNSIGNED_NEG_MULTIPLE(a, b, max) \
+ (((b) < -_GL_SIGNED_INT_MAXIMUM (b) \
+ ? (_GL_SIGNED_INT_MAXIMUM (b) == (max) \
+ ? (a) \
+ : (a) % (_GL_INT_CONVERT (a, _GL_SIGNED_INT_MAXIMUM (b)) + 1)) \
+ : (a) % - (b)) \
+ == 0)
+
+
+/* Integer overflow checks.
+
+ The INT_<op>_OVERFLOW macros return 1 if the corresponding C operators
+ might not yield numerically correct answers due to arithmetic overflow.
+ They work correctly on all known practical hosts, and do not rely
+ on undefined behavior due to signed arithmetic overflow.
+
+ Example usage:
+
+ long int i = ...;
+ long int j = ...;
+ if (INT_MULTIPLY_OVERFLOW (i, j))
+ printf ("multiply would overflow");
+ else
+ printf ("product is %ld", i * j);
+
+ These macros do not check for all possible numerical problems or
+ undefined or unspecified behavior: they do not check for division
+ by zero, for bad shift counts, or for shifting negative numbers.
+
+ These macros may evaluate their arguments zero or multiple times, so the
+ arguments should not have side effects.
+
+ These macros are tuned for their last argument being a constant.
+
+ Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B,
+ A % B, and A << B would overflow, respectively. */
+
+#define INT_ADD_OVERFLOW(a, b) \
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW)
+#define INT_SUBTRACT_OVERFLOW(a, b) \
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW)
+#define INT_NEGATE_OVERFLOW(a) \
+ INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
+#define INT_MULTIPLY_OVERFLOW(a, b) \
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW)
+#define INT_DIVIDE_OVERFLOW(a, b) \
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_DIVIDE_OVERFLOW)
+#define INT_REMAINDER_OVERFLOW(a, b) \
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_REMAINDER_OVERFLOW)
+#define INT_LEFT_SHIFT_OVERFLOW(a, b) \
+ INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, \
+ _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
+
+/* Return 1 if the expression A <op> B would overflow,
+ where OP_RESULT_OVERFLOW (A, B, MIN, MAX) does the actual test,
+ assuming MIN and MAX are the minimum and maximum for the result type.
+ Arguments should be free of side effects. */
+#define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow) \
+ op_result_overflow (a, b, \
+ _GL_INT_MINIMUM (0 * (b) + (a)), \
+ _GL_INT_MAXIMUM (0 * (b) + (a)))
+
+#endif /* _GL_INTPROPS_H */
diff --git a/src/libs/gnulib/lib/inttypes.in.h b/src/libs/gnulib/lib/inttypes.in.h
new file mode 100644
index 0000000..1893f55
--- /dev/null
+++ b/src/libs/gnulib/lib/inttypes.in.h
@@ -0,0 +1,1130 @@
+/* Copyright (C) 2006-2013 Free Software Foundation, Inc.
+ Written by Paul Eggert, Bruno Haible, Derek Price.
+ This file is part of gnulib.
+
+ This program 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 3 of the License, or
+ (at your option) any later version.
+
+ This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C 99 <inttypes.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/inttypes.h.html>
+ */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* Include the original <inttypes.h> if it exists, and if this file
+ has not been included yet or if this file includes gnulib stdint.h
+ which in turn includes this file.
+ The include_next requires a split double-inclusion guard. */
+#if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+# if @HAVE_INTTYPES_H@
+
+ /* Some pre-C++11 <stdint.h> implementations need this. */
+# if defined __cplusplus && ! defined __STDC_FORMAT_MACROS
+# define __STDC_FORMAT_MACROS 1
+# endif
+
+# @INCLUDE_NEXT@ @NEXT_INTTYPES_H@
+# endif
+#endif
+
+#if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+#define INTTYPES_H
+
+/* Include <stdint.h> or the gnulib replacement.
+ But avoid namespace pollution on glibc systems. */
+#ifndef __GLIBC__
+# include <stdint.h>
+#endif
+/* Get CHAR_BIT. */
+#include <limits.h>
+
+#if !(INT_MIN == INT32_MIN && INT_MAX == INT32_MAX)
+# error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib@gnu.org>."
+#endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
+
+/* The definition of _GL_ARG_NONNULL is copied here. */
+
+/* The definition of _GL_WARN_ON_USE is copied here. */
+
+/* 7.8.1 Macros for format specifiers */
+
+#if defined _TNS_R_TARGET
+ /* Tandem NonStop R series and compatible platforms released before
+ July 2005 support %Ld but not %lld. */
+# define _LONG_LONG_FORMAT_PREFIX "L"
+#else
+# define _LONG_LONG_FORMAT_PREFIX "ll"
+#endif
+
+#if !defined PRId8 || @PRI_MACROS_BROKEN@
+# undef PRId8
+# ifdef INT8_MAX
+# define PRId8 "d"
+# endif
+#endif
+#if !defined PRIi8 || @PRI_MACROS_BROKEN@
+# undef PRIi8
+# ifdef INT8_MAX
+# define PRIi8 "i"
+# endif
+#endif
+#if !defined PRIo8 || @PRI_MACROS_BROKEN@
+# undef PRIo8
+# ifdef UINT8_MAX
+# define PRIo8 "o"
+# endif
+#endif
+#if !defined PRIu8 || @PRI_MACROS_BROKEN@
+# undef PRIu8
+# ifdef UINT8_MAX
+# define PRIu8 "u"
+# endif
+#endif
+#if !defined PRIx8 || @PRI_MACROS_BROKEN@
+# undef PRIx8
+# ifdef UINT8_MAX
+# define PRIx8 "x"
+# endif
+#endif
+#if !defined PRIX8 || @PRI_MACROS_BROKEN@
+# undef PRIX8
+# ifdef UINT8_MAX
+# define PRIX8 "X"
+# endif
+#endif
+#if !defined PRId16 || @PRI_MACROS_BROKEN@
+# undef PRId16
+# ifdef INT16_MAX
+# define PRId16 "d"
+# endif
+#endif
+#if !defined PRIi16 || @PRI_MACROS_BROKEN@
+# undef PRIi16
+# ifdef INT16_MAX
+# define PRIi16 "i"
+# endif
+#endif
+#if !defined PRIo16 || @PRI_MACROS_BROKEN@
+# undef PRIo16
+# ifdef UINT16_MAX
+# define PRIo16 "o"
+# endif
+#endif
+#if !defined PRIu16 || @PRI_MACROS_BROKEN@
+# undef PRIu16
+# ifdef UINT16_MAX
+# define PRIu16 "u"
+# endif
+#endif
+#if !defined PRIx16 || @PRI_MACROS_BROKEN@
+# undef PRIx16
+# ifdef UINT16_MAX
+# define PRIx16 "x"
+# endif
+#endif
+#if !defined PRIX16 || @PRI_MACROS_BROKEN@
+# undef PRIX16
+# ifdef UINT16_MAX
+# define PRIX16 "X"
+# endif
+#endif
+#if !defined PRId32 || @PRI_MACROS_BROKEN@
+# undef PRId32
+# ifdef INT32_MAX
+# define PRId32 "d"
+# endif
+#endif
+#if !defined PRIi32 || @PRI_MACROS_BROKEN@
+# undef PRIi32
+# ifdef INT32_MAX
+# define PRIi32 "i"
+# endif
+#endif
+#if !defined PRIo32 || @PRI_MACROS_BROKEN@
+# undef PRIo32
+# ifdef UINT32_MAX
+# define PRIo32 "o"
+# endif
+#endif
+#if !defined PRIu32 || @PRI_MACROS_BROKEN@
+# undef PRIu32
+# ifdef UINT32_MAX
+# define PRIu32 "u"
+# endif
+#endif
+#if !defined PRIx32 || @PRI_MACROS_BROKEN@
+# undef PRIx32
+# ifdef UINT32_MAX
+# define PRIx32 "x"
+# endif
+#endif
+#if !defined PRIX32 || @PRI_MACROS_BROKEN@
+# undef PRIX32
+# ifdef UINT32_MAX
+# define PRIX32 "X"
+# endif
+#endif
+#ifdef INT64_MAX
+# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@)
+# define _PRI64_PREFIX "l"
+# elif defined _MSC_VER || defined __MINGW32__
+# define _PRI64_PREFIX "I64"
+# elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX
+# endif
+# if !defined PRId64 || @PRI_MACROS_BROKEN@
+# undef PRId64
+# define PRId64 _PRI64_PREFIX "d"
+# endif
+# if !defined PRIi64 || @PRI_MACROS_BROKEN@
+# undef PRIi64
+# define PRIi64 _PRI64_PREFIX "i"
+# endif
+#endif
+#ifdef UINT64_MAX
+# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
+# define _PRIu64_PREFIX "l"
+# elif defined _MSC_VER || defined __MINGW32__
+# define _PRIu64_PREFIX "I64"
+# elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX
+# endif
+# if !defined PRIo64 || @PRI_MACROS_BROKEN@
+# undef PRIo64
+# define PRIo64 _PRIu64_PREFIX "o"
+# endif
+# if !defined PRIu64 || @PRI_MACROS_BROKEN@
+# undef PRIu64
+# define PRIu64 _PRIu64_PREFIX "u"
+# endif
+# if !defined PRIx64 || @PRI_MACROS_BROKEN@
+# undef PRIx64
+# define PRIx64 _PRIu64_PREFIX "x"
+# endif
+# if !defined PRIX64 || @PRI_MACROS_BROKEN@
+# undef PRIX64
+# define PRIX64 _PRIu64_PREFIX "X"
+# endif
+#endif
+
+#if !defined PRIdLEAST8 || @PRI_MACROS_BROKEN@
+# undef PRIdLEAST8
+# define PRIdLEAST8 "d"
+#endif
+#if !defined PRIiLEAST8 || @PRI_MACROS_BROKEN@
+# undef PRIiLEAST8
+# define PRIiLEAST8 "i"
+#endif
+#if !defined PRIoLEAST8 || @PRI_MACROS_BROKEN@
+# undef PRIoLEAST8
+# define PRIoLEAST8 "o"
+#endif
+#if !defined PRIuLEAST8 || @PRI_MACROS_BROKEN@
+# undef PRIuLEAST8
+# define PRIuLEAST8 "u"
+#endif
+#if !defined PRIxLEAST8 || @PRI_MACROS_BROKEN@
+# undef PRIxLEAST8
+# define PRIxLEAST8 "x"
+#endif
+#if !defined PRIXLEAST8 || @PRI_MACROS_BROKEN@
+# undef PRIXLEAST8
+# define PRIXLEAST8 "X"
+#endif
+#if !defined PRIdLEAST16 || @PRI_MACROS_BROKEN@
+# undef PRIdLEAST16
+# define PRIdLEAST16 "d"
+#endif
+#if !defined PRIiLEAST16 || @PRI_MACROS_BROKEN@
+# undef PRIiLEAST16
+# define PRIiLEAST16 "i"
+#endif
+#if !defined PRIoLEAST16 || @PRI_MACROS_BROKEN@
+# undef PRIoLEAST16
+# define PRIoLEAST16 "o"
+#endif
+#if !defined PRIuLEAST16 || @PRI_MACROS_BROKEN@
+# undef PRIuLEAST16
+# define PRIuLEAST16 "u"
+#endif
+#if !defined PRIxLEAST16 || @PRI_MACROS_BROKEN@
+# undef PRIxLEAST16
+# define PRIxLEAST16 "x"
+#endif
+#if !defined PRIXLEAST16 || @PRI_MACROS_BROKEN@
+# undef PRIXLEAST16
+# define PRIXLEAST16 "X"
+#endif
+#if !defined PRIdLEAST32 || @PRI_MACROS_BROKEN@
+# undef PRIdLEAST32
+# define PRIdLEAST32 "d"
+#endif
+#if !defined PRIiLEAST32 || @PRI_MACROS_BROKEN@
+# undef PRIiLEAST32
+# define PRIiLEAST32 "i"
+#endif
+#if !defined PRIoLEAST32 || @PRI_MACROS_BROKEN@
+# undef PRIoLEAST32
+# define PRIoLEAST32 "o"
+#endif
+#if !defined PRIuLEAST32 || @PRI_MACROS_BROKEN@
+# undef PRIuLEAST32
+# define PRIuLEAST32 "u"
+#endif
+#if !defined PRIxLEAST32 || @PRI_MACROS_BROKEN@
+# undef PRIxLEAST32
+# define PRIxLEAST32 "x"
+#endif
+#if !defined PRIXLEAST32 || @PRI_MACROS_BROKEN@
+# undef PRIXLEAST32
+# define PRIXLEAST32 "X"
+#endif
+#ifdef INT64_MAX
+# if !defined PRIdLEAST64 || @PRI_MACROS_BROKEN@
+# undef PRIdLEAST64
+# define PRIdLEAST64 PRId64
+# endif
+# if !defined PRIiLEAST64 || @PRI_MACROS_BROKEN@
+# undef PRIiLEAST64
+# define PRIiLEAST64 PRIi64
+# endif
+#endif
+#ifdef UINT64_MAX
+# if !defined PRIoLEAST64 || @PRI_MACROS_BROKEN@
+# undef PRIoLEAST64
+# define PRIoLEAST64 PRIo64
+# endif
+# if !defined PRIuLEAST64 || @PRI_MACROS_BROKEN@
+# undef PRIuLEAST64
+# define PRIuLEAST64 PRIu64
+# endif
+# if !defined PRIxLEAST64 || @PRI_MACROS_BROKEN@
+# undef PRIxLEAST64
+# define PRIxLEAST64 PRIx64
+# endif
+# if !defined PRIXLEAST64 || @PRI_MACROS_BROKEN@
+# undef PRIXLEAST64
+# define PRIXLEAST64 PRIX64
+# endif
+#endif
+
+#if !defined PRIdFAST8 || @PRI_MACROS_BROKEN@
+# undef PRIdFAST8
+# if INT_FAST8_MAX > INT32_MAX
+# define PRIdFAST8 PRId64
+# else
+# define PRIdFAST8 "d"
+# endif
+#endif
+#if !defined PRIiFAST8 || @PRI_MACROS_BROKEN@
+# undef PRIiFAST8
+# if INT_FAST8_MAX > INT32_MAX
+# define PRIiFAST8 PRIi64
+# else
+# define PRIiFAST8 "i"
+# endif
+#endif
+#if !defined PRIoFAST8 || @PRI_MACROS_BROKEN@
+# undef PRIoFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define PRIoFAST8 PRIo64
+# else
+# define PRIoFAST8 "o"
+# endif
+#endif
+#if !defined PRIuFAST8 || @PRI_MACROS_BROKEN@
+# undef PRIuFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define PRIuFAST8 PRIu64
+# else
+# define PRIuFAST8 "u"
+# endif
+#endif
+#if !defined PRIxFAST8 || @PRI_MACROS_BROKEN@
+# undef PRIxFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define PRIxFAST8 PRIx64
+# else
+# define PRIxFAST8 "x"
+# endif
+#endif
+#if !defined PRIXFAST8 || @PRI_MACROS_BROKEN@
+# undef PRIXFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define PRIXFAST8 PRIX64
+# else
+# define PRIXFAST8 "X"
+# endif
+#endif
+#if !defined PRIdFAST16 || @PRI_MACROS_BROKEN@
+# undef PRIdFAST16
+# if INT_FAST16_MAX > INT32_MAX
+# define PRIdFAST16 PRId64
+# else
+# define PRIdFAST16 "d"
+# endif
+#endif
+#if !defined PRIiFAST16 || @PRI_MACROS_BROKEN@
+# undef PRIiFAST16
+# if INT_FAST16_MAX > INT32_MAX
+# define PRIiFAST16 PRIi64
+# else
+# define PRIiFAST16 "i"
+# endif
+#endif
+#if !defined PRIoFAST16 || @PRI_MACROS_BROKEN@
+# undef PRIoFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define PRIoFAST16 PRIo64
+# else
+# define PRIoFAST16 "o"
+# endif
+#endif
+#if !defined PRIuFAST16 || @PRI_MACROS_BROKEN@
+# undef PRIuFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define PRIuFAST16 PRIu64
+# else
+# define PRIuFAST16 "u"
+# endif
+#endif
+#if !defined PRIxFAST16 || @PRI_MACROS_BROKEN@
+# undef PRIxFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define PRIxFAST16 PRIx64
+# else
+# define PRIxFAST16 "x"
+# endif
+#endif
+#if !defined PRIXFAST16 || @PRI_MACROS_BROKEN@
+# undef PRIXFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define PRIXFAST16 PRIX64
+# else
+# define PRIXFAST16 "X"
+# endif
+#endif
+#if !defined PRIdFAST32 || @PRI_MACROS_BROKEN@
+# undef PRIdFAST32
+# if INT_FAST32_MAX > INT32_MAX
+# define PRIdFAST32 PRId64
+# else
+# define PRIdFAST32 "d"
+# endif
+#endif
+#if !defined PRIiFAST32 || @PRI_MACROS_BROKEN@
+# undef PRIiFAST32
+# if INT_FAST32_MAX > INT32_MAX
+# define PRIiFAST32 PRIi64
+# else
+# define PRIiFAST32 "i"
+# endif
+#endif
+#if !defined PRIoFAST32 || @PRI_MACROS_BROKEN@
+# undef PRIoFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define PRIoFAST32 PRIo64
+# else
+# define PRIoFAST32 "o"
+# endif
+#endif
+#if !defined PRIuFAST32 || @PRI_MACROS_BROKEN@
+# undef PRIuFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define PRIuFAST32 PRIu64
+# else
+# define PRIuFAST32 "u"
+# endif
+#endif
+#if !defined PRIxFAST32 || @PRI_MACROS_BROKEN@
+# undef PRIxFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define PRIxFAST32 PRIx64
+# else
+# define PRIxFAST32 "x"
+# endif
+#endif
+#if !defined PRIXFAST32 || @PRI_MACROS_BROKEN@
+# undef PRIXFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define PRIXFAST32 PRIX64
+# else
+# define PRIXFAST32 "X"
+# endif
+#endif
+#ifdef INT64_MAX
+# if !defined PRIdFAST64 || @PRI_MACROS_BROKEN@
+# undef PRIdFAST64
+# define PRIdFAST64 PRId64
+# endif
+# if !defined PRIiFAST64 || @PRI_MACROS_BROKEN@
+# undef PRIiFAST64
+# define PRIiFAST64 PRIi64
+# endif
+#endif
+#ifdef UINT64_MAX
+# if !defined PRIoFAST64 || @PRI_MACROS_BROKEN@
+# undef PRIoFAST64
+# define PRIoFAST64 PRIo64
+# endif
+# if !defined PRIuFAST64 || @PRI_MACROS_BROKEN@
+# undef PRIuFAST64
+# define PRIuFAST64 PRIu64
+# endif
+# if !defined PRIxFAST64 || @PRI_MACROS_BROKEN@
+# undef PRIxFAST64
+# define PRIxFAST64 PRIx64
+# endif
+# if !defined PRIXFAST64 || @PRI_MACROS_BROKEN@
+# undef PRIXFAST64
+# define PRIXFAST64 PRIX64
+# endif
+#endif
+
+#if !defined PRIdMAX || @PRI_MACROS_BROKEN@
+# undef PRIdMAX
+# if @INT32_MAX_LT_INTMAX_MAX@
+# define PRIdMAX PRId64
+# else
+# define PRIdMAX "ld"
+# endif
+#endif
+#if !defined PRIiMAX || @PRI_MACROS_BROKEN@
+# undef PRIiMAX
+# if @INT32_MAX_LT_INTMAX_MAX@
+# define PRIiMAX PRIi64
+# else
+# define PRIiMAX "li"
+# endif
+#endif
+#if !defined PRIoMAX || @PRI_MACROS_BROKEN@
+# undef PRIoMAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
+# define PRIoMAX PRIo64
+# else
+# define PRIoMAX "lo"
+# endif
+#endif
+#if !defined PRIuMAX || @PRI_MACROS_BROKEN@
+# undef PRIuMAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
+# define PRIuMAX PRIu64
+# else
+# define PRIuMAX "lu"
+# endif
+#endif
+#if !defined PRIxMAX || @PRI_MACROS_BROKEN@
+# undef PRIxMAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
+# define PRIxMAX PRIx64
+# else
+# define PRIxMAX "lx"
+# endif
+#endif
+#if !defined PRIXMAX || @PRI_MACROS_BROKEN@
+# undef PRIXMAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
+# define PRIXMAX PRIX64
+# else
+# define PRIXMAX "lX"
+# endif
+#endif
+
+#if !defined PRIdPTR || @PRI_MACROS_BROKEN@
+# undef PRIdPTR
+# ifdef INTPTR_MAX
+# define PRIdPTR @PRIPTR_PREFIX@ "d"
+# endif
+#endif
+#if !defined PRIiPTR || @PRI_MACROS_BROKEN@
+# undef PRIiPTR
+# ifdef INTPTR_MAX
+# define PRIiPTR @PRIPTR_PREFIX@ "i"
+# endif
+#endif
+#if !defined PRIoPTR || @PRI_MACROS_BROKEN@
+# undef PRIoPTR
+# ifdef UINTPTR_MAX
+# define PRIoPTR @PRIPTR_PREFIX@ "o"
+# endif
+#endif
+#if !defined PRIuPTR || @PRI_MACROS_BROKEN@
+# undef PRIuPTR
+# ifdef UINTPTR_MAX
+# define PRIuPTR @PRIPTR_PREFIX@ "u"
+# endif
+#endif
+#if !defined PRIxPTR || @PRI_MACROS_BROKEN@
+# undef PRIxPTR
+# ifdef UINTPTR_MAX
+# define PRIxPTR @PRIPTR_PREFIX@ "x"
+# endif
+#endif
+#if !defined PRIXPTR || @PRI_MACROS_BROKEN@
+# undef PRIXPTR
+# ifdef UINTPTR_MAX
+# define PRIXPTR @PRIPTR_PREFIX@ "X"
+# endif
+#endif
+
+#if !defined SCNd8 || @PRI_MACROS_BROKEN@
+# undef SCNd8
+# ifdef INT8_MAX
+# define SCNd8 "hhd"
+# endif
+#endif
+#if !defined SCNi8 || @PRI_MACROS_BROKEN@
+# undef SCNi8
+# ifdef INT8_MAX
+# define SCNi8 "hhi"
+# endif
+#endif
+#if !defined SCNo8 || @PRI_MACROS_BROKEN@
+# undef SCNo8
+# ifdef UINT8_MAX
+# define SCNo8 "hho"
+# endif
+#endif
+#if !defined SCNu8 || @PRI_MACROS_BROKEN@
+# undef SCNu8
+# ifdef UINT8_MAX
+# define SCNu8 "hhu"
+# endif
+#endif
+#if !defined SCNx8 || @PRI_MACROS_BROKEN@
+# undef SCNx8
+# ifdef UINT8_MAX
+# define SCNx8 "hhx"
+# endif
+#endif
+#if !defined SCNd16 || @PRI_MACROS_BROKEN@
+# undef SCNd16
+# ifdef INT16_MAX
+# define SCNd16 "hd"
+# endif
+#endif
+#if !defined SCNi16 || @PRI_MACROS_BROKEN@
+# undef SCNi16
+# ifdef INT16_MAX
+# define SCNi16 "hi"
+# endif
+#endif
+#if !defined SCNo16 || @PRI_MACROS_BROKEN@
+# undef SCNo16
+# ifdef UINT16_MAX
+# define SCNo16 "ho"
+# endif
+#endif
+#if !defined SCNu16 || @PRI_MACROS_BROKEN@
+# undef SCNu16
+# ifdef UINT16_MAX
+# define SCNu16 "hu"
+# endif
+#endif
+#if !defined SCNx16 || @PRI_MACROS_BROKEN@
+# undef SCNx16
+# ifdef UINT16_MAX
+# define SCNx16 "hx"
+# endif
+#endif
+#if !defined SCNd32 || @PRI_MACROS_BROKEN@
+# undef SCNd32
+# ifdef INT32_MAX
+# define SCNd32 "d"
+# endif
+#endif
+#if !defined SCNi32 || @PRI_MACROS_BROKEN@
+# undef SCNi32
+# ifdef INT32_MAX
+# define SCNi32 "i"
+# endif
+#endif
+#if !defined SCNo32 || @PRI_MACROS_BROKEN@
+# undef SCNo32
+# ifdef UINT32_MAX
+# define SCNo32 "o"
+# endif
+#endif
+#if !defined SCNu32 || @PRI_MACROS_BROKEN@
+# undef SCNu32
+# ifdef UINT32_MAX
+# define SCNu32 "u"
+# endif
+#endif
+#if !defined SCNx32 || @PRI_MACROS_BROKEN@
+# undef SCNx32
+# ifdef UINT32_MAX
+# define SCNx32 "x"
+# endif
+#endif
+#ifdef INT64_MAX
+# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@)
+# define _SCN64_PREFIX "l"
+# elif defined _MSC_VER || defined __MINGW32__
+# define _SCN64_PREFIX "I64"
+# elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX
+# endif
+# if !defined SCNd64 || @PRI_MACROS_BROKEN@
+# undef SCNd64
+# define SCNd64 _SCN64_PREFIX "d"
+# endif
+# if !defined SCNi64 || @PRI_MACROS_BROKEN@
+# undef SCNi64
+# define SCNi64 _SCN64_PREFIX "i"
+# endif
+#endif
+#ifdef UINT64_MAX
+# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
+# define _SCNu64_PREFIX "l"
+# elif defined _MSC_VER || defined __MINGW32__
+# define _SCNu64_PREFIX "I64"
+# elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX
+# endif
+# if !defined SCNo64 || @PRI_MACROS_BROKEN@
+# undef SCNo64
+# define SCNo64 _SCNu64_PREFIX "o"
+# endif
+# if !defined SCNu64 || @PRI_MACROS_BROKEN@
+# undef SCNu64
+# define SCNu64 _SCNu64_PREFIX "u"
+# endif
+# if !defined SCNx64 || @PRI_MACROS_BROKEN@
+# undef SCNx64
+# define SCNx64 _SCNu64_PREFIX "x"
+# endif
+#endif
+
+#if !defined SCNdLEAST8 || @PRI_MACROS_BROKEN@
+# undef SCNdLEAST8
+# define SCNdLEAST8 "hhd"
+#endif
+#if !defined SCNiLEAST8 || @PRI_MACROS_BROKEN@
+# undef SCNiLEAST8
+# define SCNiLEAST8 "hhi"
+#endif
+#if !defined SCNoLEAST8 || @PRI_MACROS_BROKEN@
+# undef SCNoLEAST8
+# define SCNoLEAST8 "hho"
+#endif
+#if !defined SCNuLEAST8 || @PRI_MACROS_BROKEN@
+# undef SCNuLEAST8
+# define SCNuLEAST8 "hhu"
+#endif
+#if !defined SCNxLEAST8 || @PRI_MACROS_BROKEN@
+# undef SCNxLEAST8
+# define SCNxLEAST8 "hhx"
+#endif
+#if !defined SCNdLEAST16 || @PRI_MACROS_BROKEN@
+# undef SCNdLEAST16
+# define SCNdLEAST16 "hd"
+#endif
+#if !defined SCNiLEAST16 || @PRI_MACROS_BROKEN@
+# undef SCNiLEAST16
+# define SCNiLEAST16 "hi"
+#endif
+#if !defined SCNoLEAST16 || @PRI_MACROS_BROKEN@
+# undef SCNoLEAST16
+# define SCNoLEAST16 "ho"
+#endif
+#if !defined SCNuLEAST16 || @PRI_MACROS_BROKEN@
+# undef SCNuLEAST16
+# define SCNuLEAST16 "hu"
+#endif
+#if !defined SCNxLEAST16 || @PRI_MACROS_BROKEN@
+# undef SCNxLEAST16
+# define SCNxLEAST16 "hx"
+#endif
+#if !defined SCNdLEAST32 || @PRI_MACROS_BROKEN@
+# undef SCNdLEAST32
+# define SCNdLEAST32 "d"
+#endif
+#if !defined SCNiLEAST32 || @PRI_MACROS_BROKEN@
+# undef SCNiLEAST32
+# define SCNiLEAST32 "i"
+#endif
+#if !defined SCNoLEAST32 || @PRI_MACROS_BROKEN@
+# undef SCNoLEAST32
+# define SCNoLEAST32 "o"
+#endif
+#if !defined SCNuLEAST32 || @PRI_MACROS_BROKEN@
+# undef SCNuLEAST32
+# define SCNuLEAST32 "u"
+#endif
+#if !defined SCNxLEAST32 || @PRI_MACROS_BROKEN@
+# undef SCNxLEAST32
+# define SCNxLEAST32 "x"
+#endif
+#ifdef INT64_MAX
+# if !defined SCNdLEAST64 || @PRI_MACROS_BROKEN@
+# undef SCNdLEAST64
+# define SCNdLEAST64 SCNd64
+# endif
+# if !defined SCNiLEAST64 || @PRI_MACROS_BROKEN@
+# undef SCNiLEAST64
+# define SCNiLEAST64 SCNi64
+# endif
+#endif
+#ifdef UINT64_MAX
+# if !defined SCNoLEAST64 || @PRI_MACROS_BROKEN@
+# undef SCNoLEAST64
+# define SCNoLEAST64 SCNo64
+# endif
+# if !defined SCNuLEAST64 || @PRI_MACROS_BROKEN@
+# undef SCNuLEAST64
+# define SCNuLEAST64 SCNu64
+# endif
+# if !defined SCNxLEAST64 || @PRI_MACROS_BROKEN@
+# undef SCNxLEAST64
+# define SCNxLEAST64 SCNx64
+# endif
+#endif
+
+#if !defined SCNdFAST8 || @PRI_MACROS_BROKEN@
+# undef SCNdFAST8
+# if INT_FAST8_MAX > INT32_MAX
+# define SCNdFAST8 SCNd64
+# elif INT_FAST8_MAX == 0x7fff
+# define SCNdFAST8 "hd"
+# elif INT_FAST8_MAX == 0x7f
+# define SCNdFAST8 "hhd"
+# else
+# define SCNdFAST8 "d"
+# endif
+#endif
+#if !defined SCNiFAST8 || @PRI_MACROS_BROKEN@
+# undef SCNiFAST8
+# if INT_FAST8_MAX > INT32_MAX
+# define SCNiFAST8 SCNi64
+# elif INT_FAST8_MAX == 0x7fff
+# define SCNiFAST8 "hi"
+# elif INT_FAST8_MAX == 0x7f
+# define SCNiFAST8 "hhi"
+# else
+# define SCNiFAST8 "i"
+# endif
+#endif
+#if !defined SCNoFAST8 || @PRI_MACROS_BROKEN@
+# undef SCNoFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define SCNoFAST8 SCNo64
+# elif UINT_FAST8_MAX == 0xffff
+# define SCNoFAST8 "ho"
+# elif UINT_FAST8_MAX == 0xff
+# define SCNoFAST8 "hho"
+# else
+# define SCNoFAST8 "o"
+# endif
+#endif
+#if !defined SCNuFAST8 || @PRI_MACROS_BROKEN@
+# undef SCNuFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define SCNuFAST8 SCNu64
+# elif UINT_FAST8_MAX == 0xffff
+# define SCNuFAST8 "hu"
+# elif UINT_FAST8_MAX == 0xff
+# define SCNuFAST8 "hhu"
+# else
+# define SCNuFAST8 "u"
+# endif
+#endif
+#if !defined SCNxFAST8 || @PRI_MACROS_BROKEN@
+# undef SCNxFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define SCNxFAST8 SCNx64
+# elif UINT_FAST8_MAX == 0xffff
+# define SCNxFAST8 "hx"
+# elif UINT_FAST8_MAX == 0xff
+# define SCNxFAST8 "hhx"
+# else
+# define SCNxFAST8 "x"
+# endif
+#endif
+#if !defined SCNdFAST16 || @PRI_MACROS_BROKEN@
+# undef SCNdFAST16
+# if INT_FAST16_MAX > INT32_MAX
+# define SCNdFAST16 SCNd64
+# elif INT_FAST16_MAX == 0x7fff
+# define SCNdFAST16 "hd"
+# else
+# define SCNdFAST16 "d"
+# endif
+#endif
+#if !defined SCNiFAST16 || @PRI_MACROS_BROKEN@
+# undef SCNiFAST16
+# if INT_FAST16_MAX > INT32_MAX
+# define SCNiFAST16 SCNi64
+# elif INT_FAST16_MAX == 0x7fff
+# define SCNiFAST16 "hi"
+# else
+# define SCNiFAST16 "i"
+# endif
+#endif
+#if !defined SCNoFAST16 || @PRI_MACROS_BROKEN@
+# undef SCNoFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define SCNoFAST16 SCNo64
+# elif UINT_FAST16_MAX == 0xffff
+# define SCNoFAST16 "ho"
+# else
+# define SCNoFAST16 "o"
+# endif
+#endif
+#if !defined SCNuFAST16 || @PRI_MACROS_BROKEN@
+# undef SCNuFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define SCNuFAST16 SCNu64
+# elif UINT_FAST16_MAX == 0xffff
+# define SCNuFAST16 "hu"
+# else
+# define SCNuFAST16 "u"
+# endif
+#endif
+#if !defined SCNxFAST16 || @PRI_MACROS_BROKEN@
+# undef SCNxFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define SCNxFAST16 SCNx64
+# elif UINT_FAST16_MAX == 0xffff
+# define SCNxFAST16 "hx"
+# else
+# define SCNxFAST16 "x"
+# endif
+#endif
+#if !defined SCNdFAST32 || @PRI_MACROS_BROKEN@
+# undef SCNdFAST32
+# if INT_FAST32_MAX > INT32_MAX
+# define SCNdFAST32 SCNd64
+# else
+# define SCNdFAST32 "d"
+# endif
+#endif
+#if !defined SCNiFAST32 || @PRI_MACROS_BROKEN@
+# undef SCNiFAST32
+# if INT_FAST32_MAX > INT32_MAX
+# define SCNiFAST32 SCNi64
+# else
+# define SCNiFAST32 "i"
+# endif
+#endif
+#if !defined SCNoFAST32 || @PRI_MACROS_BROKEN@
+# undef SCNoFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define SCNoFAST32 SCNo64
+# else
+# define SCNoFAST32 "o"
+# endif
+#endif
+#if !defined SCNuFAST32 || @PRI_MACROS_BROKEN@
+# undef SCNuFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define SCNuFAST32 SCNu64
+# else
+# define SCNuFAST32 "u"
+# endif
+#endif
+#if !defined SCNxFAST32 || @PRI_MACROS_BROKEN@
+# undef SCNxFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define SCNxFAST32 SCNx64
+# else
+# define SCNxFAST32 "x"
+# endif
+#endif
+#ifdef INT64_MAX
+# if !defined SCNdFAST64 || @PRI_MACROS_BROKEN@
+# undef SCNdFAST64
+# define SCNdFAST64 SCNd64
+# endif
+# if !defined SCNiFAST64 || @PRI_MACROS_BROKEN@
+# undef SCNiFAST64
+# define SCNiFAST64 SCNi64
+# endif
+#endif
+#ifdef UINT64_MAX
+# if !defined SCNoFAST64 || @PRI_MACROS_BROKEN@
+# undef SCNoFAST64
+# define SCNoFAST64 SCNo64
+# endif
+# if !defined SCNuFAST64 || @PRI_MACROS_BROKEN@
+# undef SCNuFAST64
+# define SCNuFAST64 SCNu64
+# endif
+# if !defined SCNxFAST64 || @PRI_MACROS_BROKEN@
+# undef SCNxFAST64
+# define SCNxFAST64 SCNx64
+# endif
+#endif
+
+#if !defined SCNdMAX || @PRI_MACROS_BROKEN@
+# undef SCNdMAX
+# if @INT32_MAX_LT_INTMAX_MAX@
+# define SCNdMAX SCNd64
+# else
+# define SCNdMAX "ld"
+# endif
+#endif
+#if !defined SCNiMAX || @PRI_MACROS_BROKEN@
+# undef SCNiMAX
+# if @INT32_MAX_LT_INTMAX_MAX@
+# define SCNiMAX SCNi64
+# else
+# define SCNiMAX "li"
+# endif
+#endif
+#if !defined SCNoMAX || @PRI_MACROS_BROKEN@
+# undef SCNoMAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
+# define SCNoMAX SCNo64
+# else
+# define SCNoMAX "lo"
+# endif
+#endif
+#if !defined SCNuMAX || @PRI_MACROS_BROKEN@
+# undef SCNuMAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
+# define SCNuMAX SCNu64
+# else
+# define SCNuMAX "lu"
+# endif
+#endif
+#if !defined SCNxMAX || @PRI_MACROS_BROKEN@
+# undef SCNxMAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
+# define SCNxMAX SCNx64
+# else
+# define SCNxMAX "lx"
+# endif
+#endif
+
+#if !defined SCNdPTR || @PRI_MACROS_BROKEN@
+# undef SCNdPTR
+# ifdef INTPTR_MAX
+# define SCNdPTR @PRIPTR_PREFIX@ "d"
+# endif
+#endif
+#if !defined SCNiPTR || @PRI_MACROS_BROKEN@
+# undef SCNiPTR
+# ifdef INTPTR_MAX
+# define SCNiPTR @PRIPTR_PREFIX@ "i"
+# endif
+#endif
+#if !defined SCNoPTR || @PRI_MACROS_BROKEN@
+# undef SCNoPTR
+# ifdef UINTPTR_MAX
+# define SCNoPTR @PRIPTR_PREFIX@ "o"
+# endif
+#endif
+#if !defined SCNuPTR || @PRI_MACROS_BROKEN@
+# undef SCNuPTR
+# ifdef UINTPTR_MAX
+# define SCNuPTR @PRIPTR_PREFIX@ "u"
+# endif
+#endif
+#if !defined SCNxPTR || @PRI_MACROS_BROKEN@
+# undef SCNxPTR
+# ifdef UINTPTR_MAX
+# define SCNxPTR @PRIPTR_PREFIX@ "x"
+# endif
+#endif
+
+/* 7.8.2 Functions for greatest-width integer types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if @GNULIB_IMAXABS@
+# if !@HAVE_DECL_IMAXABS@
+extern intmax_t imaxabs (intmax_t);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef imaxabs
+# if HAVE_RAW_DECL_IMAXABS
+_GL_WARN_ON_USE (imaxabs, "imaxabs is unportable - "
+ "use gnulib module imaxabs for portability");
+# endif
+#endif
+
+#if @GNULIB_IMAXDIV@
+# if !@HAVE_DECL_IMAXDIV@
+# if !GNULIB_defined_imaxdiv_t
+typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t;
+# define GNULIB_defined_imaxdiv_t 1
+# endif
+extern imaxdiv_t imaxdiv (intmax_t, intmax_t);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef imaxdiv
+# if HAVE_RAW_DECL_IMAXDIV
+_GL_WARN_ON_USE (imaxdiv, "imaxdiv is unportable - "
+ "use gnulib module imaxdiv for portability");
+# endif
+#endif
+
+#if @GNULIB_STRTOIMAX@
+# if @REPLACE_STRTOIMAX@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef strtoimax
+# define strtoimax rpl_strtoimax
+# endif
+_GL_FUNCDECL_RPL (strtoimax, intmax_t,
+ (const char *, char **, int) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strtoimax, intmax_t, (const char *, char **, int));
+# else
+# if !@HAVE_DECL_STRTOIMAX@
+# undef strtoimax
+_GL_FUNCDECL_SYS (strtoimax, intmax_t,
+ (const char *, char **, int) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (strtoimax, intmax_t, (const char *, char **, int));
+# endif
+_GL_CXXALIASWARN (strtoimax);
+#elif defined GNULIB_POSIXCHECK
+# undef strtoimax
+# if HAVE_RAW_DECL_STRTOIMAX
+_GL_WARN_ON_USE (strtoimax, "strtoimax is unportable - "
+ "use gnulib module strtoimax for portability");
+# endif
+#endif
+
+#if @GNULIB_STRTOUMAX@
+# if !@HAVE_DECL_STRTOUMAX@
+# undef strtoumax
+_GL_FUNCDECL_SYS (strtoumax, uintmax_t,
+ (const char *, char **, int) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (strtoumax, uintmax_t, (const char *, char **, int));
+_GL_CXXALIASWARN (strtoumax);
+#elif defined GNULIB_POSIXCHECK
+# undef strtoumax
+# if HAVE_RAW_DECL_STRTOUMAX
+_GL_WARN_ON_USE (strtoumax, "strtoumax is unportable - "
+ "use gnulib module strtoumax for portability");
+# endif
+#endif
+
+/* Don't bother defining or declaring wcstoimax and wcstoumax, since
+ wide-character functions like this are hardly ever useful. */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !defined INTTYPES_H && !defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H */
diff --git a/src/libs/gnulib/lib/localcharset.c b/src/libs/gnulib/lib/localcharset.c
index fa2207f..953cc1e 100644
--- a/src/libs/gnulib/lib/localcharset.c
+++ b/src/libs/gnulib/lib/localcharset.c
@@ -1,6 +1,6 @@
/* Determine a canonical name for the current locale's character encoding.
- Copyright (C) 2000-2006, 2008-2010 Free Software Foundation, Inc.
+ Copyright (C) 2000-2006, 2008-2013 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -13,8 +13,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
/* Written by Bruno Haible <bruno@clisp.org>. */
@@ -30,11 +29,11 @@
#include <stdlib.h>
#if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET
-# define DARWIN7 /* Darwin 7 or newer, i.e. MacOS X 10.3 or newer */
+# define DARWIN7 /* Darwin 7 or newer, i.e. Mac OS X 10.3 or newer */
#endif
#if defined _WIN32 || defined __WIN32__
-# define WIN32_NATIVE
+# define WINDOWS_NATIVE
#endif
#if defined __EMX__
@@ -44,7 +43,7 @@
# endif
#endif
-#if !defined WIN32_NATIVE
+#if !defined WINDOWS_NATIVE
# include <unistd.h>
# if HAVE_LANGINFO_CODESET
# include <langinfo.h>
@@ -57,7 +56,7 @@
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
# endif
-#elif defined WIN32_NATIVE
+#elif defined WINDOWS_NATIVE
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
#endif
@@ -83,7 +82,7 @@
#endif
#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
- /* Win32, Cygwin, OS/2, DOS */
+ /* Native Windows, Cygwin, OS/2, DOS */
# define ISSLASH(C) ((C) == '/' || (C) == '\\')
#endif
@@ -123,7 +122,7 @@ get_charset_aliases (void)
cp = charset_aliases;
if (cp == NULL)
{
-#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
+#if !(defined DARWIN7 || defined VMS || defined WINDOWS_NATIVE || defined __CYGWIN__)
const char *dir;
const char *base = "charset.alias";
char *file_name;
@@ -228,8 +227,7 @@ get_charset_aliases (void)
{
/* Out of memory. */
res_size = 0;
- if (old_res_ptr != NULL)
- free (old_res_ptr);
+ free (old_res_ptr);
break;
}
strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
@@ -309,7 +307,7 @@ get_charset_aliases (void)
"DECKOREAN" "\0" "EUC-KR" "\0";
# endif
-# if defined WIN32_NATIVE || defined __CYGWIN__
+# if defined WINDOWS_NATIVE || defined __CYGWIN__
/* To avoid the troubles of installing a separate file in the same
directory as the DLL and of retrieving the DLL's directory at
runtime, simply inline the aliases here. */
@@ -361,7 +359,7 @@ locale_charset (void)
const char *codeset;
const char *aliases;
-#if !(defined WIN32_NATIVE || defined OS2)
+#if !(defined WINDOWS_NATIVE || defined OS2)
# if HAVE_LANGINFO_CODESET
@@ -408,10 +406,10 @@ locale_charset (void)
}
}
- /* Woe32 has a function returning the locale's codepage as a number:
- GetACP(). This encoding is used by Cygwin, unless the user has set
- the environment variable CYGWIN=codepage:oem (which very few people
- do).
+ /* The Windows API has a function returning the locale's codepage as a
+ number: GetACP(). This encoding is used by Cygwin, unless the user
+ has set the environment variable CYGWIN=codepage:oem (which very few
+ people do).
Output directed to console windows needs to be converted (to
GetOEMCP() if the console is using a raster font, or to
GetConsoleOutputCP() if it is using a TrueType font). Cygwin does
@@ -454,12 +452,12 @@ locale_charset (void)
# endif
-#elif defined WIN32_NATIVE
+#elif defined WINDOWS_NATIVE
static char buf[2 + 10 + 1];
- /* Woe32 has a function returning the locale's codepage as a number:
- GetACP().
+ /* The Windows API has a function returning the locale's codepage as a
+ number: GetACP().
When the output goes to a console window, it needs to be provided in
GetOEMCP() encoding if the console is using a raster font, or in
GetConsoleOutputCP() encoding if it is using a TrueType font.
@@ -544,5 +542,12 @@ locale_charset (void)
if (codeset[0] == '\0')
codeset = "ASCII";
+#ifdef DARWIN7
+ /* Mac OS X sets MB_CUR_MAX to 1 when LC_ALL=C, and "UTF-8"
+ (the default codeset) does not work when MB_CUR_MAX is 1. */
+ if (strcmp (codeset, "UTF-8") == 0 && MB_CUR_MAX <= 1)
+ codeset = "ASCII";
+#endif
+
return codeset;
}
diff --git a/src/libs/gnulib/lib/localcharset.h b/src/libs/gnulib/lib/localcharset.h
index 899b3ba..c209829 100644
--- a/src/libs/gnulib/lib/localcharset.h
+++ b/src/libs/gnulib/lib/localcharset.h
@@ -1,5 +1,5 @@
/* Determine a canonical name for the current locale's character encoding.
- Copyright (C) 2000-2003, 2009-2010 Free Software Foundation, Inc.
+ Copyright (C) 2000-2003, 2009-2013 Free Software Foundation, Inc.
This file is part of the GNU CHARSET Library.
This program is free software; you can redistribute it and/or modify
@@ -13,8 +13,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
#ifndef _LOCALCHARSET_H
#define _LOCALCHARSET_H
diff --git a/src/libs/gnulib/lib/ref-add.sin b/src/libs/gnulib/lib/ref-add.sin
index dbb61df..112bcdc 100644
--- a/src/libs/gnulib/lib/ref-add.sin
+++ b/src/libs/gnulib/lib/ref-add.sin
@@ -1,6 +1,6 @@
# Add this package to a list of references stored in a text file.
#
-# Copyright (C) 2000, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -13,8 +13,7 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# with this program; if not, see <http://www.gnu.org/licenses/>.
#
# Written by Bruno Haible <haible@clisp.cons.org>.
#
diff --git a/src/libs/gnulib/lib/ref-del.sin b/src/libs/gnulib/lib/ref-del.sin
index 4c31a6e..6f73868 100644
--- a/src/libs/gnulib/lib/ref-del.sin
+++ b/src/libs/gnulib/lib/ref-del.sin
@@ -1,6 +1,6 @@
# Remove this package from a list of references stored in a text file.
#
-# Copyright (C) 2000, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -13,8 +13,7 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# with this program; if not, see <http://www.gnu.org/licenses/>.
#
# Written by Bruno Haible <haible@clisp.cons.org>.
#
diff --git a/src/libs/gnulib/lib/stdbool.in.h b/src/libs/gnulib/lib/stdbool.in.h
new file mode 100644
index 0000000..0c871ec
--- /dev/null
+++ b/src/libs/gnulib/lib/stdbool.in.h
@@ -0,0 +1,132 @@
+/* Copyright (C) 2001-2003, 2006-2013 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+ This program 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.
+
+ This program 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 this program; if not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _GL_STDBOOL_H
+#define _GL_STDBOOL_H
+
+/* ISO C 99 <stdbool.h> for platforms that lack it. */
+
+/* Usage suggestions:
+
+ Programs that use <stdbool.h> should be aware of some limitations
+ and standards compliance issues.
+
+ Standards compliance:
+
+ - <stdbool.h> must be #included before 'bool', 'false', 'true'
+ can be used.
+
+ - You cannot assume that sizeof (bool) == 1.
+
+ - Programs should not undefine the macros bool, true, and false,
+ as C99 lists that as an "obsolescent feature".
+
+ Limitations of this substitute, when used in a C89 environment:
+
+ - <stdbool.h> must be #included before the '_Bool' type can be used.
+
+ - You cannot assume that _Bool is a typedef; it might be a macro.
+
+ - Bit-fields of type 'bool' are not supported. Portable code
+ should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'.
+
+ - In C99, casts and automatic conversions to '_Bool' or 'bool' are
+ performed in such a way that every nonzero value gets converted
+ to 'true', and zero gets converted to 'false'. This doesn't work
+ with this substitute. With this substitute, only the values 0 and 1
+ give the expected result when converted to _Bool' or 'bool'.
+
+ - C99 allows the use of (_Bool)0.0 in constant expressions, but
+ this substitute cannot always provide this property.
+
+ Also, it is suggested that programs use 'bool' rather than '_Bool';
+ this isn't required, but 'bool' is more common. */
+
+
+/* 7.16. Boolean type and values */
+
+/* BeOS <sys/socket.h> already #defines false 0, true 1. We use the same
+ definitions below, but temporarily we have to #undef them. */
+#if defined __BEOS__ && !defined __HAIKU__
+# include <OS.h> /* defines bool but not _Bool */
+# undef false
+# undef true
+#endif
+
+#ifdef __cplusplus
+# define _Bool bool
+# define bool bool
+#else
+# if defined __BEOS__ && !defined __HAIKU__
+ /* A compiler known to have 'bool'. */
+ /* If the compiler already has both 'bool' and '_Bool', we can assume they
+ are the same types. */
+# if !@HAVE__BOOL@
+typedef bool _Bool;
+# endif
+# else
+# if !defined __GNUC__
+ /* If @HAVE__BOOL@:
+ Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when
+ the built-in _Bool type is used. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ Similar bugs are likely with other compilers as well; this file
+ wouldn't be used if <stdbool.h> was working.
+ So we override the _Bool type.
+ If !@HAVE__BOOL@:
+ Need to define _Bool ourselves. As 'signed char' or as an enum type?
+ Use of a typedef, with SunPRO C, leads to a stupid
+ "warning: _Bool is a keyword in ISO C99".
+ Use of an enum type, with IRIX cc, leads to a stupid
+ "warning(1185): enumerated type mixed with another type".
+ Even the existence of an enum type, without a typedef,
+ "Invalid enumerator. (badenum)" with HP-UX cc on Tru64.
+ The only benefit of the enum, debuggability, is not important
+ with these compilers. So use 'signed char' and no enum. */
+# define _Bool signed char
+# else
+ /* With this compiler, trust the _Bool type if the compiler has it. */
+# if !@HAVE__BOOL@
+ /* For the sake of symbolic names in gdb, define true and false as
+ enum constants, not only as macros.
+ It is tempting to write
+ typedef enum { false = 0, true = 1 } _Bool;
+ so that gdb prints values of type 'bool' symbolically. But then
+ values of type '_Bool' might promote to 'int' or 'unsigned int'
+ (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
+ (see ISO C 99 6.3.1.1.(2)). So add a negative value to the
+ enum; this ensures that '_Bool' promotes to 'int'. */
+typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
+# endif
+# endif
+# endif
+# define bool _Bool
+#endif
+
+/* The other macros must be usable in preprocessor directives. */
+#ifdef __cplusplus
+# define false false
+# define true true
+#else
+# define false 0
+# define true 1
+#endif
+
+#define __bool_true_false_are_defined 1
+
+#endif /* _GL_STDBOOL_H */
diff --git a/src/libs/gnulib/lib/stddef.in.h b/src/libs/gnulib/lib/stddef.in.h
index 6642d49..40f0536 100644
--- a/src/libs/gnulib/lib/stddef.in.h
+++ b/src/libs/gnulib/lib/stddef.in.h
@@ -1,6 +1,6 @@
/* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009-2013 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -13,8 +13,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
/* Written by Eric Blake. */
@@ -38,9 +37,9 @@
remember if special invocation has ever been used to obtain wint_t,
in which case we need to clean up NULL yet again. */
-# if !(defined _GL_STDDEF_H && defined _GL_STDDEF_WINT_T)
+# if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T)
# ifdef __need_wint_t
-# undef _GL_STDDEF_H
+# undef _@GUARD_PREFIX@_STDDEF_H
# define _GL_STDDEF_WINT_T
# endif
# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
@@ -49,14 +48,14 @@
#else
/* Normal invocation convention. */
-# ifndef _GL_STDDEF_H
+# ifndef _@GUARD_PREFIX@_STDDEF_H
/* The include_next requires a split double-inclusion guard. */
# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
-# ifndef _GL_STDDEF_H
-# define _GL_STDDEF_H
+# ifndef _@GUARD_PREFIX@_STDDEF_H
+# define _@GUARD_PREFIX@_STDDEF_H
/* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */
#if @REPLACE_NULL@
@@ -82,6 +81,6 @@
# define wchar_t int
#endif
-# endif /* _GL_STDDEF_H */
-# endif /* _GL_STDDEF_H */
+# endif /* _@GUARD_PREFIX@_STDDEF_H */
+# endif /* _@GUARD_PREFIX@_STDDEF_H */
#endif /* __need_XXX */
diff --git a/src/libs/gnulib/lib/stdint.in.h b/src/libs/gnulib/lib/stdint.in.h
index 9909f57..2db8b2e 100644
--- a/src/libs/gnulib/lib/stdint.in.h
+++ b/src/libs/gnulib/lib/stdint.in.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2002, 2004-2010 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2002, 2004-2013 Free Software Foundation, Inc.
Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
This file is part of gnulib.
@@ -13,15 +13,14 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
/*
* ISO C 99 <stdint.h> for platforms that lack it.
* <http://www.opengroup.org/susv3xbd/stdint.h.html>
*/
-#ifndef _GL_STDINT_H
+#ifndef _@GUARD_PREFIX@_STDINT_H
#if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
@@ -34,6 +33,16 @@
<inttypes.h>. */
#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+/* On Android (Bionic libc), <sys/types.h> includes this file before
+ having defined 'time_t'. Therefore in this case avoid including
+ other system header files; just include the system's <stdint.h>.
+ Ideally we should test __BIONIC__ here, but it is only defined after
+ <sys/cdefs.h> has been included; hence test __ANDROID__ instead. */
+#if defined __ANDROID__ \
+ && defined _SYS_TYPES_H_ && !defined __need_size_t
+# @INCLUDE_NEXT@ @NEXT_STDINT_H@
+#else
+
/* Get those types that are already defined in other system include
files, so that we can "#define int8_t signed char" below without
worrying about a later system include file containing a "typedef
@@ -49,28 +58,40 @@
diagnostics. */
# define __STDINT_H__
# endif
+
+ /* Some pre-C++11 <stdint.h> implementations need this. */
+# ifdef __cplusplus
+# ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS 1
+# endif
+# ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS 1
+# endif
+# endif
+
/* Other systems may have an incomplete or buggy <stdint.h>.
Include it before <inttypes.h>, since any "#include <stdint.h>"
in <inttypes.h> would reinclude us, skipping our contents because
- _GL_STDINT_H is defined.
+ _@GUARD_PREFIX@_STDINT_H is defined.
The include_next requires a split double-inclusion guard. */
# @INCLUDE_NEXT@ @NEXT_STDINT_H@
#endif
-#if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
-#define _GL_STDINT_H
+#if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+#define _@GUARD_PREFIX@_STDINT_H
/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
AIX 5.2 <sys/types.h> isn't needed and causes troubles.
- MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
+ Mac OS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
relies on the system <stdint.h> definitions, so include
<sys/types.h> after @NEXT_STDINT_H@. */
#if @HAVE_SYS_TYPES_H@ && ! defined _AIX
# include <sys/types.h>
#endif
-/* Get LONG_MIN, LONG_MAX, ULONG_MAX. */
+/* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX,
+ LONG_MIN, LONG_MAX, ULONG_MAX. */
#include <limits.h>
#if @HAVE_INTTYPES_H@
@@ -93,7 +114,7 @@
#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
-/* Minimum and maximum values for a integer type under the usual assumption.
+/* Minimum and maximum values for an integer type under the usual assumption.
Return an unspecified value if BITS == 0, adding a check to pacify
picky compilers. */
@@ -108,6 +129,8 @@
warnings in the signed case. */ \
((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
+#if !GNULIB_defined_stdint_types
+
/* 7.18.1.1. Exact-width integer types */
/* Here we assume a standard architecture where the hardware integer
@@ -137,9 +160,10 @@ typedef unsigned int gl_uint32_t;
/* If the system defines INT64_MAX, assume int64_t works. That way,
if the underlying platform defines int64_t to be a 64-bit long long
int, the code below won't mistakenly define it to be a 64-bit long
- int, which would mess up C++ name mangling. */
+ int, which would mess up C++ name mangling. We must use #ifdef
+ rather than #if, to avoid an error with HP-UX 10.20 cc. */
-#if INT64_MAX
+#ifdef INT64_MAX
# define GL_INT64_T
#else
/* Do not undefine int64_t if gnulib is not being used with 64-bit
@@ -162,7 +186,7 @@ typedef long long int gl_int64_t;
# endif
#endif
-#if UINT64_MAX
+#ifdef UINT64_MAX
# define GL_UINT64_T
#else
# if ULONG_MAX >> 31 >> 31 >> 1 == 1
@@ -223,8 +247,9 @@ typedef unsigned long long int gl_uint64_t;
/* Here we assume a standard architecture where the hardware integer
types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
- are taken from the same list of types. Assume that 'long int'
- is fast enough for all narrower integers. */
+ are taken from the same list of types. The following code normally
+ uses types consistent with glibc, as that lessens the chance of
+ incompatibility with older GNU hosts. */
#undef int_fast8_t
#undef uint_fast8_t
@@ -234,12 +259,21 @@ typedef unsigned long long int gl_uint64_t;
#undef uint_fast32_t
#undef int_fast64_t
#undef uint_fast64_t
-typedef long int gl_int_fast8_t;
-typedef unsigned long int gl_uint_fast8_t;
-typedef long int gl_int_fast16_t;
-typedef unsigned long int gl_uint_fast16_t;
+typedef signed char gl_int_fast8_t;
+typedef unsigned char gl_uint_fast8_t;
+
+#ifdef __sun
+/* Define types compatible with SunOS 5.10, so that code compiled under
+ earlier SunOS versions works with code compiled under SunOS 5.10. */
+typedef int gl_int_fast32_t;
+typedef unsigned int gl_uint_fast32_t;
+#else
typedef long int gl_int_fast32_t;
typedef unsigned long int gl_uint_fast32_t;
+#endif
+typedef gl_int_fast32_t gl_int_fast16_t;
+typedef gl_uint_fast32_t gl_uint_fast16_t;
+
#define int_fast8_t gl_int_fast8_t
#define uint_fast8_t gl_uint_fast8_t
#define int_fast16_t gl_int_fast16_t
@@ -267,26 +301,36 @@ typedef unsigned long int gl_uintptr_t;
/* Note: These types are compiler dependent. It may be unwise to use them in
public header files. */
-#undef intmax_t
-#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+/* If the system defines INTMAX_MAX, assume that intmax_t works, and
+ similarly for UINTMAX_MAX and uintmax_t. This avoids problems with
+ assuming one type where another is used by the system. */
+
+#ifndef INTMAX_MAX
+# undef INTMAX_C
+# undef intmax_t
+# if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
typedef long long int gl_intmax_t;
-# define intmax_t gl_intmax_t
-#elif defined GL_INT64_T
-# define intmax_t int64_t
-#else
+# define intmax_t gl_intmax_t
+# elif defined GL_INT64_T
+# define intmax_t int64_t
+# else
typedef long int gl_intmax_t;
-# define intmax_t gl_intmax_t
+# define intmax_t gl_intmax_t
+# endif
#endif
-#undef uintmax_t
-#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+#ifndef UINTMAX_MAX
+# undef UINTMAX_C
+# undef uintmax_t
+# if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
typedef unsigned long long int gl_uintmax_t;
-# define uintmax_t gl_uintmax_t
-#elif defined GL_UINT64_T
-# define uintmax_t uint64_t
-#else
+# define uintmax_t gl_uintmax_t
+# elif defined GL_UINT64_T
+# define uintmax_t uint64_t
+# else
typedef unsigned long int gl_uintmax_t;
-# define uintmax_t gl_uintmax_t
+# define uintmax_t gl_uintmax_t
+# endif
#endif
/* Verify that intmax_t and uintmax_t have the same size. Too much code
@@ -295,9 +339,10 @@ typedef unsigned long int gl_uintmax_t;
typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
? 1 : -1];
-/* 7.18.2. Limits of specified-width integer types */
+#define GNULIB_defined_stdint_types 1
+#endif /* !GNULIB_defined_stdint_types */
-#if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
+/* 7.18.2. Limits of specified-width integer types */
/* 7.18.2.1. Limits of exact-width integer types */
@@ -384,23 +429,29 @@ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
#undef INT_FAST8_MIN
#undef INT_FAST8_MAX
#undef UINT_FAST8_MAX
-#define INT_FAST8_MIN LONG_MIN
-#define INT_FAST8_MAX LONG_MAX
-#define UINT_FAST8_MAX ULONG_MAX
+#define INT_FAST8_MIN SCHAR_MIN
+#define INT_FAST8_MAX SCHAR_MAX
+#define UINT_FAST8_MAX UCHAR_MAX
#undef INT_FAST16_MIN
#undef INT_FAST16_MAX
#undef UINT_FAST16_MAX
-#define INT_FAST16_MIN LONG_MIN
-#define INT_FAST16_MAX LONG_MAX
-#define UINT_FAST16_MAX ULONG_MAX
+#define INT_FAST16_MIN INT_FAST32_MIN
+#define INT_FAST16_MAX INT_FAST32_MAX
+#define UINT_FAST16_MAX UINT_FAST32_MAX
#undef INT_FAST32_MIN
#undef INT_FAST32_MAX
#undef UINT_FAST32_MAX
-#define INT_FAST32_MIN LONG_MIN
-#define INT_FAST32_MAX LONG_MAX
-#define UINT_FAST32_MAX ULONG_MAX
+#ifdef __sun
+# define INT_FAST32_MIN INT_MIN
+# define INT_FAST32_MAX INT_MAX
+# define UINT_FAST32_MAX UINT_MAX
+#else
+# define INT_FAST32_MIN LONG_MIN
+# define INT_FAST32_MAX LONG_MAX
+# define UINT_FAST32_MAX ULONG_MAX
+#endif
#undef INT_FAST64_MIN
#undef INT_FAST64_MAX
@@ -425,21 +476,23 @@ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
/* 7.18.2.5. Limits of greatest-width integer types */
-#undef INTMAX_MIN
-#undef INTMAX_MAX
-#ifdef INT64_MAX
-# define INTMAX_MIN INT64_MIN
-# define INTMAX_MAX INT64_MAX
-#else
-# define INTMAX_MIN INT32_MIN
-# define INTMAX_MAX INT32_MAX
+#ifndef INTMAX_MAX
+# undef INTMAX_MIN
+# ifdef INT64_MAX
+# define INTMAX_MIN INT64_MIN
+# define INTMAX_MAX INT64_MAX
+# else
+# define INTMAX_MIN INT32_MIN
+# define INTMAX_MAX INT32_MAX
+# endif
#endif
-#undef UINTMAX_MAX
-#ifdef UINT64_MAX
-# define UINTMAX_MAX UINT64_MAX
-#else
-# define UINTMAX_MAX UINT32_MAX
+#ifndef UINTMAX_MAX
+# ifdef UINT64_MAX
+# define UINTMAX_MAX UINT64_MAX
+# else
+# define UINTMAX_MAX UINT32_MAX
+# endif
#endif
/* 7.18.3. Limits of other integer types */
@@ -491,7 +544,12 @@ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
sequence of nested includes
<wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
<stdint.h> and assumes its types are already defined. */
-#if ! (defined WCHAR_MIN && defined WCHAR_MAX)
+#if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX)
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
# include <wchar.h>
# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
@@ -511,12 +569,8 @@ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
#define WINT_MAX \
_STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
-#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
-
/* 7.18.4. Macros for integer constants */
-#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
-
/* 7.18.4.1. Macros for minimum-width integer constants */
/* According to ISO C 99 Technical Corrigendum 1 */
@@ -557,25 +611,26 @@ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
/* 7.18.4.2. Macros for greatest-width integer constants */
-#undef INTMAX_C
-#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
-# define INTMAX_C(x) x##LL
-#elif defined GL_INT64_T
-# define INTMAX_C(x) INT64_C(x)
-#else
-# define INTMAX_C(x) x##L
+#ifndef INTMAX_C
+# if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# define INTMAX_C(x) x##LL
+# elif defined GL_INT64_T
+# define INTMAX_C(x) INT64_C(x)
+# else
+# define INTMAX_C(x) x##L
+# endif
#endif
-#undef UINTMAX_C
-#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
-# define UINTMAX_C(x) x##ULL
-#elif defined GL_UINT64_T
-# define UINTMAX_C(x) UINT64_C(x)
-#else
-# define UINTMAX_C(x) x##UL
+#ifndef UINTMAX_C
+# if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define UINTMAX_C(x) x##ULL
+# elif defined GL_UINT64_T
+# define UINTMAX_C(x) UINT64_C(x)
+# else
+# define UINTMAX_C(x) x##UL
+# endif
#endif
-#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
-
-#endif /* _GL_STDINT_H */
-#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
+#endif /* _@GUARD_PREFIX@_STDINT_H */
+#endif /* !(defined __ANDROID__ && ...) */
+#endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
diff --git a/src/libs/gnulib/lib/streq.h b/src/libs/gnulib/lib/streq.h
index aa65bb8..12c1867 100644
--- a/src/libs/gnulib/lib/streq.h
+++ b/src/libs/gnulib/lib/streq.h
@@ -1,5 +1,5 @@
/* Optimized string comparison.
- Copyright (C) 2001-2002, 2007, 2009-2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2002, 2007, 2009-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published
@@ -9,7 +9,7 @@
This program 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
- Lesser General Public License for more details.
+ General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
@@ -21,8 +21,8 @@
#include <string.h>
-/* STREQ allows to optimize string comparison with a small literal string.
- STREQ (s, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
+/* STREQ_OPT allows to optimize string comparison with a small literal string.
+ STREQ_OPT (s, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
is semantically equivalent to
strcmp (s, "EUC-KR") == 0
just faster. */
@@ -163,12 +163,12 @@ streq0 (const char *s1, const char *s2, char s20, char s21, char s22, char s23,
return 0;
}
-#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
+#define STREQ_OPT(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
streq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)
#else
-#define STREQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
+#define STREQ_OPT(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
(strcmp (s1, s2) == 0)
#endif
diff --git a/src/libs/gnulib/lib/unitypes.in.h b/src/libs/gnulib/lib/unitypes.in.h
index 3e4ab0f..06eef05 100644
--- a/src/libs/gnulib/lib/unitypes.in.h
+++ b/src/libs/gnulib/lib/unitypes.in.h
@@ -1,5 +1,5 @@
-/* Elementary types for the GNU UniString library.
- Copyright (C) 2002, 2005-2006, 2009-2010 Free Software Foundation, Inc.
+/* Elementary types and macros for the GNU UniString library.
+ Copyright (C) 2002, 2005-2006, 2009-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published
@@ -9,7 +9,7 @@
This program 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
- Lesser General Public License for more details.
+ General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
@@ -23,4 +23,24 @@
/* Type representing a Unicode character. */
typedef uint32_t ucs4_t;
+/* Attribute of a function whose result depends only on the arguments
+ (not pointers!) and which has no side effects. */
+#ifndef _UC_ATTRIBUTE_CONST
+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+# define _UC_ATTRIBUTE_CONST __attribute__ ((__const__))
+# else
+# define _UC_ATTRIBUTE_CONST
+# endif
+#endif
+
+/* Attribute of a function whose result depends only on the arguments
+ (possibly pointers) and global memory, and which has no side effects. */
+#ifndef _UC_ATTRIBUTE_PURE
+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _UC_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+# define _UC_ATTRIBUTE_PURE
+# endif
+#endif
+
#endif /* _UNITYPES_H */
diff --git a/src/libs/gnulib/lib/uniwidth.in.h b/src/libs/gnulib/lib/uniwidth.in.h
index 9a52382..8931cc9 100644
--- a/src/libs/gnulib/lib/uniwidth.in.h
+++ b/src/libs/gnulib/lib/uniwidth.in.h
@@ -1,5 +1,5 @@
/* Display width functions.
- Copyright (C) 2001-2002, 2005, 2007, 2009-2010 Free Software Foundation,
+ Copyright (C) 2001-2002, 2005, 2007, 2009-2013 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify it
@@ -10,7 +10,7 @@
This program 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
- Lesser General Public License for more details.
+ General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
@@ -38,24 +38,31 @@ extern "C" {
/* Determine number of column positions required for UC. */
extern int
- uc_width (ucs4_t uc, const char *encoding);
+ uc_width (ucs4_t uc, const char *encoding)
+ _UC_ATTRIBUTE_PURE;
/* Determine number of column positions required for first N units
(or fewer if S ends before this) in S. */
extern int
- u8_width (const uint8_t *s, size_t n, const char *encoding);
+ u8_width (const uint8_t *s, size_t n, const char *encoding)
+ _UC_ATTRIBUTE_PURE;
extern int
- u16_width (const uint16_t *s, size_t n, const char *encoding);
+ u16_width (const uint16_t *s, size_t n, const char *encoding)
+ _UC_ATTRIBUTE_PURE;
extern int
- u32_width (const uint32_t *s, size_t n, const char *encoding);
+ u32_width (const uint32_t *s, size_t n, const char *encoding)
+ _UC_ATTRIBUTE_PURE;
/* Determine number of column positions required for S. */
extern int
- u8_strwidth (const uint8_t *s, const char *encoding);
+ u8_strwidth (const uint8_t *s, const char *encoding)
+ _UC_ATTRIBUTE_PURE;
extern int
- u16_strwidth (const uint16_t *s, const char *encoding);
+ u16_strwidth (const uint16_t *s, const char *encoding)
+ _UC_ATTRIBUTE_PURE;
extern int
- u32_strwidth (const uint32_t *s, const char *encoding);
+ u32_strwidth (const uint32_t *s, const char *encoding)
+ _UC_ATTRIBUTE_PURE;
#ifdef __cplusplus
diff --git a/src/libs/gnulib/lib/uniwidth/cjk.h b/src/libs/gnulib/lib/uniwidth/cjk.h
index ec130d7..11b14df 100644
--- a/src/libs/gnulib/lib/uniwidth/cjk.h
+++ b/src/libs/gnulib/lib/uniwidth/cjk.h
@@ -1,5 +1,5 @@
/* Test for CJK encoding.
- Copyright (C) 2001-2002, 2005-2007, 2009-2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2002, 2005-2007, 2009-2013 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2002.
This program is free software: you can redistribute it and/or modify it
@@ -10,7 +10,7 @@
This program 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
- Lesser General Public License for more details.
+ General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
@@ -22,16 +22,16 @@ is_cjk_encoding (const char *encoding)
{
if (0
/* Legacy Japanese encodings */
- || STREQ (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0)
+ || STREQ_OPT (encoding, "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0)
/* Legacy Chinese encodings */
- || STREQ (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
- || STREQ (encoding, "GBK", 'G', 'B', 'K', 0, 0, 0, 0, 0, 0)
- || STREQ (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0)
- || STREQ (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0)
+ || STREQ_OPT (encoding, "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
+ || STREQ_OPT (encoding, "GBK", 'G', 'B', 'K', 0, 0, 0, 0, 0, 0)
+ || STREQ_OPT (encoding, "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0)
+ || STREQ_OPT (encoding, "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0)
/* Legacy Korean encodings */
- || STREQ (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
- || STREQ (encoding, "CP949", 'C', 'P', '9', '4', '9', 0, 0, 0, 0)
- || STREQ (encoding, "JOHAB", 'J', 'O', 'H', 'A', 'B', 0, 0, 0, 0))
+ || STREQ_OPT (encoding, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
+ || STREQ_OPT (encoding, "CP949", 'C', 'P', '9', '4', '9', 0, 0, 0, 0)
+ || STREQ_OPT (encoding, "JOHAB", 'J', 'O', 'H', 'A', 'B', 0, 0, 0, 0))
return 1;
return 0;
}
diff --git a/src/libs/gnulib/lib/uniwidth/width.c b/src/libs/gnulib/lib/uniwidth/width.c
index 72177d8..173d087 100644
--- a/src/libs/gnulib/lib/uniwidth/width.c
+++ b/src/libs/gnulib/lib/uniwidth/width.c
@@ -1,5 +1,5 @@
/* Determine display width of Unicode character.
- Copyright (C) 2001-2002, 2006-2010 Free Software Foundation, Inc.
+ Copyright (C) 2001-2002, 2006-2013 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2002.
This program is free software: you can redistribute it and/or modify it
@@ -10,7 +10,7 @@
This program 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
- Lesser General Public License for more details.
+ General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
@@ -32,7 +32,7 @@
* - Zero width characters; generated from
* "grep '^[^;]*;ZERO WIDTH ' UnicodeData.txt"
*/
-static const unsigned char nonspacing_table_data[26*64] = {
+static const unsigned char nonspacing_table_data[27*64] = {
/* 0x0000-0x01ff */
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, /* 0x0000-0x003f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0x0040-0x007f */
@@ -62,20 +62,20 @@ static const unsigned char nonspacing_table_data[26*64] = {
0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x05c0-0x05ff */
/* 0x0600-0x07ff */
0x0f, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, /* 0x0600-0x063f */
- 0x00, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0x01, 0x00, /* 0x0640-0x067f */
+ 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, /* 0x0640-0x067f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0680-0x06bf */
- 0x00, 0x00, 0xc0, 0xff, 0x9f, 0x3d, 0x00, 0x00, /* 0x06c0-0x06ff */
+ 0x00, 0x00, 0xc0, 0xbf, 0x9f, 0x3d, 0x00, 0x00, /* 0x06c0-0x06ff */
0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, /* 0x0700-0x073f */
0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0740-0x077f */
0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, /* 0x0780-0x07bf */
0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, /* 0x07c0-0x07ff */
/* 0x0800-0x09ff */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0800-0x083f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0840-0x087f */
+ 0x00, 0x00, 0xc0, 0xfb, 0xef, 0x3e, 0x00, 0x00, /* 0x0800-0x083f */
+ 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, /* 0x0840-0x087f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0880-0x08bf */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08c0-0x08ff */
- 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0900-0x093f */
- 0xfe, 0x21, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0940-0x097f */
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, /* 0x0900-0x093f */
+ 0xfe, 0x21, 0xfe, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0940-0x097f */
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0980-0x09bf */
0x1e, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x09c0-0x09ff */
/* 0x0a00-0x0bff */
@@ -103,12 +103,12 @@ static const unsigned char nonspacing_table_data[26*64] = {
0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0ec0-0x0eff */
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xa0, 0x02, /* 0x0f00-0x0f3f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, /* 0x0f40-0x0f7f */
- 0xdf, 0x00, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x1f, /* 0x0f80-0x0fbf */
+ 0xdf, 0xe0, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x1f, /* 0x0f80-0x0fbf */
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0fc0-0x0fff */
/* 0x1000-0x11ff */
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfd, 0x66, /* 0x1000-0x103f */
0x00, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x1e, 0x00, /* 0x1040-0x107f */
- 0x64, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1080-0x10bf */
+ 0x64, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, /* 0x1080-0x10bf */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10c0-0x10ff */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1100-0x113f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1140-0x117f */
@@ -120,7 +120,7 @@ static const unsigned char nonspacing_table_data[26*64] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1280-0x12bf */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x12c0-0x12ff */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1300-0x133f */
- 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, /* 0x1340-0x137f */
+ 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, /* 0x1340-0x137f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1380-0x13bf */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x13c0-0x13ff */
/* 0x1600-0x17ff */
@@ -143,22 +143,22 @@ static const unsigned char nonspacing_table_data[26*64] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x19c0-0x19ff */
/* 0x1a00-0x1bff */
0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, /* 0x1a00-0x1a3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1a40-0x1a7f */
+ 0x00, 0x00, 0x40, 0x7f, 0xe5, 0x1f, 0xf8, 0x9f, /* 0x1a40-0x1a7f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1a80-0x1abf */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1ac0-0x1aff */
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x17, /* 0x1b00-0x1b3f */
0x04, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, /* 0x1b40-0x1b7f */
0x03, 0x00, 0x00, 0x00, 0x3c, 0x03, 0x00, 0x00, /* 0x1b80-0x1bbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1bc0-0x1bff */
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0xa3, 0x03, 0x00, /* 0x1bc0-0x1bff */
/* 0x1c00-0x1dff */
0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xcf, 0x00, /* 0x1c00-0x1c3f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c40-0x1c7f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1c80-0x1cbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1cc0-0x1cff */
+ 0x00, 0x00, 0xf7, 0xff, 0xfd, 0x21, 0x00, 0x00, /* 0x1cc0-0x1cff */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d00-0x1d3f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d40-0x1d7f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d80-0x1dbf */
- 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, /* 0x1dc0-0x1dff */
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf0, /* 0x1dc0-0x1dff */
/* 0x2000-0x21ff */
0x00, 0xf8, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, /* 0x2000-0x203f */
0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, /* 0x2040-0x207f */
@@ -172,9 +172,9 @@ static const unsigned char nonspacing_table_data[26*64] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2c00-0x2c3f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2c40-0x2c7f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2c80-0x2cbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2cc0-0x2cff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, /* 0x2cc0-0x2cff */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2d00-0x2d3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2d40-0x2d7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0x2d40-0x2d7f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x2d80-0x2dbf */
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, /* 0x2dc0-0x2dff */
/* 0x3000-0x31ff */
@@ -190,7 +190,7 @@ static const unsigned char nonspacing_table_data[26*64] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa600-0xa63f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x30, /* 0xa640-0xa67f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa680-0xa6bf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa6c0-0xa6ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0xa6c0-0xa6ff */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa700-0xa73f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa740-0xa77f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa780-0xa7bf */
@@ -199,20 +199,20 @@ static const unsigned char nonspacing_table_data[26*64] = {
0x44, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, /* 0xa800-0xa83f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa840-0xa87f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa880-0xa8bf */
- 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8c0-0xa8ff */
+ 0x10, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, /* 0xa8c0-0xa8ff */
0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, /* 0xa900-0xa93f */
0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa940-0xa97f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa980-0xa9bf */
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x13, /* 0xa980-0xa9bf */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa9c0-0xa9ff */
/* 0xaa00-0xabff */
0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x66, 0x00, /* 0xaa00-0xaa3f */
0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xaa40-0xaa7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xaa80-0xaabf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xaac0-0xaaff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0xc1, /* 0xaa80-0xaabf */
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xaac0-0xaaff */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xab00-0xab3f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xab40-0xab7f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xab80-0xabbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xabc0-0xabff */
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x21, 0x00, 0x00, /* 0xabc0-0xabff */
/* 0xfa00-0xfbff */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa00-0xfa3f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xfa40-0xfa7f */
@@ -249,13 +249,22 @@ static const unsigned char nonspacing_table_data[26*64] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b40-0x10b7f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10b80-0x10bbf */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10bc0-0x10bff */
+ /* 0x11000-0x111ff */
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, /* 0x11000-0x1103f */
+ 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11040-0x1107f */
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x26, /* 0x11080-0x110bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x110c0-0x110ff */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11100-0x1113f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11140-0x1117f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11180-0x111bf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x111c0-0x111ff */
/* 0x1d000-0x1d1ff */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d000-0x1d03f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d040-0x1d07f */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d080-0x1d0bf */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d0c0-0x1d0ff */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d100-0x1d13f */
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xf8, /* 0x1d140-0x1d17f */
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xf8, 0xff, /* 0x1d140-0x1d17f */
0xe7, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, /* 0x1d180-0x1d1bf */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1d1c0-0x1d1ff */
/* 0x1d200-0x1d3ff */
@@ -286,7 +295,7 @@ static const signed char nonspacing_table_ind[240] = {
-1, -1, -1, -1, -1, -1, -1, -1, /* 0xe000-0xefff */
-1, -1, -1, -1, -1, 20, -1, 21, /* 0xf000-0xffff */
22, -1, -1, -1, -1, 23, -1, -1, /* 0x10000-0x10fff */
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x11000-0x11fff */
+ 24, -1, -1, -1, -1, -1, -1, -1, /* 0x11000-0x11fff */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x12000-0x12fff */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x13000-0x13fff */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x14000-0x14fff */
@@ -298,7 +307,7 @@ static const signed char nonspacing_table_ind[240] = {
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x1a000-0x1afff */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x1b000-0x1bfff */
-1, -1, -1, -1, -1, -1, -1, -1, /* 0x1c000-0x1cfff */
- 24, 25, -1, -1, -1, -1, -1, -1 /* 0x1d000-0x1dfff */
+ 25, 26, -1, -1, -1, -1, -1, -1 /* 0x1d000-0x1dfff */
};
/* Determine number of column positions required for UC. */
@@ -346,8 +355,8 @@ uc_width (ucs4_t uc, const char *encoding)
|| (uc >= 0xfe30 && uc < 0xfe70) /* CJK Compatibility Forms */
|| (uc >= 0xff00 && uc < 0xff61) /* Fullwidth Forms */
|| (uc >= 0xffe0 && uc < 0xffe7) /* Fullwidth Signs */
- || (uc >= 0x20000 && uc <= 0x2a6d6) /* CJK */
- || (uc >= 0x2f800 && uc <= 0x2fa1d) /* CJK Compatibility Ideographs */
+ || (uc >= 0x20000 && uc <= 0x2ffff) /* Supplementary Ideographic Plane */
+ || (uc >= 0x30000 && uc <= 0x3ffff) /* Tertiary Ideographic Plane */
) )
return 2;
/* In ancient CJK encodings, Cyrillic and most other characters are
diff --git a/src/libs/gnulib/lib/verify.h b/src/libs/gnulib/lib/verify.h
new file mode 100644
index 0000000..cb8e90b
--- /dev/null
+++ b/src/libs/gnulib/lib/verify.h
@@ -0,0 +1,245 @@
+/* Compile-time assert-like macros.
+
+ Copyright (C) 2005-2006, 2009-2013 Free Software Foundation, Inc.
+
+ This program 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 3 of the License, or
+ (at your option) any later version.
+
+ This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */
+
+#ifndef _GL_VERIFY_H
+# define _GL_VERIFY_H
+
+
+/* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert works as per C11.
+ This is supported by GCC 4.6.0 and later, in C mode, and its use
+ here generates easier-to-read diagnostics when verify (R) fails.
+
+ Define _GL_HAVE_STATIC_ASSERT to 1 if static_assert works as per C++11.
+ This will likely be supported by future GCC versions, in C++ mode.
+
+ Use this only with GCC. If we were willing to slow 'configure'
+ down we could also use it with other compilers, but since this
+ affects only the quality of diagnostics, why bother? */
+# if (4 < __GNUC__ || (__GNUC__ == 4 && 6 <= __GNUC_MINOR__)) && !defined __cplusplus
+# define _GL_HAVE__STATIC_ASSERT 1
+# endif
+/* The condition (99 < __GNUC__) is temporary, until we know about the
+ first G++ release that supports static_assert. */
+# if (99 < __GNUC__) && defined __cplusplus
+# define _GL_HAVE_STATIC_ASSERT 1
+# endif
+
+/* Each of these macros verifies that its argument R is nonzero. To
+ be portable, R should be an integer constant expression. Unlike
+ assert (R), there is no run-time overhead.
+
+ If _Static_assert works, verify (R) uses it directly. Similarly,
+ _GL_VERIFY_TRUE works by packaging a _Static_assert inside a struct
+ that is an operand of sizeof.
+
+ The code below uses several ideas for C++ compilers, and for C
+ compilers that do not support _Static_assert:
+
+ * The first step is ((R) ? 1 : -1). Given an expression R, of
+ integral or boolean or floating-point type, this yields an
+ expression of integral type, whose value is later verified to be
+ constant and nonnegative.
+
+ * Next this expression W is wrapped in a type
+ struct _gl_verify_type {
+ unsigned int _gl_verify_error_if_negative: W;
+ }.
+ If W is negative, this yields a compile-time error. No compiler can
+ deal with a bit-field of negative size.
+
+ One might think that an array size check would have the same
+ effect, that is, that the type struct { unsigned int dummy[W]; }
+ would work as well. However, inside a function, some compilers
+ (such as C++ compilers and GNU C) allow local parameters and
+ variables inside array size expressions. With these compilers,
+ an array size check would not properly diagnose this misuse of
+ the verify macro:
+
+ void function (int n) { verify (n < 0); }
+
+ * For the verify macro, the struct _gl_verify_type will need to
+ somehow be embedded into a declaration. To be portable, this
+ declaration must declare an object, a constant, a function, or a
+ typedef name. If the declared entity uses the type directly,
+ such as in
+
+ struct dummy {...};
+ typedef struct {...} dummy;
+ extern struct {...} *dummy;
+ extern void dummy (struct {...} *);
+ extern struct {...} *dummy (void);
+
+ two uses of the verify macro would yield colliding declarations
+ if the entity names are not disambiguated. A workaround is to
+ attach the current line number to the entity name:
+
+ #define _GL_CONCAT0(x, y) x##y
+ #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y)
+ extern struct {...} * _GL_CONCAT (dummy, __LINE__);
+
+ But this has the problem that two invocations of verify from
+ within the same macro would collide, since the __LINE__ value
+ would be the same for both invocations. (The GCC __COUNTER__
+ macro solves this problem, but is not portable.)
+
+ A solution is to use the sizeof operator. It yields a number,
+ getting rid of the identity of the type. Declarations like
+
+ extern int dummy [sizeof (struct {...})];
+ extern void dummy (int [sizeof (struct {...})]);
+ extern int (*dummy (void)) [sizeof (struct {...})];
+
+ can be repeated.
+
+ * Should the implementation use a named struct or an unnamed struct?
+ Which of the following alternatives can be used?
+
+ extern int dummy [sizeof (struct {...})];
+ extern int dummy [sizeof (struct _gl_verify_type {...})];
+ extern void dummy (int [sizeof (struct {...})]);
+ extern void dummy (int [sizeof (struct _gl_verify_type {...})]);
+ extern int (*dummy (void)) [sizeof (struct {...})];
+ extern int (*dummy (void)) [sizeof (struct _gl_verify_type {...})];
+
+ In the second and sixth case, the struct type is exported to the
+ outer scope; two such declarations therefore collide. GCC warns
+ about the first, third, and fourth cases. So the only remaining
+ possibility is the fifth case:
+
+ extern int (*dummy (void)) [sizeof (struct {...})];
+
+ * GCC warns about duplicate declarations of the dummy function if
+ -Wredundant-decls is used. GCC 4.3 and later have a builtin
+ __COUNTER__ macro that can let us generate unique identifiers for
+ each dummy function, to suppress this warning.
+
+ * This implementation exploits the fact that older versions of GCC,
+ which do not support _Static_assert, also do not warn about the
+ last declaration mentioned above.
+
+ * GCC warns if -Wnested-externs is enabled and verify() is used
+ within a function body; but inside a function, you can always
+ arrange to use verify_expr() instead.
+
+ * In C++, any struct definition inside sizeof is invalid.
+ Use a template type to work around the problem. */
+
+/* Concatenate two preprocessor tokens. */
+# define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y)
+# define _GL_CONCAT0(x, y) x##y
+
+/* _GL_COUNTER is an integer, preferably one that changes each time we
+ use it. Use __COUNTER__ if it works, falling back on __LINE__
+ otherwise. __LINE__ isn't perfect, but it's better than a
+ constant. */
+# if defined __COUNTER__ && __COUNTER__ != __COUNTER__
+# define _GL_COUNTER __COUNTER__
+# else
+# define _GL_COUNTER __LINE__
+# endif
+
+/* Generate a symbol with the given prefix, making it unique if
+ possible. */
+# define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER)
+
+/* Verify requirement R at compile-time, as an integer constant expression
+ that returns 1. If R is false, fail at compile-time, preferably
+ with a diagnostic that includes the string-literal DIAGNOSTIC. */
+
+# define _GL_VERIFY_TRUE(R, DIAGNOSTIC) \
+ (!!sizeof (_GL_VERIFY_TYPE (R, DIAGNOSTIC)))
+
+# ifdef __cplusplus
+# if !GNULIB_defined_struct__gl_verify_type
+template <int w>
+ struct _gl_verify_type {
+ unsigned int _gl_verify_error_if_negative: w;
+ };
+# define GNULIB_defined_struct__gl_verify_type 1
+# endif
+# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
+ _gl_verify_type<(R) ? 1 : -1>
+# elif defined _GL_HAVE__STATIC_ASSERT
+# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
+ struct { \
+ _Static_assert (R, DIAGNOSTIC); \
+ int _gl_dummy; \
+ }
+# else
+# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
+ struct { unsigned int _gl_verify_error_if_negative: (R) ? 1 : -1; }
+# endif
+
+/* Verify requirement R at compile-time, as a declaration without a
+ trailing ';'. If R is false, fail at compile-time, preferably
+ with a diagnostic that includes the string-literal DIAGNOSTIC.
+
+ Unfortunately, unlike C11, this implementation must appear as an
+ ordinary declaration, and cannot appear inside struct { ... }. */
+
+# ifdef _GL_HAVE__STATIC_ASSERT
+# define _GL_VERIFY _Static_assert
+# else
+# define _GL_VERIFY(R, DIAGNOSTIC) \
+ extern int (*_GL_GENSYM (_gl_verify_function) (void)) \
+ [_GL_VERIFY_TRUE (R, DIAGNOSTIC)]
+# endif
+
+/* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h. */
+# ifdef _GL_STATIC_ASSERT_H
+# if !defined _GL_HAVE__STATIC_ASSERT && !defined _Static_assert
+# define _Static_assert(R, DIAGNOSTIC) _GL_VERIFY (R, DIAGNOSTIC)
+# endif
+# if !defined _GL_HAVE_STATIC_ASSERT && !defined static_assert
+# define static_assert _Static_assert /* C11 requires this #define. */
+# endif
+# endif
+
+/* @assert.h omit start@ */
+
+/* Each of these macros verifies that its argument R is nonzero. To
+ be portable, R should be an integer constant expression. Unlike
+ assert (R), there is no run-time overhead.
+
+ There are two macros, since no single macro can be used in all
+ contexts in C. verify_true (R) is for scalar contexts, including
+ integer constant expression contexts. verify (R) is for declaration
+ contexts, e.g., the top level. */
+
+/* Verify requirement R at compile-time, as an integer constant expression.
+ Return 1. This is equivalent to verify_expr (R, 1).
+
+ verify_true is obsolescent; please use verify_expr instead. */
+
+# define verify_true(R) _GL_VERIFY_TRUE (R, "verify_true (" #R ")")
+
+/* Verify requirement R at compile-time. Return the value of the
+ expression E. */
+
+# define verify_expr(R, E) \
+ (_GL_VERIFY_TRUE (R, "verify_expr (" #R ", " #E ")") ? (E) : (E))
+
+/* Verify requirement R at compile-time, as a declaration without a
+ trailing ';'. */
+
+# define verify(R) _GL_VERIFY (R, "verify (" #R ")")
+
+/* @assert.h omit end@ */
+
+#endif
diff --git a/src/libs/gnulib/lib/wchar.in.h b/src/libs/gnulib/lib/wchar.in.h
index c22dc06..b6e4362 100644
--- a/src/libs/gnulib/lib/wchar.in.h
+++ b/src/libs/gnulib/lib/wchar.in.h
@@ -1,6 +1,6 @@
/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
- Copyright (C) 2007-2010 Free Software Foundation, Inc.
+ Copyright (C) 2007-2013 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -13,8 +13,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
/* Written by Eric Blake. */
@@ -49,7 +48,7 @@
#else
/* Normal invocation convention. */
-#ifndef _GL_WCHAR_H
+#ifndef _@GUARD_PREFIX@_WCHAR_H
#define _GL_ALREADY_INCLUDING_WCHAR_H
@@ -61,9 +60,13 @@
<wchar.h>.
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
included before <wchar.h>.
+ In some builds of uClibc, <wchar.h> is nonexistent and wchar_t is defined
+ by <stddef.h>.
But avoid namespace pollution on glibc systems. */
-#ifndef __GLIBC__
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
# include <stddef.h>
+#endif
+#ifndef __GLIBC__
# include <stdio.h>
# include <time.h>
#endif
@@ -77,8 +80,16 @@
#undef _GL_ALREADY_INCLUDING_WCHAR_H
-#ifndef _GL_WCHAR_H
-#define _GL_WCHAR_H
+#ifndef _@GUARD_PREFIX@_WCHAR_H
+#define _@GUARD_PREFIX@_WCHAR_H
+
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
+ The attribute __pure__ was added in gcc 2.96. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
+#endif
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
@@ -94,6 +105,18 @@
# define WEOF -1
# endif
#else
+/* MSVC defines wint_t as 'unsigned short' in <crtdefs.h>.
+ This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be
+ "unchanged by default argument promotions". Override it. */
+# if defined _MSC_VER
+# if !GNULIB_defined_wint_t
+# include <crtdefs.h>
+typedef unsigned int rpl_wint_t;
+# undef wint_t
+# define wint_t rpl_wint_t
+# define GNULIB_defined_wint_t 1
+# endif
+# endif
# ifndef WEOF
# define WEOF ((wint_t) -1)
# endif
@@ -104,10 +127,12 @@
On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
implementing mbrtowc for encodings like UTF-8. */
#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
+# if !GNULIB_defined_mbstate_t
typedef int rpl_mbstate_t;
-# undef mbstate_t
-# define mbstate_t rpl_mbstate_t
-# define GNULIB_defined_mbstate_t 1
+# undef mbstate_t
+# define mbstate_t rpl_mbstate_t
+# define GNULIB_defined_mbstate_t 1
+# endif
#endif
@@ -118,11 +143,11 @@ typedef int rpl_mbstate_t;
# undef btowc
# define btowc rpl_btowc
# endif
-_GL_FUNCDECL_RPL (btowc, wint_t, (int c));
+_GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
_GL_CXXALIAS_RPL (btowc, wint_t, (int c));
# else
# if !@HAVE_BTOWC@
-_GL_FUNCDECL_SYS (btowc, wint_t, (int c));
+_GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
# endif
_GL_CXXALIAS_SYS (btowc, wint_t, (int c));
# endif
@@ -143,12 +168,12 @@ _GL_WARN_ON_USE (btowc, "btowc is unportable - "
# undef wctob
# define wctob rpl_wctob
# endif
-_GL_FUNCDECL_RPL (wctob, int, (wint_t wc));
+_GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
_GL_CXXALIAS_RPL (wctob, int, (wint_t wc));
# else
# if !defined wctob && !@HAVE_DECL_WCTOB@
/* wctob is provided by gnulib, or wctob exists but is not declared. */
-_GL_FUNCDECL_SYS (wctob, int, (wint_t wc));
+_GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
# endif
_GL_CXXALIAS_SYS (wctob, int, (wint_t wc));
# endif
@@ -409,12 +434,12 @@ _GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - "
# undef wcwidth
# define wcwidth rpl_wcwidth
# endif
-_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t));
+_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
_GL_CXXALIAS_RPL (wcwidth, int, (wchar_t));
# else
# if !@HAVE_DECL_WCWIDTH@
/* wcwidth exists but is not declared. */
-_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t));
+_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
# endif
_GL_CXXALIAS_SYS (wcwidth, int, (wchar_t));
# endif
@@ -428,6 +453,576 @@ _GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - "
#endif
-#endif /* _GL_WCHAR_H */
-#endif /* _GL_WCHAR_H */
+/* Search N wide characters of S for C. */
+#if @GNULIB_WMEMCHR@
+# if !@HAVE_WMEMCHR@
+_GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n)
+ _GL_ATTRIBUTE_PURE);
+# endif
+ /* On some systems, this function is defined as an overloaded function:
+ extern "C++" {
+ const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t);
+ wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t);
+ } */
+_GL_CXXALIAS_SYS_CAST2 (wmemchr,
+ wchar_t *, (const wchar_t *, wchar_t, size_t),
+ const wchar_t *, (const wchar_t *, wchar_t, size_t));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
+_GL_CXXALIASWARN1 (wmemchr, const wchar_t *,
+ (const wchar_t *s, wchar_t c, size_t n));
+# else
+_GL_CXXALIASWARN (wmemchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wmemchr
+# if HAVE_RAW_DECL_WMEMCHR
+_GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - "
+ "use gnulib module wmemchr for portability");
+# endif
+#endif
+
+
+/* Compare N wide characters of S1 and S2. */
+#if @GNULIB_WMEMCMP@
+# if !@HAVE_WMEMCMP@
+_GL_FUNCDECL_SYS (wmemcmp, int,
+ (const wchar_t *s1, const wchar_t *s2, size_t n)
+ _GL_ATTRIBUTE_PURE);
+# endif
+_GL_CXXALIAS_SYS (wmemcmp, int,
+ (const wchar_t *s1, const wchar_t *s2, size_t n));
+_GL_CXXALIASWARN (wmemcmp);
+#elif defined GNULIB_POSIXCHECK
+# undef wmemcmp
+# if HAVE_RAW_DECL_WMEMCMP
+_GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - "
+ "use gnulib module wmemcmp for portability");
+# endif
+#endif
+
+
+/* Copy N wide characters of SRC to DEST. */
+#if @GNULIB_WMEMCPY@
+# if !@HAVE_WMEMCPY@
+_GL_FUNCDECL_SYS (wmemcpy, wchar_t *,
+ (wchar_t *dest, const wchar_t *src, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wmemcpy, wchar_t *,
+ (wchar_t *dest, const wchar_t *src, size_t n));
+_GL_CXXALIASWARN (wmemcpy);
+#elif defined GNULIB_POSIXCHECK
+# undef wmemcpy
+# if HAVE_RAW_DECL_WMEMCPY
+_GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - "
+ "use gnulib module wmemcpy for portability");
+# endif
+#endif
+
+
+/* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for
+ overlapping memory areas. */
+#if @GNULIB_WMEMMOVE@
+# if !@HAVE_WMEMMOVE@
+_GL_FUNCDECL_SYS (wmemmove, wchar_t *,
+ (wchar_t *dest, const wchar_t *src, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wmemmove, wchar_t *,
+ (wchar_t *dest, const wchar_t *src, size_t n));
+_GL_CXXALIASWARN (wmemmove);
+#elif defined GNULIB_POSIXCHECK
+# undef wmemmove
+# if HAVE_RAW_DECL_WMEMMOVE
+_GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - "
+ "use gnulib module wmemmove for portability");
+# endif
+#endif
+
+
+/* Set N wide characters of S to C. */
+#if @GNULIB_WMEMSET@
+# if !@HAVE_WMEMSET@
+_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
+_GL_CXXALIASWARN (wmemset);
+#elif defined GNULIB_POSIXCHECK
+# undef wmemset
+# if HAVE_RAW_DECL_WMEMSET
+_GL_WARN_ON_USE (wmemset, "wmemset is unportable - "
+ "use gnulib module wmemset for portability");
+# endif
+#endif
+
+
+/* Return the number of wide characters in S. */
+#if @GNULIB_WCSLEN@
+# if !@HAVE_WCSLEN@
+_GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE);
+# endif
+_GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s));
+_GL_CXXALIASWARN (wcslen);
+#elif defined GNULIB_POSIXCHECK
+# undef wcslen
+# if HAVE_RAW_DECL_WCSLEN
+_GL_WARN_ON_USE (wcslen, "wcslen is unportable - "
+ "use gnulib module wcslen for portability");
+# endif
+#endif
+
+
+/* Return the number of wide characters in S, but at most MAXLEN. */
+#if @GNULIB_WCSNLEN@
+# if !@HAVE_WCSNLEN@
+_GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)
+ _GL_ATTRIBUTE_PURE);
+# endif
+_GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen));
+_GL_CXXALIASWARN (wcsnlen);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsnlen
+# if HAVE_RAW_DECL_WCSNLEN
+_GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - "
+ "use gnulib module wcsnlen for portability");
+# endif
+#endif
+
+
+/* Copy SRC to DEST. */
+#if @GNULIB_WCSCPY@
+# if !@HAVE_WCSCPY@
+_GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
+# endif
+_GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
+_GL_CXXALIASWARN (wcscpy);
+#elif defined GNULIB_POSIXCHECK
+# undef wcscpy
+# if HAVE_RAW_DECL_WCSCPY
+_GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - "
+ "use gnulib module wcscpy for portability");
+# endif
+#endif
+
+
+/* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST. */
+#if @GNULIB_WCPCPY@
+# if !@HAVE_WCPCPY@
+_GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
+# endif
+_GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
+_GL_CXXALIASWARN (wcpcpy);
+#elif defined GNULIB_POSIXCHECK
+# undef wcpcpy
+# if HAVE_RAW_DECL_WCPCPY
+_GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - "
+ "use gnulib module wcpcpy for portability");
+# endif
+#endif
+
+
+/* Copy no more than N wide characters of SRC to DEST. */
+#if @GNULIB_WCSNCPY@
+# if !@HAVE_WCSNCPY@
+_GL_FUNCDECL_SYS (wcsncpy, wchar_t *,
+ (wchar_t *dest, const wchar_t *src, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wcsncpy, wchar_t *,
+ (wchar_t *dest, const wchar_t *src, size_t n));
+_GL_CXXALIASWARN (wcsncpy);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsncpy
+# if HAVE_RAW_DECL_WCSNCPY
+_GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - "
+ "use gnulib module wcsncpy for portability");
+# endif
+#endif
+
+
+/* Copy no more than N characters of SRC to DEST, returning the address of
+ the last character written into DEST. */
+#if @GNULIB_WCPNCPY@
+# if !@HAVE_WCPNCPY@
+_GL_FUNCDECL_SYS (wcpncpy, wchar_t *,
+ (wchar_t *dest, const wchar_t *src, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wcpncpy, wchar_t *,
+ (wchar_t *dest, const wchar_t *src, size_t n));
+_GL_CXXALIASWARN (wcpncpy);
+#elif defined GNULIB_POSIXCHECK
+# undef wcpncpy
+# if HAVE_RAW_DECL_WCPNCPY
+_GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - "
+ "use gnulib module wcpncpy for portability");
+# endif
+#endif
+
+
+/* Append SRC onto DEST. */
+#if @GNULIB_WCSCAT@
+# if !@HAVE_WCSCAT@
+_GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
+# endif
+_GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
+_GL_CXXALIASWARN (wcscat);
+#elif defined GNULIB_POSIXCHECK
+# undef wcscat
+# if HAVE_RAW_DECL_WCSCAT
+_GL_WARN_ON_USE (wcscat, "wcscat is unportable - "
+ "use gnulib module wcscat for portability");
+# endif
+#endif
+
+
+/* Append no more than N wide characters of SRC onto DEST. */
+#if @GNULIB_WCSNCAT@
+# if !@HAVE_WCSNCAT@
+_GL_FUNCDECL_SYS (wcsncat, wchar_t *,
+ (wchar_t *dest, const wchar_t *src, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wcsncat, wchar_t *,
+ (wchar_t *dest, const wchar_t *src, size_t n));
+_GL_CXXALIASWARN (wcsncat);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsncat
+# if HAVE_RAW_DECL_WCSNCAT
+_GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - "
+ "use gnulib module wcsncat for portability");
+# endif
+#endif
+
+
+/* Compare S1 and S2. */
+#if @GNULIB_WCSCMP@
+# if !@HAVE_WCSCMP@
+_GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)
+ _GL_ATTRIBUTE_PURE);
+# endif
+_GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2));
+_GL_CXXALIASWARN (wcscmp);
+#elif defined GNULIB_POSIXCHECK
+# undef wcscmp
+# if HAVE_RAW_DECL_WCSCMP
+_GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - "
+ "use gnulib module wcscmp for portability");
+# endif
+#endif
+
+
+/* Compare no more than N wide characters of S1 and S2. */
+#if @GNULIB_WCSNCMP@
+# if !@HAVE_WCSNCMP@
+_GL_FUNCDECL_SYS (wcsncmp, int,
+ (const wchar_t *s1, const wchar_t *s2, size_t n)
+ _GL_ATTRIBUTE_PURE);
+# endif
+_GL_CXXALIAS_SYS (wcsncmp, int,
+ (const wchar_t *s1, const wchar_t *s2, size_t n));
+_GL_CXXALIASWARN (wcsncmp);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsncmp
+# if HAVE_RAW_DECL_WCSNCMP
+_GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - "
+ "use gnulib module wcsncmp for portability");
+# endif
+#endif
+
+
+/* Compare S1 and S2, ignoring case. */
+#if @GNULIB_WCSCASECMP@
+# if !@HAVE_WCSCASECMP@
+_GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)
+ _GL_ATTRIBUTE_PURE);
+# endif
+_GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2));
+_GL_CXXALIASWARN (wcscasecmp);
+#elif defined GNULIB_POSIXCHECK
+# undef wcscasecmp
+# if HAVE_RAW_DECL_WCSCASECMP
+_GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - "
+ "use gnulib module wcscasecmp for portability");
+# endif
+#endif
+
+
+/* Compare no more than N chars of S1 and S2, ignoring case. */
+#if @GNULIB_WCSNCASECMP@
+# if !@HAVE_WCSNCASECMP@
+_GL_FUNCDECL_SYS (wcsncasecmp, int,
+ (const wchar_t *s1, const wchar_t *s2, size_t n)
+ _GL_ATTRIBUTE_PURE);
+# endif
+_GL_CXXALIAS_SYS (wcsncasecmp, int,
+ (const wchar_t *s1, const wchar_t *s2, size_t n));
+_GL_CXXALIASWARN (wcsncasecmp);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsncasecmp
+# if HAVE_RAW_DECL_WCSNCASECMP
+_GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - "
+ "use gnulib module wcsncasecmp for portability");
+# endif
+#endif
+
+
+/* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE
+ category of the current locale. */
+#if @GNULIB_WCSCOLL@
+# if !@HAVE_WCSCOLL@
+_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
+# endif
+_GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
+_GL_CXXALIASWARN (wcscoll);
+#elif defined GNULIB_POSIXCHECK
+# undef wcscoll
+# if HAVE_RAW_DECL_WCSCOLL
+_GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - "
+ "use gnulib module wcscoll for portability");
+# endif
+#endif
+
+
+/* Transform S2 into array pointed to by S1 such that if wcscmp is applied
+ to two transformed strings the result is the as applying 'wcscoll' to the
+ original strings. */
+#if @GNULIB_WCSXFRM@
+# if !@HAVE_WCSXFRM@
+_GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
+# endif
+_GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
+_GL_CXXALIASWARN (wcsxfrm);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsxfrm
+# if HAVE_RAW_DECL_WCSXFRM
+_GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - "
+ "use gnulib module wcsxfrm for portability");
+# endif
+#endif
+
+
+/* Duplicate S, returning an identical malloc'd string. */
+#if @GNULIB_WCSDUP@
+# if !@HAVE_WCSDUP@
+_GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s));
+# endif
+_GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s));
+_GL_CXXALIASWARN (wcsdup);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsdup
+# if HAVE_RAW_DECL_WCSDUP
+_GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - "
+ "use gnulib module wcsdup for portability");
+# endif
+#endif
+
+
+/* Find the first occurrence of WC in WCS. */
+#if @GNULIB_WCSCHR@
+# if !@HAVE_WCSCHR@
+_GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
+ _GL_ATTRIBUTE_PURE);
+# endif
+ /* On some systems, this function is defined as an overloaded function:
+ extern "C++" {
+ const wchar_t * std::wcschr (const wchar_t *, wchar_t);
+ wchar_t * std::wcschr (wchar_t *, wchar_t);
+ } */
+_GL_CXXALIAS_SYS_CAST2 (wcschr,
+ wchar_t *, (const wchar_t *, wchar_t),
+ const wchar_t *, (const wchar_t *, wchar_t));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc));
+_GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
+# else
+_GL_CXXALIASWARN (wcschr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcschr
+# if HAVE_RAW_DECL_WCSCHR
+_GL_WARN_ON_USE (wcschr, "wcschr is unportable - "
+ "use gnulib module wcschr for portability");
+# endif
+#endif
+
+
+/* Find the last occurrence of WC in WCS. */
+#if @GNULIB_WCSRCHR@
+# if !@HAVE_WCSRCHR@
+_GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
+ _GL_ATTRIBUTE_PURE);
+# endif
+ /* On some systems, this function is defined as an overloaded function:
+ extern "C++" {
+ const wchar_t * std::wcsrchr (const wchar_t *, wchar_t);
+ wchar_t * std::wcsrchr (wchar_t *, wchar_t);
+ } */
+_GL_CXXALIAS_SYS_CAST2 (wcsrchr,
+ wchar_t *, (const wchar_t *, wchar_t),
+ const wchar_t *, (const wchar_t *, wchar_t));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc));
+_GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
+# else
+_GL_CXXALIASWARN (wcsrchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcsrchr
+# if HAVE_RAW_DECL_WCSRCHR
+_GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - "
+ "use gnulib module wcsrchr for portability");
+# endif
+#endif
+
+
+/* Return the length of the initial segmet of WCS which consists entirely
+ of wide characters not in REJECT. */
+#if @GNULIB_WCSCSPN@
+# if !@HAVE_WCSCSPN@
+_GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)
+ _GL_ATTRIBUTE_PURE);
+# endif
+_GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject));
+_GL_CXXALIASWARN (wcscspn);
+#elif defined GNULIB_POSIXCHECK
+# undef wcscspn
+# if HAVE_RAW_DECL_WCSCSPN
+_GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - "
+ "use gnulib module wcscspn for portability");
+# endif
+#endif
+
+
+/* Return the length of the initial segmet of WCS which consists entirely
+ of wide characters in ACCEPT. */
+#if @GNULIB_WCSSPN@
+# if !@HAVE_WCSSPN@
+_GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)
+ _GL_ATTRIBUTE_PURE);
+# endif
+_GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept));
+_GL_CXXALIASWARN (wcsspn);
+#elif defined GNULIB_POSIXCHECK
+# undef wcsspn
+# if HAVE_RAW_DECL_WCSSPN
+_GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - "
+ "use gnulib module wcsspn for portability");
+# endif
+#endif
+
+
+/* Find the first occurrence in WCS of any character in ACCEPT. */
+#if @GNULIB_WCSPBRK@
+# if !@HAVE_WCSPBRK@
+_GL_FUNCDECL_SYS (wcspbrk, wchar_t *,
+ (const wchar_t *wcs, const wchar_t *accept)
+ _GL_ATTRIBUTE_PURE);
+# endif
+ /* On some systems, this function is defined as an overloaded function:
+ extern "C++" {
+ const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *);
+ wchar_t * std::wcspbrk (wchar_t *, const wchar_t *);
+ } */
+_GL_CXXALIAS_SYS_CAST2 (wcspbrk,
+ wchar_t *, (const wchar_t *, const wchar_t *),
+ const wchar_t *, (const wchar_t *, const wchar_t *));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (wcspbrk, wchar_t *,
+ (wchar_t *wcs, const wchar_t *accept));
+_GL_CXXALIASWARN1 (wcspbrk, const wchar_t *,
+ (const wchar_t *wcs, const wchar_t *accept));
+# else
+_GL_CXXALIASWARN (wcspbrk);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcspbrk
+# if HAVE_RAW_DECL_WCSPBRK
+_GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - "
+ "use gnulib module wcspbrk for portability");
+# endif
+#endif
+
+
+/* Find the first occurrence of NEEDLE in HAYSTACK. */
+#if @GNULIB_WCSSTR@
+# if !@HAVE_WCSSTR@
+_GL_FUNCDECL_SYS (wcsstr, wchar_t *,
+ (const wchar_t *haystack, const wchar_t *needle)
+ _GL_ATTRIBUTE_PURE);
+# endif
+ /* On some systems, this function is defined as an overloaded function:
+ extern "C++" {
+ const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *);
+ wchar_t * std::wcsstr (wchar_t *, const wchar_t *);
+ } */
+_GL_CXXALIAS_SYS_CAST2 (wcsstr,
+ wchar_t *, (const wchar_t *, const wchar_t *),
+ const wchar_t *, (const wchar_t *, const wchar_t *));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (wcsstr, wchar_t *,
+ (wchar_t *haystack, const wchar_t *needle));
+_GL_CXXALIASWARN1 (wcsstr, const wchar_t *,
+ (const wchar_t *haystack, const wchar_t *needle));
+# else
+_GL_CXXALIASWARN (wcsstr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef wcsstr
+# if HAVE_RAW_DECL_WCSSTR
+_GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - "
+ "use gnulib module wcsstr for portability");
+# endif
+#endif
+
+
+/* Divide WCS into tokens separated by characters in DELIM. */
+#if @GNULIB_WCSTOK@
+# if !@HAVE_WCSTOK@
+_GL_FUNCDECL_SYS (wcstok, wchar_t *,
+ (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
+# endif
+_GL_CXXALIAS_SYS (wcstok, wchar_t *,
+ (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
+_GL_CXXALIASWARN (wcstok);
+#elif defined GNULIB_POSIXCHECK
+# undef wcstok
+# if HAVE_RAW_DECL_WCSTOK
+_GL_WARN_ON_USE (wcstok, "wcstok is unportable - "
+ "use gnulib module wcstok for portability");
+# endif
+#endif
+
+
+/* Determine number of column positions required for first N wide
+ characters (or fewer if S ends before this) in S. */
+#if @GNULIB_WCSWIDTH@
+# if @REPLACE_WCSWIDTH@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef wcswidth
+# define wcswidth rpl_wcswidth
+# endif
+_GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n)
+ _GL_ATTRIBUTE_PURE);
+_GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n));
+# else
+# if !@HAVE_WCSWIDTH@
+_GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n)
+ _GL_ATTRIBUTE_PURE);
+# endif
+_GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n));
+# endif
+_GL_CXXALIASWARN (wcswidth);
+#elif defined GNULIB_POSIXCHECK
+# undef wcswidth
+# if HAVE_RAW_DECL_WCSWIDTH
+_GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - "
+ "use gnulib module wcswidth for portability");
+# endif
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_WCHAR_H */
+#endif /* _@GUARD_PREFIX@_WCHAR_H */
#endif
diff --git a/src/libs/gnulib/lib/wctype-h.c b/src/libs/gnulib/lib/wctype-h.c
new file mode 100644
index 0000000..bb5f847
--- /dev/null
+++ b/src/libs/gnulib/lib/wctype-h.c
@@ -0,0 +1,4 @@
+/* Normally this would be wctype.c, but that name's already taken. */
+#include <config.h>
+#define _GL_WCTYPE_INLINE _GL_EXTERN_INLINE
+#include "wctype.h"
diff --git a/src/libs/gnulib/lib/wctype.in.h b/src/libs/gnulib/lib/wctype.in.h
index fff4d94..0cd02d5 100644
--- a/src/libs/gnulib/lib/wctype.in.h
+++ b/src/libs/gnulib/lib/wctype.in.h
@@ -1,6 +1,6 @@
/* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
- Copyright (C) 2006-2010 Free Software Foundation, Inc.
+ Copyright (C) 2006-2013 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -13,8 +13,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
/* Written by Bruno Haible and Paul Eggert. */
@@ -26,7 +25,7 @@
* wctrans_t, and wctype_t are not yet implemented.
*/
-#ifndef _GL_WCTYPE_H
+#ifndef _@GUARD_PREFIX@_WCTYPE_H
#if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
@@ -52,13 +51,31 @@
# @INCLUDE_NEXT@ @NEXT_WCTYPE_H@
#endif
-#ifndef _GL_WCTYPE_H
-#define _GL_WCTYPE_H
+#ifndef _@GUARD_PREFIX@_WCTYPE_H
+#define _@GUARD_PREFIX@_WCTYPE_H
+
+_GL_INLINE_HEADER_BEGIN
+#ifndef _GL_WCTYPE_INLINE
+# define _GL_WCTYPE_INLINE _GL_INLINE
+#endif
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
/* The definition of _GL_WARN_ON_USE is copied here. */
+/* Solaris 2.6 <wctype.h> includes <widec.h> which includes <euc.h> which
+ #defines a number of identifiers in the application namespace. Revert
+ these #defines. */
+#ifdef __sun
+# undef multibyte
+# undef eucw1
+# undef eucw2
+# undef eucw3
+# undef scrw1
+# undef scrw2
+# undef scrw3
+#endif
+
/* Define wint_t and WEOF. (Also done in wchar.in.h.) */
#if !@HAVE_WINT_T@ && !defined wint_t
# define wint_t int
@@ -66,153 +83,171 @@
# define WEOF -1
# endif
#else
+/* MSVC defines wint_t as 'unsigned short' in <crtdefs.h>.
+ This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be
+ "unchanged by default argument promotions". Override it. */
+# if defined _MSC_VER
+# if !GNULIB_defined_wint_t
+# include <crtdefs.h>
+typedef unsigned int rpl_wint_t;
+# undef wint_t
+# define wint_t rpl_wint_t
+# define GNULIB_defined_wint_t 1
+# endif
+# endif
# ifndef WEOF
# define WEOF ((wint_t) -1)
# endif
#endif
+#if !GNULIB_defined_wctype_functions
+
/* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.
Linux libc5 has <wctype.h> and the functions but they are broken.
Assume all 11 functions (all isw* except iswblank) are implemented the
same way, or not at all. */
-#if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@
+# if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@
/* IRIX 5.3 has macros but no functions, its isw* macros refer to an
undefined variable _ctmp_ and to <ctype.h> macros like _P, and they
refer to system functions like _iswctype that are not in the
standard C library. Rather than try to get ancient buggy
implementations like this to work, just disable them. */
-# undef iswalnum
-# undef iswalpha
-# undef iswblank
-# undef iswcntrl
-# undef iswdigit
-# undef iswgraph
-# undef iswlower
-# undef iswprint
-# undef iswpunct
-# undef iswspace
-# undef iswupper
-# undef iswxdigit
-# undef towlower
-# undef towupper
+# undef iswalnum
+# undef iswalpha
+# undef iswblank
+# undef iswcntrl
+# undef iswdigit
+# undef iswgraph
+# undef iswlower
+# undef iswprint
+# undef iswpunct
+# undef iswspace
+# undef iswupper
+# undef iswxdigit
+# undef towlower
+# undef towupper
/* Linux libc5 has <wctype.h> and the functions but they are broken. */
-# if @REPLACE_ISWCNTRL@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# define iswalnum rpl_iswalnum
-# define iswalpha rpl_iswalpha
-# define iswblank rpl_iswblank
-# define iswcntrl rpl_iswcntrl
-# define iswdigit rpl_iswdigit
-# define iswgraph rpl_iswgraph
-# define iswlower rpl_iswlower
-# define iswprint rpl_iswprint
-# define iswpunct rpl_iswpunct
-# define iswspace rpl_iswspace
-# define iswupper rpl_iswupper
-# define iswxdigit rpl_iswxdigit
-# define towlower rpl_towlower
-# define towupper rpl_towupper
+# if @REPLACE_ISWCNTRL@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define iswalnum rpl_iswalnum
+# define iswalpha rpl_iswalpha
+# define iswblank rpl_iswblank
+# define iswcntrl rpl_iswcntrl
+# define iswdigit rpl_iswdigit
+# define iswgraph rpl_iswgraph
+# define iswlower rpl_iswlower
+# define iswprint rpl_iswprint
+# define iswpunct rpl_iswpunct
+# define iswspace rpl_iswspace
+# define iswupper rpl_iswupper
+# define iswxdigit rpl_iswxdigit
+# endif
+# endif
+# if @REPLACE_TOWLOWER@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define towlower rpl_towlower
+# define towupper rpl_towupper
+# endif
# endif
-# endif
-static inline int
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE int
+# if @REPLACE_ISWCNTRL@
rpl_iswalnum
-# else
+# else
iswalnum
-# endif
+# endif
(wint_t wc)
{
return ((wc >= '0' && wc <= '9')
|| ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
}
-static inline int
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE int
+# if @REPLACE_ISWCNTRL@
rpl_iswalpha
-# else
+# else
iswalpha
-# endif
+# endif
(wint_t wc)
{
return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
}
-static inline int
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE int
+# if @REPLACE_ISWCNTRL@
rpl_iswblank
-# else
+# else
iswblank
-# endif
+# endif
(wint_t wc)
{
return wc == ' ' || wc == '\t';
}
-static inline int
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE int
+# if @REPLACE_ISWCNTRL@
rpl_iswcntrl
-# else
+# else
iswcntrl
-# endif
+# endif
(wint_t wc)
{
return (wc & ~0x1f) == 0 || wc == 0x7f;
}
-static inline int
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE int
+# if @REPLACE_ISWCNTRL@
rpl_iswdigit
-# else
+# else
iswdigit
-# endif
+# endif
(wint_t wc)
{
return wc >= '0' && wc <= '9';
}
-static inline int
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE int
+# if @REPLACE_ISWCNTRL@
rpl_iswgraph
-# else
+# else
iswgraph
-# endif
+# endif
(wint_t wc)
{
return wc >= '!' && wc <= '~';
}
-static inline int
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE int
+# if @REPLACE_ISWCNTRL@
rpl_iswlower
-# else
+# else
iswlower
-# endif
+# endif
(wint_t wc)
{
return wc >= 'a' && wc <= 'z';
}
-static inline int
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE int
+# if @REPLACE_ISWCNTRL@
rpl_iswprint
-# else
+# else
iswprint
-# endif
+# endif
(wint_t wc)
{
return wc >= ' ' && wc <= '~';
}
-static inline int
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE int
+# if @REPLACE_ISWCNTRL@
rpl_iswpunct
-# else
+# else
iswpunct
-# endif
+# endif
(wint_t wc)
{
return (wc >= '!' && wc <= '~'
@@ -220,86 +255,78 @@ iswpunct
|| ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')));
}
-static inline int
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE int
+# if @REPLACE_ISWCNTRL@
rpl_iswspace
-# else
+# else
iswspace
-# endif
+# endif
(wint_t wc)
{
return (wc == ' ' || wc == '\t'
|| wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
}
-static inline int
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE int
+# if @REPLACE_ISWCNTRL@
rpl_iswupper
-# else
+# else
iswupper
-# endif
+# endif
(wint_t wc)
{
return wc >= 'A' && wc <= 'Z';
}
-static inline int
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE int
+# if @REPLACE_ISWCNTRL@
rpl_iswxdigit
-# else
+# else
iswxdigit
-# endif
+# endif
(wint_t wc)
{
return ((wc >= '0' && wc <= '9')
|| ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
}
-static inline wint_t
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE wint_t
+# if @REPLACE_TOWLOWER@
rpl_towlower
-# else
+# else
towlower
-# endif
+# endif
(wint_t wc)
{
return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc);
}
-static inline wint_t
-# if @REPLACE_ISWCNTRL@
+_GL_WCTYPE_INLINE wint_t
+# if @REPLACE_TOWLOWER@
rpl_towupper
-# else
+# else
towupper
-# endif
+# endif
(wint_t wc)
{
return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc);
}
-#elif ! @HAVE_ISWBLANK@ || @REPLACE_ISWBLANK@
+# elif @GNULIB_ISWBLANK@ && (! @HAVE_ISWBLANK@ || @REPLACE_ISWBLANK@)
/* Only the iswblank function is missing. */
-# if @REPLACE_ISWBLANK@
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# define iswblank rpl_iswblank
+# if @REPLACE_ISWBLANK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define iswblank rpl_iswblank
+# endif
+_GL_FUNCDECL_RPL (iswblank, int, (wint_t wc));
+# else
+_GL_FUNCDECL_SYS (iswblank, int, (wint_t wc));
# endif
-# endif
-static inline int
-# if @REPLACE_ISWBLANK@
-rpl_iswblank
-# else
-iswblank
# endif
- (wint_t wc)
-{
- return wc == ' ' || wc == '\t';
-}
-
-#endif
-#if defined __MINGW32__
+# if defined __MINGW32__
/* On native Windows, wchar_t is uint16_t, and wint_t is uint32_t.
The functions towlower and towupper are implemented in the MSVCRT library
@@ -314,30 +341,32 @@ iswblank
result register. We need to fix this by adding a zero-extend from
wchar_t to wint_t after the call. */
-static inline wint_t
+_GL_WCTYPE_INLINE wint_t
rpl_towlower (wint_t wc)
{
return (wint_t) (wchar_t) towlower (wc);
}
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# define towlower rpl_towlower
-# endif
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define towlower rpl_towlower
+# endif
-static inline wint_t
+_GL_WCTYPE_INLINE wint_t
rpl_towupper (wint_t wc)
{
return (wint_t) (wchar_t) towupper (wc);
}
-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-# define towupper rpl_towupper
-# endif
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define towupper rpl_towupper
+# endif
-#endif /* __MINGW32__ */
+# endif /* __MINGW32__ */
+
+# define GNULIB_defined_wctype_functions 1
+#endif
#if @REPLACE_ISWCNTRL@
_GL_CXXALIAS_RPL (iswalnum, int, (wint_t wc));
_GL_CXXALIAS_RPL (iswalpha, int, (wint_t wc));
-_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
_GL_CXXALIAS_RPL (iswcntrl, int, (wint_t wc));
_GL_CXXALIAS_RPL (iswdigit, int, (wint_t wc));
_GL_CXXALIAS_RPL (iswgraph, int, (wint_t wc));
@@ -350,11 +379,6 @@ _GL_CXXALIAS_RPL (iswxdigit, int, (wint_t wc));
#else
_GL_CXXALIAS_SYS (iswalnum, int, (wint_t wc));
_GL_CXXALIAS_SYS (iswalpha, int, (wint_t wc));
-# if @REPLACE_ISWBLANK@
-_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
-# else
-_GL_CXXALIAS_SYS (iswblank, int, (wint_t wc));
-# endif
_GL_CXXALIAS_SYS (iswcntrl, int, (wint_t wc));
_GL_CXXALIAS_SYS (iswdigit, int, (wint_t wc));
_GL_CXXALIAS_SYS (iswgraph, int, (wint_t wc));
@@ -367,7 +391,6 @@ _GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc));
#endif
_GL_CXXALIASWARN (iswalnum);
_GL_CXXALIASWARN (iswalpha);
-_GL_CXXALIASWARN (iswblank);
_GL_CXXALIASWARN (iswcntrl);
_GL_CXXALIASWARN (iswdigit);
_GL_CXXALIASWARN (iswgraph);
@@ -378,7 +401,55 @@ _GL_CXXALIASWARN (iswspace);
_GL_CXXALIASWARN (iswupper);
_GL_CXXALIASWARN (iswxdigit);
-#if @REPLACE_ISWCNTRL@ || defined __MINGW32__
+#if @GNULIB_ISWBLANK@
+# if @REPLACE_ISWCNTRL@ || @REPLACE_ISWBLANK@
+_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
+# else
+_GL_CXXALIAS_SYS (iswblank, int, (wint_t wc));
+# endif
+_GL_CXXALIASWARN (iswblank);
+#endif
+
+#if !@HAVE_WCTYPE_T@
+# if !GNULIB_defined_wctype_t
+typedef void * wctype_t;
+# define GNULIB_defined_wctype_t 1
+# endif
+#endif
+
+/* Get a descriptor for a wide character property. */
+#if @GNULIB_WCTYPE@
+# if !@HAVE_WCTYPE_T@
+_GL_FUNCDECL_SYS (wctype, wctype_t, (const char *name));
+# endif
+_GL_CXXALIAS_SYS (wctype, wctype_t, (const char *name));
+_GL_CXXALIASWARN (wctype);
+#elif defined GNULIB_POSIXCHECK
+# undef wctype
+# if HAVE_RAW_DECL_WCTYPE
+_GL_WARN_ON_USE (wctype, "wctype is unportable - "
+ "use gnulib module wctype for portability");
+# endif
+#endif
+
+/* Test whether a wide character has a given property.
+ The argument WC must be either a wchar_t value or WEOF.
+ The argument DESC must have been returned by the wctype() function. */
+#if @GNULIB_ISWCTYPE@
+# if !@HAVE_WCTYPE_T@
+_GL_FUNCDECL_SYS (iswctype, int, (wint_t wc, wctype_t desc));
+# endif
+_GL_CXXALIAS_SYS (iswctype, int, (wint_t wc, wctype_t desc));
+_GL_CXXALIASWARN (iswctype);
+#elif defined GNULIB_POSIXCHECK
+# undef iswctype
+# if HAVE_RAW_DECL_ISWCTYPE
+_GL_WARN_ON_USE (iswctype, "iswctype is unportable - "
+ "use gnulib module iswctype for portability");
+# endif
+#endif
+
+#if @REPLACE_TOWLOWER@ || defined __MINGW32__
_GL_CXXALIAS_RPL (towlower, wint_t, (wint_t wc));
_GL_CXXALIAS_RPL (towupper, wint_t, (wint_t wc));
#else
@@ -388,6 +459,46 @@ _GL_CXXALIAS_SYS (towupper, wint_t, (wint_t wc));
_GL_CXXALIASWARN (towlower);
_GL_CXXALIASWARN (towupper);
+#if !@HAVE_WCTRANS_T@
+# if !GNULIB_defined_wctrans_t
+typedef void * wctrans_t;
+# define GNULIB_defined_wctrans_t 1
+# endif
+#endif
+
+/* Get a descriptor for a wide character case conversion. */
+#if @GNULIB_WCTRANS@
+# if !@HAVE_WCTRANS_T@
+_GL_FUNCDECL_SYS (wctrans, wctrans_t, (const char *name));
+# endif
+_GL_CXXALIAS_SYS (wctrans, wctrans_t, (const char *name));
+_GL_CXXALIASWARN (wctrans);
+#elif defined GNULIB_POSIXCHECK
+# undef wctrans
+# if HAVE_RAW_DECL_WCTRANS
+_GL_WARN_ON_USE (wctrans, "wctrans is unportable - "
+ "use gnulib module wctrans for portability");
+# endif
+#endif
+
+/* Perform a given case conversion on a wide character.
+ The argument WC must be either a wchar_t value or WEOF.
+ The argument DESC must have been returned by the wctrans() function. */
+#if @GNULIB_TOWCTRANS@
+# if !@HAVE_WCTRANS_T@
+_GL_FUNCDECL_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
+# endif
+_GL_CXXALIAS_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
+_GL_CXXALIASWARN (towctrans);
+#elif defined GNULIB_POSIXCHECK
+# undef towctrans
+# if HAVE_RAW_DECL_TOWCTRANS
+_GL_WARN_ON_USE (towctrans, "towctrans is unportable - "
+ "use gnulib module towctrans for portability");
+# endif
+#endif
+
+_GL_INLINE_HEADER_END
-#endif /* _GL_WCTYPE_H */
-#endif /* _GL_WCTYPE_H */
+#endif /* _@GUARD_PREFIX@_WCTYPE_H */
+#endif /* _@GUARD_PREFIX@_WCTYPE_H */
diff --git a/src/libs/gnulib/lib/wcwidth.c b/src/libs/gnulib/lib/wcwidth.c
index 66b5b15..253fcaa 100644
--- a/src/libs/gnulib/lib/wcwidth.c
+++ b/src/libs/gnulib/lib/wcwidth.c
@@ -1,5 +1,5 @@
/* Determine the number of screen columns needed for a character.
- Copyright (C) 2006-2007, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2006-2007, 2010-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -32,7 +32,7 @@ wcwidth (wchar_t wc)
{
/* In UTF-8 locales, use a Unicode aware width function. */
const char *encoding = locale_charset ();
- if (STREQ (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0 ,0))
+ if (STREQ_OPT (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0 ,0))
{
/* We assume that in a UTF-8 locale, a wide character is the same as a
Unicode character. */
diff --git a/src/libs/gnulib/m4/00gnulib.m4 b/src/libs/gnulib/m4/00gnulib.m4
index 301469b..d4ad759 100644
--- a/src/libs/gnulib/m4/00gnulib.m4
+++ b/src/libs/gnulib/m4/00gnulib.m4
@@ -1,5 +1,5 @@
# 00gnulib.m4 serial 2
-dnl Copyright (C) 2009-2010 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/src/libs/gnulib/m4/Makefile.am b/src/libs/gnulib/m4/Makefile.am
index 6665d8a..bb7fa3a 100644
--- a/src/libs/gnulib/m4/Makefile.am
+++ b/src/libs/gnulib/m4/Makefile.am
@@ -3,15 +3,20 @@
EXTRA_DIST =
EXTRA_DIST += 00gnulib.m4
EXTRA_DIST += codeset.m4
+EXTRA_DIST += configmake.m4
EXTRA_DIST += extensions.m4
+EXTRA_DIST += extern-inline.m4
EXTRA_DIST += fcntl-o.m4
EXTRA_DIST += glibc21.m4
EXTRA_DIST += gnulib-common.m4
EXTRA_DIST += include_next.m4
+EXTRA_DIST += inttypes-pri.m4
+EXTRA_DIST += inttypes.m4
EXTRA_DIST += libunistring-base.m4
EXTRA_DIST += localcharset.m4
EXTRA_DIST += longlong.m4
EXTRA_DIST += multiarch.m4
+EXTRA_DIST += stdbool.m4
EXTRA_DIST += stddef_h.m4
EXTRA_DIST += stdint.m4
EXTRA_DIST += warn-on-use.m4
diff --git a/src/libs/gnulib/m4/Makefile.in b/src/libs/gnulib/m4/Makefile.in
index d427bbd..28c8b94 100644
--- a/src/libs/gnulib/m4/Makefile.in
+++ b/src/libs/gnulib/m4/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -15,10 +14,26 @@
@SET_MAKE@
VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
@@ -37,18 +52,20 @@ subdir = m4
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
- $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/extensions.m4 \
- $(top_srcdir)/m4/fcntl-o.m4 $(top_srcdir)/m4/glibc21.m4 \
- $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/configmake.m4 \
+ $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+ $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
$(top_srcdir)/m4/include_next.m4 \
+ $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
$(top_srcdir)/m4/libunistring-base.m4 \
$(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/longlong.m4 \
$(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/onceonly.m4 \
- $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_h.m4 \
- $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wctype_h.m4 \
- $(top_srcdir)/m4/wcwidth.m4 $(top_srcdir)/m4/wint_t.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/warn-on-use.m4 \
+ $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
@@ -57,10 +74,18 @@ CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkglibexecdir = @pkglibexecdir@
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+ARFLAGS = @ARFLAGS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -85,18 +110,59 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
GLIBC21 = @GLIBC21@
GNULIB_BTOWC = @GNULIB_BTOWC@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_ISWBLANK = @GNULIB_ISWBLANK@
+GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@
GNULIB_MBRLEN = @GNULIB_MBRLEN@
GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
GNULIB_MBSINIT = @GNULIB_MBSINIT@
GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@
+GNULIB_WCPCPY = @GNULIB_WCPCPY@
+GNULIB_WCPNCPY = @GNULIB_WCPNCPY@
GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
+GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@
+GNULIB_WCSCAT = @GNULIB_WCSCAT@
+GNULIB_WCSCHR = @GNULIB_WCSCHR@
+GNULIB_WCSCMP = @GNULIB_WCSCMP@
+GNULIB_WCSCOLL = @GNULIB_WCSCOLL@
+GNULIB_WCSCPY = @GNULIB_WCSCPY@
+GNULIB_WCSCSPN = @GNULIB_WCSCSPN@
+GNULIB_WCSDUP = @GNULIB_WCSDUP@
+GNULIB_WCSLEN = @GNULIB_WCSLEN@
+GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@
+GNULIB_WCSNCAT = @GNULIB_WCSNCAT@
+GNULIB_WCSNCMP = @GNULIB_WCSNCMP@
+GNULIB_WCSNCPY = @GNULIB_WCSNCPY@
+GNULIB_WCSNLEN = @GNULIB_WCSNLEN@
GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
+GNULIB_WCSPBRK = @GNULIB_WCSPBRK@
+GNULIB_WCSRCHR = @GNULIB_WCSRCHR@
GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
+GNULIB_WCSSPN = @GNULIB_WCSSPN@
+GNULIB_WCSSTR = @GNULIB_WCSSTR@
+GNULIB_WCSTOK = @GNULIB_WCSTOK@
+GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@
+GNULIB_WCSXFRM = @GNULIB_WCSXFRM@
GNULIB_WCTOB = @GNULIB_WCTOB@
+GNULIB_WCTRANS = @GNULIB_WCTRANS@
+GNULIB_WCTYPE = @GNULIB_WCTYPE@
GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
+GNULIB_WMEMCHR = @GNULIB_WMEMCHR@
+GNULIB_WMEMCMP = @GNULIB_WMEMCMP@
+GNULIB_WMEMCPY = @GNULIB_WMEMCPY@
+GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@
+GNULIB_WMEMSET = @GNULIB_WMEMSET@
GREP = @GREP@
HAVE_BTOWC = @HAVE_BTOWC@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
HAVE_FEATURES_H = @HAVE_FEATURES_H@
@@ -119,11 +185,42 @@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
HAVE_WCHAR_H = @HAVE_WCHAR_H@
HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WCPCPY = @HAVE_WCPCPY@
+HAVE_WCPNCPY = @HAVE_WCPNCPY@
HAVE_WCRTOMB = @HAVE_WCRTOMB@
+HAVE_WCSCASECMP = @HAVE_WCSCASECMP@
+HAVE_WCSCAT = @HAVE_WCSCAT@
+HAVE_WCSCHR = @HAVE_WCSCHR@
+HAVE_WCSCMP = @HAVE_WCSCMP@
+HAVE_WCSCOLL = @HAVE_WCSCOLL@
+HAVE_WCSCPY = @HAVE_WCSCPY@
+HAVE_WCSCSPN = @HAVE_WCSCSPN@
+HAVE_WCSDUP = @HAVE_WCSDUP@
+HAVE_WCSLEN = @HAVE_WCSLEN@
+HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@
+HAVE_WCSNCAT = @HAVE_WCSNCAT@
+HAVE_WCSNCMP = @HAVE_WCSNCMP@
+HAVE_WCSNCPY = @HAVE_WCSNCPY@
+HAVE_WCSNLEN = @HAVE_WCSNLEN@
HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
+HAVE_WCSPBRK = @HAVE_WCSPBRK@
+HAVE_WCSRCHR = @HAVE_WCSRCHR@
HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
+HAVE_WCSSPN = @HAVE_WCSSPN@
+HAVE_WCSSTR = @HAVE_WCSSTR@
+HAVE_WCSTOK = @HAVE_WCSTOK@
+HAVE_WCSWIDTH = @HAVE_WCSWIDTH@
+HAVE_WCSXFRM = @HAVE_WCSXFRM@
+HAVE_WCTRANS_T = @HAVE_WCTRANS_T@
HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WCTYPE_T = @HAVE_WCTYPE_T@
HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WMEMCHR = @HAVE_WMEMCHR@
+HAVE_WMEMCMP = @HAVE_WMEMCMP@
+HAVE_WMEMCPY = @HAVE_WMEMCPY@
+HAVE_WMEMMOVE = @HAVE_WMEMMOVE@
+HAVE_WMEMSET = @HAVE_WMEMSET@
+HAVE__BOOL = @HAVE__BOOL@
INCLUDE_NEXT = @INCLUDE_NEXT@
INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
INSTALL = @INSTALL@
@@ -131,6 +228,8 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@
+INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@
LDFLAGS = @LDFLAGS@
LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
@@ -142,10 +241,12 @@ LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
+NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
+NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
NEXT_STDDEF_H = @NEXT_STDDEF_H@
NEXT_STDINT_H = @NEXT_STDINT_H@
NEXT_WCHAR_H = @NEXT_WCHAR_H@
@@ -161,6 +262,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
RANLIB = @RANLIB@
REPLACE_BTOWC = @REPLACE_BTOWC@
@@ -173,18 +276,24 @@ REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
REPLACE_NULL = @REPLACE_NULL@
+REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@
+REPLACE_TOWLOWER = @REPLACE_TOWLOWER@
REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
+REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@
REPLACE_WCTOB = @REPLACE_WCTOB@
REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
STDDEF_H = @STDDEF_H@
STDINT_H = @STDINT_H@
STRIP = @STRIP@
+UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@
+UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@
VERSION = @VERSION@
WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
WINT_T_SUFFIX = @WINT_T_SUFFIX@
@@ -223,6 +332,7 @@ infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
+lispdir = @lispdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
@@ -240,11 +350,12 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-EXTRA_DIST = 00gnulib.m4 codeset.m4 extensions.m4 fcntl-o.m4 \
- glibc21.m4 gnulib-common.m4 include_next.m4 \
+EXTRA_DIST = 00gnulib.m4 codeset.m4 configmake.m4 extensions.m4 \
+ extern-inline.m4 fcntl-o.m4 glibc21.m4 gnulib-common.m4 \
+ include_next.m4 inttypes-pri.m4 inttypes.m4 \
libunistring-base.m4 localcharset.m4 longlong.m4 multiarch.m4 \
- stddef_h.m4 stdint.m4 warn-on-use.m4 wchar_h.m4 wchar_t.m4 \
- wctype_h.m4 wcwidth.m4 wint_t.m4
+ stdbool.m4 stddef_h.m4 stdint.m4 warn-on-use.m4 wchar_h.m4 \
+ wchar_t.m4 wctype_h.m4 wcwidth.m4 wint_t.m4
all: all-am
.SUFFIXES:
@@ -257,9 +368,9 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign m4/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign m4/Makefile
+ $(AUTOMAKE) --gnu m4/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
@@ -284,6 +395,8 @@ TAGS:
ctags: CTAGS
CTAGS:
+cscope cscopelist:
+
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -329,10 +442,15 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
diff --git a/src/libs/gnulib/m4/codeset.m4 b/src/libs/gnulib/m4/codeset.m4
index f722b2e..c2761be 100644
--- a/src/libs/gnulib/m4/codeset.m4
+++ b/src/libs/gnulib/m4/codeset.m4
@@ -1,5 +1,5 @@
# codeset.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2006, 2008-2010 Free Software Foundation, Inc.
+dnl Copyright (C) 2000-2002, 2006, 2008-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/src/libs/gnulib/m4/configmake.m4 b/src/libs/gnulib/m4/configmake.m4
new file mode 100644
index 0000000..823ffc0
--- /dev/null
+++ b/src/libs/gnulib/m4/configmake.m4
@@ -0,0 +1,50 @@
+# configmake.m4 serial 1
+dnl Copyright (C) 2010-2013 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# gl_CONFIGMAKE_PREP
+# ------------------
+# Guarantee all of the standard directory variables, even when used with
+# autoconf 2.59 (datarootdir wasn't supported until 2.59c) or automake
+# 1.9.6 (pkglibexecdir wasn't supported until 1.10b.).
+AC_DEFUN([gl_CONFIGMAKE_PREP],
+[
+ dnl Technically, datadir should default to datarootdir. But if
+ dnl autoconf is too old to provide datarootdir, then reversing the
+ dnl definition is a reasonable compromise. Only AC_SUBST a variable
+ dnl if it was not already defined earlier by autoconf.
+ if test "x$datarootdir" = x; then
+ AC_SUBST([datarootdir], ['${datadir}'])
+ fi
+ dnl Copy the approach used in autoconf 2.60.
+ if test "x$docdir" = x; then
+ AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+ ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+ ['${datarootdir}/doc/${PACKAGE}'])])
+ fi
+ dnl The remaining variables missing from autoconf 2.59 are easier.
+ if test "x$htmldir" = x; then
+ AC_SUBST([htmldir], ['${docdir}'])
+ fi
+ if test "x$dvidir" = x; then
+ AC_SUBST([dvidir], ['${docdir}'])
+ fi
+ if test "x$pdfdir" = x; then
+ AC_SUBST([pdfdir], ['${docdir}'])
+ fi
+ if test "x$psdir" = x; then
+ AC_SUBST([psdir], ['${docdir}'])
+ fi
+ if test "x$lispdir" = x; then
+ AC_SUBST([lispdir], ['${datarootdir}/emacs/site-lisp'])
+ fi
+ if test "x$localedir" = x; then
+ AC_SUBST([localedir], ['${datarootdir}/locale'])
+ fi
+
+ dnl Automake 1.9.6 only lacks pkglibexecdir; and since 1.11 merely
+ dnl provides it without AC_SUBST, this blind use of AC_SUBST is safe.
+ AC_SUBST([pkglibexecdir], ['${libexecdir}/${PACKAGE}'])
+])
diff --git a/src/libs/gnulib/m4/extensions.m4 b/src/libs/gnulib/m4/extensions.m4
index 7d9458a..33daf38 100644
--- a/src/libs/gnulib/m4/extensions.m4
+++ b/src/libs/gnulib/m4/extensions.m4
@@ -1,7 +1,7 @@
-# serial 9 -*- Autoconf -*-
+# serial 13 -*- Autoconf -*-
# Enable extensions on systems that normally disable them.
-# Copyright (C) 2003, 2006-2010 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2006-2013 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -30,6 +30,7 @@
# ------------------------
# Enable extensions on systems that normally disable them,
# typically due to standards-conformance issues.
+#
# Remember that #undef in AH_VERBATIM gets replaced with #define by
# AC_DEFINE. The goal here is to define all known feature-enabling
# macros, then, if reports of conflicts are made, disable macros that
@@ -38,39 +39,40 @@ AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS],
[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
- AC_REQUIRE([AC_CANONICAL_HOST])
-
AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=])
if test "$MINIX" = yes; then
AC_DEFINE([_POSIX_SOURCE], [1],
- [Define to 1 if you need to in order for `stat' and other
+ [Define to 1 if you need to in order for 'stat' and other
things to work.])
AC_DEFINE([_POSIX_1_SOURCE], [2],
[Define to 2 if the system does not provide POSIX.1 features
except with this defined.])
AC_DEFINE([_MINIX], [1],
[Define to 1 if on MINIX.])
+ AC_DEFINE([_NETBSD_SOURCE], [1],
+ [Define to 1 to make NetBSD features available. MINIX 3 needs this.])
fi
- dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500,
- dnl regardless of whether the flags -Ae or _D_HPUX_SOURCE=1 are already
- dnl provided.
- case "$host_os" in
- hpux*)
- AC_DEFINE([_XOPEN_SOURCE], [500],
- [Define to 500 only on HP-UX.])
- ;;
- esac
-
- AH_VERBATIM([__EXTENSIONS__],
+dnl Use a different key than __EXTENSIONS__, as that name broke existing
+dnl configure.ac when using autoheader 2.62.
+ AH_VERBATIM([USE_SYSTEM_EXTENSIONS],
[/* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
+/* Enable general extensions on OS X. */
+#ifndef _DARWIN_C_SOURCE
+# undef _DARWIN_C_SOURCE
+#endif
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
+/* HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500,
+ regardless of whether compiling with -Ae or -D_HPUX_SOURCE=1. */
+#ifdef __hpux
+# define _XOPEN_SOURCE 500
+#endif
/* Enable threading extensions on Solaris. */
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
@@ -95,6 +97,7 @@ AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
test $ac_cv_safe_to_define___extensions__ = yes &&
AC_DEFINE([__EXTENSIONS__])
AC_DEFINE([_ALL_SOURCE])
+ AC_DEFINE([_DARWIN_C_SOURCE])
AC_DEFINE([_GNU_SOURCE])
AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
AC_DEFINE([_TANDEM_SOURCE])
diff --git a/src/libs/gnulib/m4/extern-inline.m4 b/src/libs/gnulib/m4/extern-inline.m4
new file mode 100644
index 0000000..5880d4f
--- /dev/null
+++ b/src/libs/gnulib/m4/extern-inline.m4
@@ -0,0 +1,62 @@
+dnl 'extern inline' a la ISO C99.
+
+dnl Copyright 2012-2013 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_EXTERN_INLINE],
+[
+ AH_VERBATIM([extern_inline],
+[/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'.
+ _GL_EXTERN_INLINE is a portable alternative to 'extern inline'.
+ _GL_INLINE_HEADER_BEGIN contains useful stuff to put
+ in an include file, before uses of _GL_INLINE.
+ It suppresses GCC's bogus "no previous prototype for 'FOO'" diagnostic,
+ when FOO is an inline function in the header; see
+ <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>.
+ _GL_INLINE_HEADER_END contains useful stuff to put
+ in the same include file, after uses of _GL_INLINE.
+
+ Suppress the use of extern inline on Apple's platforms,
+ as Libc-825.25 (2012-09-19) is incompatible with it; see
+ <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
+ Perhaps Apple will fix this some day. */
+#if ((__GNUC__ \
+ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
+ : 199901L <= __STDC_VERSION__) \
+ && !defined __APPLE__)
+# define _GL_INLINE inline
+# define _GL_EXTERN_INLINE extern inline
+#elif 2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __APPLE__
+# if __GNUC_GNU_INLINE__
+ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
+# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
+# else
+# define _GL_INLINE extern inline
+# endif
+# define _GL_EXTERN_INLINE extern
+#else
+# define _GL_INLINE static _GL_UNUSED
+# define _GL_EXTERN_INLINE static _GL_UNUSED
+#endif
+
+#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
+# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
+# define _GL_INLINE_HEADER_CONST_PRAGMA
+# else
+# define _GL_INLINE_HEADER_CONST_PRAGMA \
+ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
+# endif
+# define _GL_INLINE_HEADER_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
+ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
+ _GL_INLINE_HEADER_CONST_PRAGMA
+# define _GL_INLINE_HEADER_END \
+ _Pragma ("GCC diagnostic pop")
+#else
+# define _GL_INLINE_HEADER_BEGIN
+# define _GL_INLINE_HEADER_END
+#endif])
+])
diff --git a/src/libs/gnulib/m4/fcntl-o.m4 b/src/libs/gnulib/m4/fcntl-o.m4
index 46fad47..87cc4bd 100644
--- a/src/libs/gnulib/m4/fcntl-o.m4
+++ b/src/libs/gnulib/m4/fcntl-o.m4
@@ -1,5 +1,5 @@
-# fcntl-o.m4 serial 3
-dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
+# fcntl-o.m4 serial 4
+dnl Copyright (C) 2006, 2009-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -17,12 +17,21 @@ AC_DEFUN([gl_FCNTL_O_FLAGS],
m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
[AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
[AC_REQUIRE([AC_GNU_SOURCE])])
+
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ AC_CHECK_FUNCS_ONCE([symlink])
AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
[AC_RUN_IFELSE(
[AC_LANG_PROGRAM(
[[#include <sys/types.h>
#include <sys/stat.h>
- #include <unistd.h>
+ #if HAVE_UNISTD_H
+ # include <unistd.h>
+ #else /* on Windows with MSVC */
+ # include <io.h>
+ # include <stdlib.h>
+ # defined sleep(n) _sleep ((n) * 1000)
+ #endif
#include <fcntl.h>
#ifndef O_NOATIME
#define O_NOATIME 0
@@ -38,9 +47,21 @@ AC_DEFUN([gl_FCNTL_O_FLAGS],
]],
[[
int result = !constants;
+ #if HAVE_SYMLINK
{
static char const sym[] = "conftest.sym";
- if (symlink (".", sym) != 0)
+ if (symlink ("/dev/null", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ if (unlink (sym) != 0 || symlink (".", sym) != 0)
result |= 2;
else
{
@@ -53,6 +74,7 @@ AC_DEFUN([gl_FCNTL_O_FLAGS],
}
unlink (sym);
}
+ #endif
{
static char const file[] = "confdefs.h";
int fd = open (file, O_RDONLY | O_NOATIME);
diff --git a/src/libs/gnulib/m4/glibc21.m4 b/src/libs/gnulib/m4/glibc21.m4
index bd08b38..613fb2a 100644
--- a/src/libs/gnulib/m4/glibc21.m4
+++ b/src/libs/gnulib/m4/glibc21.m4
@@ -1,5 +1,6 @@
# glibc21.m4 serial 5
-dnl Copyright (C) 2000-2002, 2004, 2008, 2010 Free Software Foundation, Inc.
+dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2013 Free Software Foundation,
+dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/src/libs/gnulib/m4/gnulib-cache.m4 b/src/libs/gnulib/m4/gnulib-cache.m4
index 0f75454..fa5b627 100644
--- a/src/libs/gnulib/m4/gnulib-cache.m4
+++ b/src/libs/gnulib/m4/gnulib-cache.m4
@@ -1,9 +1,21 @@
-# Copyright (C) 2002-2010 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
#
-# This file is free software, distributed under the terms of the GNU
-# General Public License. As a special exception to the GNU General
-# Public License, this file may be distributed as part of a program
-# that contains a configuration script generated by Autoconf, under
+# This file 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 3 of the License, or
+# (at your option) any later version.
+#
+# This file 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 this file. If not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License,
+# this file may be distributed as part of a program that
+# contains a configuration script generated by Autoconf, under
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
@@ -15,7 +27,7 @@
# Specification in the form of a command-line invocation:
-# gnulib-tool --import --dir=src/libs/gnulib --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-libtool --macro-prefix=gl wcwidth
+# gnulib-tool --import --dir=src/libs/gnulib --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl wcwidth
# Specification in the form of a few gnulib-tool.m4 macro invocations:
gl_LOCAL_DIR([])
@@ -32,3 +44,4 @@ gl_LIB([libgnu])
gl_MAKEFILE_NAME([])
gl_MACRO_PREFIX([gl])
gl_PO_DOMAIN([])
+gl_WITNESS_C_MACRO([])
diff --git a/src/libs/gnulib/m4/gnulib-common.m4 b/src/libs/gnulib/m4/gnulib-common.m4
index d0c8b66..0ae5a9e 100644
--- a/src/libs/gnulib/m4/gnulib-common.m4
+++ b/src/libs/gnulib/m4/gnulib-common.m4
@@ -1,5 +1,5 @@
-# gnulib-common.m4 serial 21
-dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
+# gnulib-common.m4 serial 33
+dnl Copyright (C) 2007-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -12,11 +12,25 @@ AC_DEFUN([gl_COMMON], [
AC_REQUIRE([gl_COMMON_BODY])
])
AC_DEFUN([gl_COMMON_BODY], [
+ AH_VERBATIM([_Noreturn],
+[/* The _Noreturn keyword of C11. */
+#if ! (defined _Noreturn \
+ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
+# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
+ || 0x5110 <= __SUNPRO_C)
+# define _Noreturn __attribute__ ((__noreturn__))
+# elif defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn
+# endif
+#endif
+])
AH_VERBATIM([isoc99_inline],
[/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
- __APPLE__ && __MACH__ test for MacOS X.
+ __APPLE__ && __MACH__ test for Mac OS X.
__APPLE_CC__ tests for the Apple compiler and its version.
__STDC_VERSION__ tests for the C99 mode. */
#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
@@ -34,6 +48,20 @@ AC_DEFUN([gl_COMMON_BODY], [
/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
is a misnomer outside of parameter lists. */
#define _UNUSED_PARAMETER_ _GL_UNUSED
+
+/* The __pure__ attribute was added in gcc 2.96. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
+#endif
+
+/* The __const__ attribute was added in gcc 2.95. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
+#else
+# define _GL_ATTRIBUTE_CONST /* empty */
+#endif
])
dnl Preparation for running test programs:
dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not
@@ -47,16 +75,49 @@ AC_DEFUN([gl_COMMON_BODY], [
# expands to a C preprocessor expression that evaluates to 1 or 0, depending
# whether a gnulib module that has been requested shall be considered present
# or not.
-AC_DEFUN([gl_MODULE_INDICATOR_CONDITION], [1])
+m4_define([gl_MODULE_INDICATOR_CONDITION], [1])
# gl_MODULE_INDICATOR_SET_VARIABLE([modulename])
# sets the shell variable that indicates the presence of the given module to
# a C preprocessor expression that will evaluate to 1.
AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
[
- GNULIB_[]m4_translit([[$1]],
- [abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=gl_MODULE_INDICATOR_CONDITION
+ gl_MODULE_INDICATOR_SET_VARIABLE_AUX(
+ [GNULIB_[]m4_translit([[$1]],
+ [abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])],
+ [gl_MODULE_INDICATOR_CONDITION])
+])
+
+# gl_MODULE_INDICATOR_SET_VARIABLE_AUX([variable])
+# modifies the shell variable to include the gl_MODULE_INDICATOR_CONDITION.
+# The shell variable's value is a C preprocessor expression that evaluates
+# to 0 or 1.
+AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX],
+[
+ m4_if(m4_defn([gl_MODULE_INDICATOR_CONDITION]), [1],
+ [
+ dnl Simplify the expression VALUE || 1 to 1.
+ $1=1
+ ],
+ [gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([$1],
+ [gl_MODULE_INDICATOR_CONDITION])])
+])
+
+# gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([variable], [condition])
+# modifies the shell variable to include the given condition. The shell
+# variable's value is a C preprocessor expression that evaluates to 0 or 1.
+AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR],
+[
+ dnl Simplify the expression 1 || CONDITION to 1.
+ if test "$[]$1" != 1; then
+ dnl Simplify the expression 0 || CONDITION to CONDITION.
+ if test "$[]$1" = 0; then
+ $1=$2
+ else
+ $1="($[]$1 || $2)"
+ fi
+ fi
])
# gl_MODULE_INDICATOR([modulename])
@@ -102,6 +163,27 @@ AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS],
[Define to 1 when the gnulib module $1 should be tested.])
])
+# gl_ASSERT_NO_GNULIB_POSIXCHECK
+# asserts that there will never be a need to #define GNULIB_POSIXCHECK.
+# and thereby enables an optimization of configure and config.h.
+# Used by Emacs.
+AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK],
+[
+ dnl Override gl_WARN_ON_USE_PREPARE.
+ dnl But hide this definition from 'aclocal'.
+ AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], [])
+])
+
+# gl_ASSERT_NO_GNULIB_TESTS
+# asserts that there will be no gnulib tests in the scope of the configure.ac
+# and thereby enables an optimization of config.h.
+# Used by Emacs.
+AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS],
+[
+ dnl Override gl_MODULE_INDICATOR_FOR_TESTS.
+ AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], [])
+])
+
# Test whether <features.h> exists.
# Set HAVE_FEATURES_H.
AC_DEFUN([gl_FEATURES_H],
@@ -130,11 +212,90 @@ m4_ifndef([AS_VAR_IF],
[m4_define([AS_VAR_IF],
[AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])])
+# gl_PROG_CC_C99
+# Modifies the value of the shell variable CC in an attempt to make $CC
+# understand ISO C99 source code.
+# This is like AC_PROG_CC_C99, except that
+# - AC_PROG_CC_C99 did not exist in Autoconf versions < 2.60,
+# - AC_PROG_CC_C99 does not mix well with AC_PROG_CC_STDC
+# <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00367.html>,
+# but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99
+# <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00441.html>.
+# Remaining problems:
+# - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options
+# to CC twice
+# <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00431.html>.
+# - AC_PROG_CC_STDC is likely to change now that C11 is an ISO standard.
+AC_DEFUN([gl_PROG_CC_C99],
+[
+ dnl Change that version number to the minimum Autoconf version that supports
+ dnl mixing AC_PROG_CC_C99 calls with AC_PROG_CC_STDC calls.
+ m4_version_prereq([9.0],
+ [AC_REQUIRE([AC_PROG_CC_C99])],
+ [AC_REQUIRE([AC_PROG_CC_STDC])])
+])
+
+# gl_PROG_AR_RANLIB
+# Determines the values for AR, ARFLAGS, RANLIB that fit with the compiler.
+# The user can set the variables AR, ARFLAGS, RANLIB if he wants to override
+# the values.
+AC_DEFUN([gl_PROG_AR_RANLIB],
+[
+ dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler
+ dnl as "cc", and GCC as "gcc". They have different object file formats and
+ dnl library formats. In particular, the GNU binutils programs ar, ranlib
+ dnl produce libraries that work only with gcc, not with cc.
+ AC_REQUIRE([AC_PROG_CC])
+ AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler],
+ [
+ AC_EGREP_CPP([Amsterdam],
+ [
+#ifdef __ACK__
+Amsterdam
+#endif
+ ],
+ [gl_cv_c_amsterdam_compiler=yes],
+ [gl_cv_c_amsterdam_compiler=no])
+ ])
+ if test -z "$AR"; then
+ if test $gl_cv_c_amsterdam_compiler = yes; then
+ AR='cc -c.a'
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='-o'
+ fi
+ else
+ dnl Use the Automake-documented default values for AR and ARFLAGS,
+ dnl but prefer ${host}-ar over ar (useful for cross-compiling).
+ AC_CHECK_TOOL([AR], [ar], [ar])
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='cru'
+ fi
+ fi
+ else
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='cru'
+ fi
+ fi
+ AC_SUBST([AR])
+ AC_SUBST([ARFLAGS])
+ if test -z "$RANLIB"; then
+ if test $gl_cv_c_amsterdam_compiler = yes; then
+ RANLIB=':'
+ else
+ dnl Use the ranlib program if it is available.
+ AC_PROG_RANLIB
+ fi
+ fi
+ AC_SUBST([RANLIB])
+])
+
# AC_PROG_MKDIR_P
# is a backport of autoconf-2.60's AC_PROG_MKDIR_P, with a fix
# for interoperability with automake-1.9.6 from autoconf-2.62.
# Remove this macro when we can assume autoconf >= 2.62 or
# autoconf >= 2.60 && automake >= 1.10.
+# AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness.
+m4_ifndef([AC_AUTOCONF_VERSION],[
m4_ifdef([AC_PROG_MKDIR_P], [
dnl For automake-1.9.6 && autoconf < 2.62: Ensure MKDIR_P is AC_SUBSTed.
m4_define([AC_PROG_MKDIR_P],
@@ -145,13 +306,15 @@ m4_ifdef([AC_PROG_MKDIR_P], [
[AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
MKDIR_P='$(mkdir_p)'
AC_SUBST([MKDIR_P])])])
+])
# AC_C_RESTRICT
# This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61,
# so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
# works.
# This definition can be removed once autoconf >= 2.62 can be assumed.
-m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.62]),[-1],[
+# AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness.
+m4_ifndef([AC_AUTOCONF_VERSION],[
AC_DEFUN([AC_C_RESTRICT],
[AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
[ac_cv_c_restrict=no
diff --git a/src/libs/gnulib/m4/gnulib-comp.m4 b/src/libs/gnulib/m4/gnulib-comp.m4
index 78c6c47..7021286 100644
--- a/src/libs/gnulib/m4/gnulib-comp.m4
+++ b/src/libs/gnulib/m4/gnulib-comp.m4
@@ -1,10 +1,22 @@
# DO NOT EDIT! GENERATED AUTOMATICALLY!
-# Copyright (C) 2002-2010 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
#
-# This file is free software, distributed under the terms of the GNU
-# General Public License. As a special exception to the GNU General
-# Public License, this file may be distributed as part of a program
-# that contains a configuration script generated by Autoconf, under
+# This file 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 3 of the License, or
+# (at your option) any later version.
+#
+# This file 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 this file. If not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License,
+# this file may be distributed as part of a program that
+# contains a configuration script generated by Autoconf, under
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
@@ -25,25 +37,26 @@ AC_DEFUN([gl_EARLY],
m4_pattern_allow([^gl_ES$])dnl a valid locale name
m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
- AC_REQUIRE([AC_PROG_RANLIB])
+ AC_REQUIRE([gl_PROG_AR_RANLIB])
AC_REQUIRE([AM_PROG_CC_C_O])
- # Code from module arg-nonnull:
- # Code from module c++defs:
# Code from module configmake:
# Code from module extensions:
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ # Code from module extern-inline:
# Code from module include_next:
# Code from module localcharset:
# Code from module multiarch:
+ # Code from module snippet/arg-nonnull:
+ # Code from module snippet/c++defs:
+ # Code from module snippet/warn-on-use:
# Code from module stddef:
# Code from module stdint:
# Code from module streq:
# Code from module unitypes:
# Code from module uniwidth/base:
# Code from module uniwidth/width:
- # Code from module warn-on-use:
# Code from module wchar:
- # Code from module wctype:
+ # Code from module wctype-h:
# Code from module wcwidth:
])
@@ -63,35 +76,23 @@ AC_DEFUN([gl_INIT],
m4_pushdef([gl_LIBSOURCES_DIR], [])
gl_COMMON
gl_source_base='lib'
- # Code from module arg-nonnull:
- # Code from module c++defs:
- # Code from module configmake:
- # Code from module extensions:
- # Code from module include_next:
- # Code from module localcharset:
+ gl_CONFIGMAKE_PREP
+ AC_REQUIRE([gl_EXTERN_INLINE])
gl_LOCALCHARSET
- LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(top_builddir)/$gl_source_base\""
+ LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
- # Code from module multiarch:
gl_MULTIARCH
- # Code from module stddef:
gl_STDDEF_H
- # Code from module stdint:
gl_STDINT_H
- # Code from module streq:
- # Code from module unitypes:
gl_LIBUNISTRING_LIBHEADER([0.9], [unitypes.h])
- # Code from module uniwidth/base:
gl_LIBUNISTRING_LIBHEADER([0.9], [uniwidth.h])
- # Code from module uniwidth/width:
- gl_LIBUNISTRING_MODULE([0.9], [uniwidth/width])
- # Code from module warn-on-use:
- # Code from module wchar:
+ gl_LIBUNISTRING_MODULE([0.9.4], [uniwidth/width])
gl_WCHAR_H
- # Code from module wctype:
gl_WCTYPE_H
- # Code from module wcwidth:
gl_FUNC_WCWIDTH
+ if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
+ AC_LIBOBJ([wcwidth])
+ fi
gl_WCHAR_MODULE_INDICATOR([wcwidth])
# End of code from modules
m4_ifval(gl_LIBSOURCES_LIST, [
@@ -233,9 +234,9 @@ AC_DEFUN([gltests_LIBSOURCES], [
# This macro records the list of files which have been installed by
# gnulib-tool and may be removed by future gnulib-tool invocations.
AC_DEFUN([gl_FILE_LIST], [
- build-aux/arg-nonnull.h
- build-aux/c++defs.h
- build-aux/warn-on-use.h
+ build-aux/snippet/arg-nonnull.h
+ build-aux/snippet/c++defs.h
+ build-aux/snippet/warn-on-use.h
lib/config.charset
lib/localcharset.c
lib/localcharset.h
@@ -249,11 +250,14 @@ AC_DEFUN([gl_FILE_LIST], [
lib/uniwidth/cjk.h
lib/uniwidth/width.c
lib/wchar.in.h
+ lib/wctype-h.c
lib/wctype.in.h
lib/wcwidth.c
m4/00gnulib.m4
m4/codeset.m4
+ m4/configmake.m4
m4/extensions.m4
+ m4/extern-inline.m4
m4/fcntl-o.m4
m4/glibc21.m4
m4/gnulib-common.m4
diff --git a/src/libs/gnulib/m4/gnulib-tool.m4 b/src/libs/gnulib/m4/gnulib-tool.m4
index 69e7733..f3dea1a 100644
--- a/src/libs/gnulib/m4/gnulib-tool.m4
+++ b/src/libs/gnulib/m4/gnulib-tool.m4
@@ -1,5 +1,5 @@
# gnulib-tool.m4 serial 2
-dnl Copyright (C) 2004-2005, 2009-2010 Free Software Foundation, Inc.
+dnl Copyright (C) 2004-2005, 2009-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/src/libs/gnulib/m4/include_next.m4 b/src/libs/gnulib/m4/include_next.m4
index e37eb05..108d945 100644
--- a/src/libs/gnulib/m4/include_next.m4
+++ b/src/libs/gnulib/m4/include_next.m4
@@ -1,5 +1,5 @@
-# include_next.m4 serial 16
-dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
+# include_next.m4 serial 23
+dnl Copyright (C) 2006-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -143,68 +143,121 @@ choke me
# even if the compiler does not support include_next.
# The three "///" are to pacify Sun C 5.8, which otherwise would say
# "warning: #include of /usr/include/... may be non-portable".
-# Use `""', not `<>', so that the /// cannot be confused with a C99 comment.
+# Use '""', not '<>', so that the /// cannot be confused with a C99 comment.
# Note: This macro assumes that the header file is not empty after
# preprocessing, i.e. it does not only define preprocessor macros but also
# provides some type/enum definitions or function/variable declarations.
+#
+# This macro also checks whether each header exists, by invoking
+# AC_CHECK_HEADERS_ONCE or AC_CHECK_HEADERS on each argument.
AC_DEFUN([gl_CHECK_NEXT_HEADERS],
[
+ gl_NEXT_HEADERS_INTERNAL([$1], [check])
+])
+
+# gl_NEXT_HEADERS(HEADER1 HEADER2 ...)
+# ------------------------------------
+# Like gl_CHECK_NEXT_HEADERS, except do not check whether the headers exist.
+# This is suitable for headers like <stddef.h> that are standardized by C89
+# and therefore can be assumed to exist.
+AC_DEFUN([gl_NEXT_HEADERS],
+[
+ gl_NEXT_HEADERS_INTERNAL([$1], [assume])
+])
+
+# The guts of gl_CHECK_NEXT_HEADERS and gl_NEXT_HEADERS.
+AC_DEFUN([gl_NEXT_HEADERS_INTERNAL],
+[
AC_REQUIRE([gl_INCLUDE_NEXT])
AC_REQUIRE([AC_CANONICAL_HOST])
- AC_CHECK_HEADERS_ONCE([$1])
+ m4_if([$2], [check],
+ [AC_CHECK_HEADERS_ONCE([$1])
+ ])
+
+dnl FIXME: gl_next_header and gl_header_exists must be used unquoted
+dnl until we can assume autoconf 2.64 or newer.
m4_foreach_w([gl_HEADER_NAME], [$1],
[AS_VAR_PUSHDEF([gl_next_header],
[gl_cv_next_]m4_defn([gl_HEADER_NAME]))
if test $gl_cv_have_include_next = yes; then
- AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
+ AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>'])
else
AC_CACHE_CHECK(
[absolute name of <]m4_defn([gl_HEADER_NAME])[>],
m4_defn([gl_next_header]),
- [AS_VAR_PUSHDEF([gl_header_exists],
- [ac_cv_header_]m4_defn([gl_HEADER_NAME]))
- if test AS_VAR_GET(gl_header_exists) = yes; then
- AC_LANG_CONFTEST(
- [AC_LANG_SOURCE(
- [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]]
- )])
- dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
- dnl that contain only a #include of other header files and no
- dnl non-comment tokens of their own. This leads to a failure to
- dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h>
- dnl and others. The workaround is to force preservation of comments
- dnl through option -C. This ensures all necessary #line directives
- dnl are present. GCC supports option -C as well.
- case "$host_os" in
- aix*) gl_absname_cpp="$ac_cpp -C" ;;
- *) gl_absname_cpp="$ac_cpp" ;;
- esac
- dnl eval is necessary to expand gl_absname_cpp.
- dnl Ultrix and Pyramid sh refuse to redirect output of eval,
- dnl so use subshell.
- AS_VAR_SET([gl_next_header],
- ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
- sed -n '\#/]m4_defn([gl_HEADER_NAME])[#{
- s#.*"\(.*/]m4_defn([gl_HEADER_NAME])[\)".*#\1#
- s#^/[^/]#//&#
- p
- q
- }'`'"'])
- else
- AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>'])
- fi
- AS_VAR_POPDEF([gl_header_exists])])
+ [m4_if([$2], [check],
+ [AS_VAR_PUSHDEF([gl_header_exists],
+ [ac_cv_header_]m4_defn([gl_HEADER_NAME]))
+ if test AS_VAR_GET(gl_header_exists) = yes; then
+ AS_VAR_POPDEF([gl_header_exists])
+ ])
+ AC_LANG_CONFTEST(
+ [AC_LANG_SOURCE(
+ [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]]
+ )])
+ dnl AIX "xlc -E" and "cc -E" omit #line directives for header
+ dnl files that contain only a #include of other header files and
+ dnl no non-comment tokens of their own. This leads to a failure
+ dnl to detect the absolute name of <dirent.h>, <signal.h>,
+ dnl <poll.h> and others. The workaround is to force preservation
+ dnl of comments through option -C. This ensures all necessary
+ dnl #line directives are present. GCC supports option -C as well.
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+changequote(,)
+ case "$host_os" in
+ mingw*)
+ dnl For the sake of native Windows compilers (excluding gcc),
+ dnl treat backslash as a directory separator, like /.
+ dnl Actually, these compilers use a double-backslash as
+ dnl directory separator, inside the
+ dnl # line "filename"
+ dnl directives.
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ dnl A sed expression that turns a string into a basic regular
+ dnl expression, for use within "/.../".
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+changequote([,])
+ gl_header_literal_regex=`echo ']m4_defn([gl_HEADER_NAME])[' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+changequote(,)dnl
+ s|^/[^/]|//&|
+changequote([,])dnl
+ p
+ q
+ }'
+ dnl eval is necessary to expand gl_absname_cpp.
+ dnl Ultrix and Pyramid sh refuse to redirect output of eval,
+ dnl so use subshell.
+ AS_VAR_SET(gl_next_header,
+ ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+ sed -n "$gl_absolute_header_sed"`'"'])
+ m4_if([$2], [check],
+ [else
+ AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>'])
+ fi
+ ])
+ ])
fi
AC_SUBST(
AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])),
- [AS_VAR_GET([gl_next_header])])
+ [AS_VAR_GET(gl_next_header)])
if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
# INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
gl_next_as_first_directive='<'gl_HEADER_NAME'>'
else
# INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
- gl_next_as_first_directive=AS_VAR_GET([gl_next_header])
+ gl_next_as_first_directive=AS_VAR_GET(gl_next_header)
fi
AC_SUBST(
AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])),
diff --git a/src/libs/gnulib/m4/inttypes-pri.m4 b/src/libs/gnulib/m4/inttypes-pri.m4
new file mode 100644
index 0000000..e5a1e05
--- /dev/null
+++ b/src/libs/gnulib/m4/inttypes-pri.m4
@@ -0,0 +1,42 @@
+# inttypes-pri.m4 serial 7 (gettext-0.18.2)
+dnl Copyright (C) 1997-2002, 2006, 2008-2013 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ([2.53])
+
+# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
+# macros to non-string values. This is the case on AIX 4.3.3.
+
+AC_DEFUN([gt_INTTYPES_PRI],
+[
+ AC_CHECK_HEADERS([inttypes.h])
+ if test $ac_cv_header_inttypes_h = yes; then
+ AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
+ [gt_cv_inttypes_pri_broken],
+ [
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <inttypes.h>
+#ifdef PRId32
+char *p = PRId32;
+#endif
+ ]],
+ [[]])],
+ [gt_cv_inttypes_pri_broken=no],
+ [gt_cv_inttypes_pri_broken=yes])
+ ])
+ fi
+ if test "$gt_cv_inttypes_pri_broken" = yes; then
+ AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
+ [Define if <inttypes.h> exists and defines unusable PRI* macros.])
+ PRI_MACROS_BROKEN=1
+ else
+ PRI_MACROS_BROKEN=0
+ fi
+ AC_SUBST([PRI_MACROS_BROKEN])
+])
diff --git a/src/libs/gnulib/m4/inttypes.m4 b/src/libs/gnulib/m4/inttypes.m4
new file mode 100644
index 0000000..3b483d3
--- /dev/null
+++ b/src/libs/gnulib/m4/inttypes.m4
@@ -0,0 +1,157 @@
+# inttypes.m4 serial 26
+dnl Copyright (C) 2006-2013 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Derek Price, Bruno Haible.
+dnl Test whether <inttypes.h> is supported or must be substituted.
+
+AC_DEFUN([gl_INTTYPES_H],
+[
+ AC_REQUIRE([gl_INTTYPES_INCOMPLETE])
+ gl_INTTYPES_PRI_SCN
+])
+
+AC_DEFUN_ONCE([gl_INTTYPES_INCOMPLETE],
+[
+ AC_REQUIRE([gl_STDINT_H])
+ AC_CHECK_HEADERS_ONCE([inttypes.h])
+
+ dnl Override <inttypes.h> always, so that the portability warnings work.
+ AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
+ gl_CHECK_NEXT_HEADERS([inttypes.h])
+
+ AC_REQUIRE([gl_MULTIARCH])
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use.
+ gl_WARN_ON_USE_PREPARE([[#include <inttypes.h>
+ ]], [imaxabs imaxdiv strtoimax strtoumax])
+])
+
+# Ensure that the PRI* and SCN* macros are defined appropriately.
+AC_DEFUN([gl_INTTYPES_PRI_SCN],
+[
+ AC_REQUIRE([gt_INTTYPES_PRI])
+
+ PRIPTR_PREFIX=
+ if test -n "$STDINT_H"; then
+ dnl Using the gnulib <stdint.h>. It always defines intptr_t to 'long'.
+ PRIPTR_PREFIX='"l"'
+ else
+ dnl Using the system's <stdint.h>.
+ for glpfx in '' l ll I64; do
+ case $glpfx in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ I64) gltype1='__int64';;
+ esac
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <stdint.h>
+ extern intptr_t foo;
+ extern $gltype1 foo;]])],
+ [PRIPTR_PREFIX='"'$glpfx'"'])
+ test -n "$PRIPTR_PREFIX" && break
+ done
+ fi
+ AC_SUBST([PRIPTR_PREFIX])
+
+ gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
+ [INT32_MAX_LT_INTMAX_MAX],
+ [defined INT32_MAX && defined INTMAX_MAX],
+ [INT32_MAX < INTMAX_MAX],
+ [sizeof (int) < sizeof (long long int)])
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+ gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
+ [INT64_MAX_EQ_LONG_MAX],
+ [defined INT64_MAX],
+ [INT64_MAX == LONG_MAX],
+ [sizeof (long long int) == sizeof (long int)])
+ else
+ INT64_MAX_EQ_LONG_MAX=-1
+ fi
+ gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
+ [UINT32_MAX_LT_UINTMAX_MAX],
+ [defined UINT32_MAX && defined UINTMAX_MAX],
+ [UINT32_MAX < UINTMAX_MAX],
+ [sizeof (unsigned int) < sizeof (unsigned long long int)])
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+ gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
+ [UINT64_MAX_EQ_ULONG_MAX],
+ [defined UINT64_MAX],
+ [UINT64_MAX == ULONG_MAX],
+ [sizeof (unsigned long long int) == sizeof (unsigned long int)])
+ else
+ UINT64_MAX_EQ_ULONG_MAX=-1
+ fi
+])
+
+# Define the symbol $1 to be 1 if the condition is true, 0 otherwise.
+# If $2 is true, the condition is $3; otherwise if long long int is supported
+# approximate the condition with $4; otherwise, assume the condition is false.
+# The condition should work on all C99 platforms; the approximations should be
+# good enough to work on all practical pre-C99 platforms.
+# $2 is evaluated by the C preprocessor, $3 and $4 as compile-time constants.
+AC_DEFUN([gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION],
+[
+ AC_CACHE_CHECK([whether $3],
+ [gl_cv_test_$1],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[/* Work also in C++ mode. */
+ #define __STDC_LIMIT_MACROS 1
+
+ /* Work if build is not clean. */
+ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+ #include <limits.h>
+ #if HAVE_STDINT_H
+ #include <stdint.h>
+ #endif
+
+ #if $2
+ #define CONDITION ($3)
+ #elif HAVE_LONG_LONG_INT
+ #define CONDITION ($4)
+ #else
+ #define CONDITION 0
+ #endif
+ int test[CONDITION ? 1 : -1];]])],
+ [gl_cv_test_$1=yes],
+ [gl_cv_test_$1=no])])
+ if test $gl_cv_test_$1 = yes; then
+ $1=1;
+ else
+ $1=0;
+ fi
+ AC_SUBST([$1])
+])
+
+AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+])
+
+AC_DEFUN([gl_INTTYPES_H_DEFAULTS],
+[
+ GNULIB_IMAXABS=0; AC_SUBST([GNULIB_IMAXABS])
+ GNULIB_IMAXDIV=0; AC_SUBST([GNULIB_IMAXDIV])
+ GNULIB_STRTOIMAX=0; AC_SUBST([GNULIB_STRTOIMAX])
+ GNULIB_STRTOUMAX=0; AC_SUBST([GNULIB_STRTOUMAX])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DECL_IMAXABS=1; AC_SUBST([HAVE_DECL_IMAXABS])
+ HAVE_DECL_IMAXDIV=1; AC_SUBST([HAVE_DECL_IMAXDIV])
+ HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX])
+ HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX])
+ REPLACE_STRTOIMAX=0; AC_SUBST([REPLACE_STRTOIMAX])
+ INT32_MAX_LT_INTMAX_MAX=1; AC_SUBST([INT32_MAX_LT_INTMAX_MAX])
+ INT64_MAX_EQ_LONG_MAX='defined _LP64'; AC_SUBST([INT64_MAX_EQ_LONG_MAX])
+ PRI_MACROS_BROKEN=0; AC_SUBST([PRI_MACROS_BROKEN])
+ PRIPTR_PREFIX=__PRIPTR_PREFIX; AC_SUBST([PRIPTR_PREFIX])
+ UINT32_MAX_LT_UINTMAX_MAX=1; AC_SUBST([UINT32_MAX_LT_UINTMAX_MAX])
+ UINT64_MAX_EQ_ULONG_MAX='defined _LP64'; AC_SUBST([UINT64_MAX_EQ_ULONG_MAX])
+])
diff --git a/src/libs/gnulib/m4/libunistring-base.m4 b/src/libs/gnulib/m4/libunistring-base.m4
index 8335ec5..d105c72 100644
--- a/src/libs/gnulib/m4/libunistring-base.m4
+++ b/src/libs/gnulib/m4/libunistring-base.m4
@@ -1,5 +1,5 @@
# libunistring-base.m4 serial 5
-dnl Copyright (C) 2010 Free Software Foundation, Inc.
+dnl Copyright (C) 2010-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/src/libs/gnulib/m4/localcharset.m4 b/src/libs/gnulib/m4/localcharset.m4
index ee2e801..2e93e58 100644
--- a/src/libs/gnulib/m4/localcharset.m4
+++ b/src/libs/gnulib/m4/localcharset.m4
@@ -1,5 +1,5 @@
# localcharset.m4 serial 7
-dnl Copyright (C) 2002, 2004, 2006, 2009, 2010 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2004, 2006, 2009-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/src/libs/gnulib/m4/longlong.m4 b/src/libs/gnulib/m4/longlong.m4
index cca3c1a..3af6ab5 100644
--- a/src/libs/gnulib/m4/longlong.m4
+++ b/src/libs/gnulib/m4/longlong.m4
@@ -1,5 +1,5 @@
-# longlong.m4 serial 14
-dnl Copyright (C) 1999-2007, 2009-2010 Free Software Foundation, Inc.
+# longlong.m4 serial 17
+dnl Copyright (C) 1999-2007, 2009-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -7,8 +7,8 @@ dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert.
# Define HAVE_LONG_LONG_INT if 'long long int' works.
-# This fixes a bug in Autoconf 2.61, but can be removed once we
-# assume 2.62 everywhere.
+# This fixes a bug in Autoconf 2.61, and can be faster
+# than what's in Autoconf 2.62 through 2.68.
# Note: If the type 'long long int' exists but is only 32 bits large
# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
@@ -16,44 +16,48 @@ dnl From Paul Eggert.
AC_DEFUN([AC_TYPE_LONG_LONG_INT],
[
+ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
- [AC_LINK_IFELSE(
- [_AC_TYPE_LONG_LONG_SNIPPET],
- [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
- dnl If cross compiling, assume the bug isn't important, since
- dnl nobody cross compiles for this platform as far as we know.
- AC_RUN_IFELSE(
- [AC_LANG_PROGRAM(
- [[@%:@include <limits.h>
- @%:@ifndef LLONG_MAX
- @%:@ define HALF \
- (1LL << (sizeof (long long int) * CHAR_BIT - 2))
- @%:@ define LLONG_MAX (HALF - 1 + HALF)
- @%:@endif]],
- [[long long int n = 1;
- int i;
- for (i = 0; ; i++)
- {
- long long int m = n << i;
- if (m >> i != n)
- return 1;
- if (LLONG_MAX / 2 < m)
- break;
- }
- return 0;]])],
- [ac_cv_type_long_long_int=yes],
- [ac_cv_type_long_long_int=no],
- [ac_cv_type_long_long_int=yes])],
- [ac_cv_type_long_long_int=no])])
+ [ac_cv_type_long_long_int=yes
+ if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+ ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+ if test $ac_cv_type_long_long_int = yes; then
+ dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
+ dnl If cross compiling, assume the bug is not important, since
+ dnl nobody cross compiles for this platform as far as we know.
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[@%:@include <limits.h>
+ @%:@ifndef LLONG_MAX
+ @%:@ define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ @%:@ define LLONG_MAX (HALF - 1 + HALF)
+ @%:@endif]],
+ [[long long int n = 1;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;]])],
+ [],
+ [ac_cv_type_long_long_int=no],
+ [:])
+ fi
+ fi])
if test $ac_cv_type_long_long_int = yes; then
AC_DEFINE([HAVE_LONG_LONG_INT], [1],
- [Define to 1 if the system has the type `long long int'.])
+ [Define to 1 if the system has the type 'long long int'.])
fi
])
# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
-# This fixes a bug in Autoconf 2.61, but can be removed once we
-# assume 2.62 everywhere.
+# This fixes a bug in Autoconf 2.61, and can be faster
+# than what's in Autoconf 2.62 through 2.68.
# Note: If the type 'unsigned long long int' exists but is only 32 bits
# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
@@ -64,13 +68,16 @@ AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
[
AC_CACHE_CHECK([for unsigned long long int],
[ac_cv_type_unsigned_long_long_int],
- [AC_LINK_IFELSE(
- [_AC_TYPE_LONG_LONG_SNIPPET],
- [ac_cv_type_unsigned_long_long_int=yes],
- [ac_cv_type_unsigned_long_long_int=no])])
+ [ac_cv_type_unsigned_long_long_int=yes
+ if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+ AC_LINK_IFELSE(
+ [_AC_TYPE_LONG_LONG_SNIPPET],
+ [],
+ [ac_cv_type_unsigned_long_long_int=no])
+ fi])
if test $ac_cv_type_unsigned_long_long_int = yes; then
AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
- [Define to 1 if the system has the type `unsigned long long int'.])
+ [Define to 1 if the system has the type 'unsigned long long int'.])
fi
])
diff --git a/src/libs/gnulib/m4/multiarch.m4 b/src/libs/gnulib/m4/multiarch.m4
index 389bd2b..552ec7e 100644
--- a/src/libs/gnulib/m4/multiarch.m4
+++ b/src/libs/gnulib/m4/multiarch.m4
@@ -1,12 +1,12 @@
-# multiarch.m4 serial 5
-dnl Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+# multiarch.m4 serial 7
+dnl Copyright (C) 2008-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
# Determine whether the compiler is or may be producing universal binaries.
#
-# On MacOS X 10.5 and later systems, the user can create libraries and
+# On Mac OS X 10.5 and later systems, the user can create libraries and
# executables that work on multiple system types--known as "fat" or
# "universal" binaries--by specifying multiple '-arch' options to the
# compiler but only a single '-arch' option to the preprocessor. Like
@@ -16,8 +16,7 @@ dnl with or without modifications, as long as this notice is preserved.
# CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
# CPP="gcc -E" CXXCPP="g++ -E"
#
-# Detect this situation and set the macro AA_APPLE_UNIVERSAL_BUILD at the
-# beginning of config.h and set APPLE_UNIVERSAL_BUILD accordingly.
+# Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly.
AC_DEFUN_ONCE([gl_MULTIARCH],
[
@@ -55,8 +54,6 @@ AC_DEFUN_ONCE([gl_MULTIARCH],
done
])
if test $gl_cv_c_multiarch = yes; then
- AC_DEFINE([AA_APPLE_UNIVERSAL_BUILD], [1],
- [Define if the compiler is building for multiple architectures of Apple platforms at once.])
APPLE_UNIVERSAL_BUILD=1
else
APPLE_UNIVERSAL_BUILD=0
diff --git a/src/libs/gnulib/m4/onceonly.m4 b/src/libs/gnulib/m4/onceonly.m4
index 6a9c87b..0a875a3 100644
--- a/src/libs/gnulib/m4/onceonly.m4
+++ b/src/libs/gnulib/m4/onceonly.m4
@@ -1,9 +1,22 @@
-# onceonly.m4 serial 7
-dnl Copyright (C) 2002-2003, 2005-2006, 2008-2010 Free Software Foundation,
+# onceonly.m4 serial 9
+dnl Copyright (C) 2002-2003, 2005-2006, 2008-2013 Free Software Foundation,
dnl Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
+dnl
+dnl This file is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 3 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This file is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this file. If not, see <http://www.gnu.org/licenses/>.
+dnl
+dnl As a special exception to the GNU General Public License,
+dnl this file may be distributed as part of a program
dnl that contains a configuration script generated by Autoconf, under
dnl the same distribution terms as the rest of that program.
@@ -67,7 +80,7 @@ AC_DEFUN([AC_CHECK_FUNCS_ONCE], [
[gl_func_list="$gl_func_list gl_FUNC_NAME"])
gl_FUNCS_EXPANSION
AH_TEMPLATE(AS_TR_CPP([HAVE_]m4_defn([gl_FUNC_NAME])),
- [Define to 1 if you have the `]m4_defn([gl_FUNC_NAME])[' function.])
+ [Define to 1 if you have the ']m4_defn([gl_FUNC_NAME])[' function.])
])
AC_REQUIRE([gl_CHECK_FUNC_]m4_defn([gl_FUNC_NAME]))
])
diff --git a/src/libs/gnulib/m4/stdbool.m4 b/src/libs/gnulib/m4/stdbool.m4
new file mode 100644
index 0000000..80d5559
--- /dev/null
+++ b/src/libs/gnulib/m4/stdbool.m4
@@ -0,0 +1,100 @@
+# Check for stdbool.h that conforms to C99.
+
+dnl Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# Prepare for substituting <stdbool.h> if it is not supported.
+
+AC_DEFUN([AM_STDBOOL_H],
+[
+ AC_REQUIRE([AC_CHECK_HEADER_STDBOOL])
+
+ # Define two additional variables used in the Makefile substitution.
+
+ if test "$ac_cv_header_stdbool_h" = yes; then
+ STDBOOL_H=''
+ else
+ STDBOOL_H='stdbool.h'
+ fi
+ AC_SUBST([STDBOOL_H])
+ AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [test -n "$STDBOOL_H"])
+
+ if test "$ac_cv_type__Bool" = yes; then
+ HAVE__BOOL=1
+ else
+ HAVE__BOOL=0
+ fi
+ AC_SUBST([HAVE__BOOL])
+])
+
+# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
+AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
+
+# This version of the macro is needed in autoconf <= 2.68.
+
+AC_DEFUN([AC_CHECK_HEADER_STDBOOL],
+ [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
+ [ac_cv_header_stdbool_h],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+ #include <stdbool.h>
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ /* See body of main program for 'e'. */
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ /* The following fails for
+ HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+ ]],
+ [[
+ bool e = &s;
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+ ]])],
+ [ac_cv_header_stdbool_h=yes],
+ [ac_cv_header_stdbool_h=no])])
+ AC_CHECK_TYPES([_Bool])
+])
diff --git a/src/libs/gnulib/m4/stddef_h.m4 b/src/libs/gnulib/m4/stddef_h.m4
index c3ae569..5da8ab1 100644
--- a/src/libs/gnulib/m4/stddef_h.m4
+++ b/src/libs/gnulib/m4/stddef_h.m4
@@ -1,6 +1,6 @@
dnl A placeholder for POSIX 2008 <stddef.h>, for platforms that have issues.
-# stddef_h.m4 serial 2
-dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+# stddef_h.m4 serial 4
+dnl Copyright (C) 2009-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -9,6 +9,7 @@ AC_DEFUN([gl_STDDEF_H],
[
AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
AC_REQUIRE([gt_TYPE_WCHAR_T])
+ STDDEF_H=
if test $gt_cv_c_wchar_t = no; then
HAVE_WCHAR_T=0
STDDEF_H=stddef.h
@@ -24,8 +25,10 @@ AC_DEFUN([gl_STDDEF_H],
REPLACE_NULL=1
STDDEF_H=stddef.h
fi
+ AC_SUBST([STDDEF_H])
+ AM_CONDITIONAL([GL_GENERATE_STDDEF_H], [test -n "$STDDEF_H"])
if test -n "$STDDEF_H"; then
- gl_CHECK_NEXT_HEADERS([stddef.h])
+ gl_NEXT_HEADERS([stddef.h])
fi
])
@@ -41,5 +44,4 @@ AC_DEFUN([gl_STDDEF_H_DEFAULTS],
dnl Assume proper GNU behavior unless another module says otherwise.
REPLACE_NULL=0; AC_SUBST([REPLACE_NULL])
HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T])
- STDDEF_H=''; AC_SUBST([STDDEF_H])
])
diff --git a/src/libs/gnulib/m4/stdint.m4 b/src/libs/gnulib/m4/stdint.m4
index 7fe2836..27cdcdb 100644
--- a/src/libs/gnulib/m4/stdint.m4
+++ b/src/libs/gnulib/m4/stdint.m4
@@ -1,5 +1,5 @@
-# stdint.m4 serial 36
-dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
+# stdint.m4 serial 43
+dnl Copyright (C) 2001-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert and Bruno Haible.
dnl Test whether <stdint.h> is supported or must be substituted.
-AC_DEFUN([gl_STDINT_H],
+AC_DEFUN_ONCE([gl_STDINT_H],
[
AC_PREREQ([2.59])dnl
@@ -27,6 +27,15 @@ AC_DEFUN([gl_STDINT_H],
fi
AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT])
+ dnl Check for <wchar.h>, in the same way as gl_WCHAR_H does.
+ AC_CHECK_HEADERS_ONCE([wchar.h])
+ if test $ac_cv_header_wchar_h = yes; then
+ HAVE_WCHAR_H=1
+ else
+ HAVE_WCHAR_H=0
+ fi
+ AC_SUBST([HAVE_WCHAR_H])
+
dnl Check for <inttypes.h>.
dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
if test $ac_cv_header_inttypes_h = yes; then
@@ -60,8 +69,6 @@ AC_DEFUN([gl_STDINT_H],
[gl_cv_header_working_stdint_h=no
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
-#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
-#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
#include <stdint.h>
/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
@@ -145,9 +152,11 @@ uintmax_t j = UINTMAX_MAX;
#include <limits.h> /* for CHAR_BIT */
#define TYPE_MINIMUM(t) \
- ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
#define TYPE_MAXIMUM(t) \
- ((t) ((t) 0 < (t) -1 ? (t) -1 : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+ ((t) ((t) 0 < (t) -1 \
+ ? (t) -1 \
+ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
struct s {
int check_PTRDIFF:
PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
@@ -208,8 +217,6 @@ struct s {
dnl This detects a bug on HP-UX 11.23/ia64.
AC_RUN_IFELSE([
AC_LANG_PROGRAM([[
-#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
-#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
#include <stdint.h>
]
@@ -290,14 +297,11 @@ static const char *macro_values[] =
fi
AC_SUBST([HAVE_SYS_BITYPES_H])
- dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
- dnl character support).
- AC_CHECK_HEADERS_ONCE([wchar.h])
-
gl_STDINT_TYPE_PROPERTIES
STDINT_H=stdint.h
fi
AC_SUBST([STDINT_H])
+ AM_CONDITIONAL([GL_GENERATE_STDINT_H], [test -n "$STDINT_H"])
])
dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES)
@@ -458,6 +462,14 @@ AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
fi
gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t],
[gl_STDINT_INCLUDES])
+
+ dnl If wint_t is smaller than 'int', it cannot satisfy the ISO C 99
+ dnl requirement that wint_t is "unchanged by default argument promotions".
+ dnl In this case gnulib's <wchar.h> and <wctype.h> override wint_t.
+ dnl Set the variable BITSIZEOF_WINT_T accordingly.
+ if test $BITSIZEOF_WINT_T -lt 32; then
+ BITSIZEOF_WINT_T=32
+ fi
])
dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
diff --git a/src/libs/gnulib/m4/warn-on-use.m4 b/src/libs/gnulib/m4/warn-on-use.m4
index 42daae8..e43beeb 100644
--- a/src/libs/gnulib/m4/warn-on-use.m4
+++ b/src/libs/gnulib/m4/warn-on-use.m4
@@ -1,5 +1,5 @@
-# warn-on-use.m4 serial 2
-dnl Copyright (C) 2010 Free Software Foundation, Inc.
+# warn-on-use.m4 serial 5
+dnl Copyright (C) 2010-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -18,8 +18,8 @@ dnl with or without modifications, as long as this notice is preserved.
# some systems declare functions in the wrong header, then INCLUDES
# should do likewise.
#
-# If you assume C89, then it is generally safe to assume declarations
-# for functions declared in that standard (such as gets) without
+# It is generally safe to assume declarations for functions declared
+# in the intersection of C89 and C11 (such as printf) without
# needing gl_WARN_ON_USE_PREPARE.
AC_DEFUN([gl_WARN_ON_USE_PREPARE],
[
@@ -27,6 +27,8 @@ AC_DEFUN([gl_WARN_ON_USE_PREPARE],
[AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])),
[Define to 1 if ]m4_defn([gl_decl])[ is declared even after
undefining macros.])])dnl
+dnl FIXME: gl_Symbol must be used unquoted until we can assume
+dnl autoconf 2.64 or newer.
for gl_func in m4_flatten([$2]); do
AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl
AC_CACHE_CHECK([whether $gl_func is declared without a macro],
@@ -35,8 +37,8 @@ AC_DEFUN([gl_WARN_ON_USE_PREPARE],
[@%:@undef $gl_func
(void) $gl_func;])],
[AS_VAR_SET(gl_Symbol, [yes])], [AS_VAR_SET(gl_Symbol, [no])])])
- AS_VAR_IF(gl_Symbol, [yes],
- [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1])
+ AS_VAR_IF(gl_Symbol, [yes],
+ [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1])
dnl shortcut - if the raw declaration exists, then set a cache
dnl variable to allow skipping any later AC_CHECK_DECL efforts
eval ac_cv_have_decl_$gl_func=yes])
diff --git a/src/libs/gnulib/m4/wchar_h.m4 b/src/libs/gnulib/m4/wchar_h.m4
index 8c8fad9..bedb15a 100644
--- a/src/libs/gnulib/m4/wchar_h.m4
+++ b/src/libs/gnulib/m4/wchar_h.m4
@@ -1,13 +1,13 @@
dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
-dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl Written by Eric Blake.
-# wchar_h.m4 serial 35
+# wchar_h.m4 serial 39
AC_DEFUN([gl_WCHAR_H],
[
@@ -17,7 +17,6 @@ AC_DEFUN([gl_WCHAR_H],
dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
dnl character support).
dnl <wchar.h> is always overridden, because of GNULIB_POSIXCHECK.
- AC_CHECK_HEADERS_ONCE([wchar.h])
gl_CHECK_NEXT_HEADERS([wchar.h])
if test $ac_cv_header_wchar_h = yes; then
HAVE_WCHAR_H=1
@@ -39,15 +38,23 @@ AC_DEFUN([gl_WCHAR_H],
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use.
gl_WARN_ON_USE_PREPARE([[
-/* Some systems require additional headers. */
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
#if !(defined __GLIBC__ && !defined __UCLIBC__)
# include <stddef.h>
# include <stdio.h>
# include <time.h>
#endif
#include <wchar.h>
- ]], [btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb
- wcsrtombs wcsnrtombs wcwidth])
+ ]],
+ [btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb
+ wcsrtombs wcsnrtombs wcwidth wmemchr wmemcmp wmemcpy wmemmove wmemset
+ wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp
+ wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr
+ wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth
+ ])
])
dnl Check whether <wchar.h> is usable at all.
@@ -63,6 +70,13 @@ AC_DEFUN([gl_WCHAR_H_INLINE_OK],
[gl_cv_header_wchar_h_correct_inline=yes
AC_LANG_CONFTEST([
AC_LANG_SOURCE([[#define wcstod renamed_wcstod
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
#include <wchar.h>
extern int zero (void);
int main () { return zero(); }
@@ -71,6 +85,13 @@ int main () { return zero(); }
mv conftest.$ac_objext conftest1.$ac_objext
AC_LANG_CONFTEST([
AC_LANG_SOURCE([[#define wcstod renamed_wcstod
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
#include <wchar.h>
int zero (void) { return 0; }
]])])
@@ -98,13 +119,6 @@ Configuration aborted.])
fi
])
-dnl Unconditionally enables the replacement of <wchar.h>.
-AC_DEFUN([gl_REPLACE_WCHAR_H],
-[
- dnl This is a no-op, because <wchar.h> is always overridden.
- :
-])
-
AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
[
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
@@ -116,17 +130,45 @@ AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
AC_DEFUN([gl_WCHAR_H_DEFAULTS],
[
- GNULIB_BTOWC=0; AC_SUBST([GNULIB_BTOWC])
- GNULIB_WCTOB=0; AC_SUBST([GNULIB_WCTOB])
- GNULIB_MBSINIT=0; AC_SUBST([GNULIB_MBSINIT])
- GNULIB_MBRTOWC=0; AC_SUBST([GNULIB_MBRTOWC])
- GNULIB_MBRLEN=0; AC_SUBST([GNULIB_MBRLEN])
- GNULIB_MBSRTOWCS=0; AC_SUBST([GNULIB_MBSRTOWCS])
- GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS])
- GNULIB_WCRTOMB=0; AC_SUBST([GNULIB_WCRTOMB])
- GNULIB_WCSRTOMBS=0; AC_SUBST([GNULIB_WCSRTOMBS])
- GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS])
- GNULIB_WCWIDTH=0; AC_SUBST([GNULIB_WCWIDTH])
+ GNULIB_BTOWC=0; AC_SUBST([GNULIB_BTOWC])
+ GNULIB_WCTOB=0; AC_SUBST([GNULIB_WCTOB])
+ GNULIB_MBSINIT=0; AC_SUBST([GNULIB_MBSINIT])
+ GNULIB_MBRTOWC=0; AC_SUBST([GNULIB_MBRTOWC])
+ GNULIB_MBRLEN=0; AC_SUBST([GNULIB_MBRLEN])
+ GNULIB_MBSRTOWCS=0; AC_SUBST([GNULIB_MBSRTOWCS])
+ GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS])
+ GNULIB_WCRTOMB=0; AC_SUBST([GNULIB_WCRTOMB])
+ GNULIB_WCSRTOMBS=0; AC_SUBST([GNULIB_WCSRTOMBS])
+ GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS])
+ GNULIB_WCWIDTH=0; AC_SUBST([GNULIB_WCWIDTH])
+ GNULIB_WMEMCHR=0; AC_SUBST([GNULIB_WMEMCHR])
+ GNULIB_WMEMCMP=0; AC_SUBST([GNULIB_WMEMCMP])
+ GNULIB_WMEMCPY=0; AC_SUBST([GNULIB_WMEMCPY])
+ GNULIB_WMEMMOVE=0; AC_SUBST([GNULIB_WMEMMOVE])
+ GNULIB_WMEMSET=0; AC_SUBST([GNULIB_WMEMSET])
+ GNULIB_WCSLEN=0; AC_SUBST([GNULIB_WCSLEN])
+ GNULIB_WCSNLEN=0; AC_SUBST([GNULIB_WCSNLEN])
+ GNULIB_WCSCPY=0; AC_SUBST([GNULIB_WCSCPY])
+ GNULIB_WCPCPY=0; AC_SUBST([GNULIB_WCPCPY])
+ GNULIB_WCSNCPY=0; AC_SUBST([GNULIB_WCSNCPY])
+ GNULIB_WCPNCPY=0; AC_SUBST([GNULIB_WCPNCPY])
+ GNULIB_WCSCAT=0; AC_SUBST([GNULIB_WCSCAT])
+ GNULIB_WCSNCAT=0; AC_SUBST([GNULIB_WCSNCAT])
+ GNULIB_WCSCMP=0; AC_SUBST([GNULIB_WCSCMP])
+ GNULIB_WCSNCMP=0; AC_SUBST([GNULIB_WCSNCMP])
+ GNULIB_WCSCASECMP=0; AC_SUBST([GNULIB_WCSCASECMP])
+ GNULIB_WCSNCASECMP=0; AC_SUBST([GNULIB_WCSNCASECMP])
+ GNULIB_WCSCOLL=0; AC_SUBST([GNULIB_WCSCOLL])
+ GNULIB_WCSXFRM=0; AC_SUBST([GNULIB_WCSXFRM])
+ GNULIB_WCSDUP=0; AC_SUBST([GNULIB_WCSDUP])
+ GNULIB_WCSCHR=0; AC_SUBST([GNULIB_WCSCHR])
+ GNULIB_WCSRCHR=0; AC_SUBST([GNULIB_WCSRCHR])
+ GNULIB_WCSCSPN=0; AC_SUBST([GNULIB_WCSCSPN])
+ GNULIB_WCSSPN=0; AC_SUBST([GNULIB_WCSSPN])
+ GNULIB_WCSPBRK=0; AC_SUBST([GNULIB_WCSPBRK])
+ GNULIB_WCSSTR=0; AC_SUBST([GNULIB_WCSSTR])
+ GNULIB_WCSTOK=0; AC_SUBST([GNULIB_WCSTOK])
+ GNULIB_WCSWIDTH=0; AC_SUBST([GNULIB_WCSWIDTH])
dnl Assume proper GNU behavior unless another module says otherwise.
HAVE_BTOWC=1; AC_SUBST([HAVE_BTOWC])
HAVE_MBSINIT=1; AC_SUBST([HAVE_MBSINIT])
@@ -137,6 +179,34 @@ AC_DEFUN([gl_WCHAR_H_DEFAULTS],
HAVE_WCRTOMB=1; AC_SUBST([HAVE_WCRTOMB])
HAVE_WCSRTOMBS=1; AC_SUBST([HAVE_WCSRTOMBS])
HAVE_WCSNRTOMBS=1; AC_SUBST([HAVE_WCSNRTOMBS])
+ HAVE_WMEMCHR=1; AC_SUBST([HAVE_WMEMCHR])
+ HAVE_WMEMCMP=1; AC_SUBST([HAVE_WMEMCMP])
+ HAVE_WMEMCPY=1; AC_SUBST([HAVE_WMEMCPY])
+ HAVE_WMEMMOVE=1; AC_SUBST([HAVE_WMEMMOVE])
+ HAVE_WMEMSET=1; AC_SUBST([HAVE_WMEMSET])
+ HAVE_WCSLEN=1; AC_SUBST([HAVE_WCSLEN])
+ HAVE_WCSNLEN=1; AC_SUBST([HAVE_WCSNLEN])
+ HAVE_WCSCPY=1; AC_SUBST([HAVE_WCSCPY])
+ HAVE_WCPCPY=1; AC_SUBST([HAVE_WCPCPY])
+ HAVE_WCSNCPY=1; AC_SUBST([HAVE_WCSNCPY])
+ HAVE_WCPNCPY=1; AC_SUBST([HAVE_WCPNCPY])
+ HAVE_WCSCAT=1; AC_SUBST([HAVE_WCSCAT])
+ HAVE_WCSNCAT=1; AC_SUBST([HAVE_WCSNCAT])
+ HAVE_WCSCMP=1; AC_SUBST([HAVE_WCSCMP])
+ HAVE_WCSNCMP=1; AC_SUBST([HAVE_WCSNCMP])
+ HAVE_WCSCASECMP=1; AC_SUBST([HAVE_WCSCASECMP])
+ HAVE_WCSNCASECMP=1; AC_SUBST([HAVE_WCSNCASECMP])
+ HAVE_WCSCOLL=1; AC_SUBST([HAVE_WCSCOLL])
+ HAVE_WCSXFRM=1; AC_SUBST([HAVE_WCSXFRM])
+ HAVE_WCSDUP=1; AC_SUBST([HAVE_WCSDUP])
+ HAVE_WCSCHR=1; AC_SUBST([HAVE_WCSCHR])
+ HAVE_WCSRCHR=1; AC_SUBST([HAVE_WCSRCHR])
+ HAVE_WCSCSPN=1; AC_SUBST([HAVE_WCSCSPN])
+ HAVE_WCSSPN=1; AC_SUBST([HAVE_WCSSPN])
+ HAVE_WCSPBRK=1; AC_SUBST([HAVE_WCSPBRK])
+ HAVE_WCSSTR=1; AC_SUBST([HAVE_WCSSTR])
+ HAVE_WCSTOK=1; AC_SUBST([HAVE_WCSTOK])
+ HAVE_WCSWIDTH=1; AC_SUBST([HAVE_WCSWIDTH])
HAVE_DECL_WCTOB=1; AC_SUBST([HAVE_DECL_WCTOB])
HAVE_DECL_WCWIDTH=1; AC_SUBST([HAVE_DECL_WCWIDTH])
REPLACE_MBSTATE_T=0; AC_SUBST([REPLACE_MBSTATE_T])
@@ -151,4 +221,5 @@ AC_DEFUN([gl_WCHAR_H_DEFAULTS],
REPLACE_WCSRTOMBS=0; AC_SUBST([REPLACE_WCSRTOMBS])
REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS])
REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH])
+ REPLACE_WCSWIDTH=0; AC_SUBST([REPLACE_WCSWIDTH])
])
diff --git a/src/libs/gnulib/m4/wchar_t.m4 b/src/libs/gnulib/m4/wchar_t.m4
index a133e6a..e1e1e69 100644
--- a/src/libs/gnulib/m4/wchar_t.m4
+++ b/src/libs/gnulib/m4/wchar_t.m4
@@ -1,5 +1,5 @@
# wchar_t.m4 serial 4 (gettext-0.18.2)
-dnl Copyright (C) 2002-2003, 2008-2010 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2003, 2008-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/src/libs/gnulib/m4/wctype_h.m4 b/src/libs/gnulib/m4/wctype_h.m4
index bc6b6e7..82ada0e 100644
--- a/src/libs/gnulib/m4/wctype_h.m4
+++ b/src/libs/gnulib/m4/wctype_h.m4
@@ -1,8 +1,8 @@
-# wctype_h.m4 serial 8
+# wctype_h.m4 serial 18
dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
-dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -11,6 +11,7 @@ dnl Written by Paul Eggert.
AC_DEFUN([gl_WCTYPE_H],
[
+ AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_CANONICAL_HOST])
AC_CHECK_FUNCS_ONCE([iswcntrl])
@@ -20,24 +21,6 @@ AC_DEFUN([gl_WCTYPE_H],
HAVE_ISWCNTRL=0
fi
AC_SUBST([HAVE_ISWCNTRL])
- AC_CHECK_FUNCS_ONCE([iswblank])
- AC_CHECK_DECLS_ONCE([iswblank])
- if test $ac_cv_func_iswblank = yes; then
- HAVE_ISWBLANK=1
- REPLACE_ISWBLANK=0
- else
- HAVE_ISWBLANK=0
- if test $ac_cv_have_decl_iswblank = yes; then
- REPLACE_ISWBLANK=1
- else
- REPLACE_ISWBLANK=0
- fi
- fi
- AC_SUBST([HAVE_ISWBLANK])
- AC_SUBST([REPLACE_ISWBLANK])
-
- AC_CHECK_HEADERS_ONCE([wctype.h])
- AC_REQUIRE([AC_C_INLINE])
AC_REQUIRE([gt_TYPE_WINT_T])
if test $gt_cv_c_wint_t = yes; then
@@ -47,39 +30,180 @@ AC_DEFUN([gl_WCTYPE_H],
fi
AC_SUBST([HAVE_WINT_T])
+ gl_CHECK_NEXT_HEADERS([wctype.h])
if test $ac_cv_header_wctype_h = yes; then
if test $ac_cv_func_iswcntrl = yes; then
dnl Linux libc5 has an iswprint function that returns 0 for all arguments.
dnl The other functions are likely broken in the same way.
AC_CACHE_CHECK([whether iswcntrl works], [gl_cv_func_iswcntrl_works],
[
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <stddef.h>
- #include <stdio.h>
- #include <time.h>
- #include <wchar.h>
- #include <wctype.h>
- int main () { return iswprint ('x') == 0; }]])],
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+ /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+ included before <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+ must be included before <wchar.h>. */
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+ #include <wctype.h>
+ int main () { return iswprint ('x') == 0; }
+ ]])],
[gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no],
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
#if __GNU_LIBRARY__ == 1
Linux libc5 i18n is broken.
#endif]], [])],
- [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no])
+ [gl_cv_func_iswcntrl_works="guessing yes"],
+ [gl_cv_func_iswcntrl_works="guessing no"])
])
])
fi
- gl_CHECK_NEXT_HEADERS([wctype.h])
HAVE_WCTYPE_H=1
else
HAVE_WCTYPE_H=0
fi
AC_SUBST([HAVE_WCTYPE_H])
- if test "$gl_cv_func_iswcntrl_works" = no; then
- REPLACE_ISWCNTRL=1
+ case "$gl_cv_func_iswcntrl_works" in
+ *yes) REPLACE_ISWCNTRL=0 ;;
+ *) REPLACE_ISWCNTRL=1 ;;
+ esac
+ AC_SUBST([REPLACE_ISWCNTRL])
+
+ if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
+ dnl Redefine all of iswcntrl, ..., iswxdigit in <wctype.h>.
+ :
+ fi
+
+ if test $REPLACE_ISWCNTRL = 1; then
+ REPLACE_TOWLOWER=1
else
- REPLACE_ISWCNTRL=0
+ AC_CHECK_FUNCS([towlower])
+ if test $ac_cv_func_towlower = yes; then
+ REPLACE_TOWLOWER=0
+ else
+ AC_CHECK_DECLS([towlower],,,
+ [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+ included before <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+ must be included before <wchar.h>. */
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+ #if HAVE_WCTYPE_H
+ # include <wctype.h>
+ #endif
+ ]])
+ if test $ac_cv_have_decl_towlower = yes; then
+ dnl On Minix 3.1.8, the system's <wctype.h> declares towlower() and
+ dnl towupper() although it does not have the functions. Avoid a
+ dnl collision with gnulib's replacement.
+ REPLACE_TOWLOWER=1
+ else
+ REPLACE_TOWLOWER=0
+ fi
+ fi
fi
- AC_SUBST([REPLACE_ISWCNTRL])
+ AC_SUBST([REPLACE_TOWLOWER])
+
+ if test $HAVE_ISWCNTRL = 0 || test $REPLACE_TOWLOWER = 1; then
+ dnl Redefine towlower, towupper in <wctype.h>.
+ :
+ fi
+
+ dnl We assume that the wctype() and iswctype() functions exist if and only
+ dnl if the type wctype_t is defined in <wchar.h> or in <wctype.h> if that
+ dnl exists.
+ dnl HP-UX 11.00 declares all these in <wchar.h> and lacks <wctype.h>.
+ AC_CACHE_CHECK([for wctype_t], [gl_cv_type_wctype_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+ included before <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+ must be included before <wchar.h>. */
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+ #if HAVE_WCTYPE_H
+ # include <wctype.h>
+ #endif
+ wctype_t a;
+ ]],
+ [[]])],
+ [gl_cv_type_wctype_t=yes],
+ [gl_cv_type_wctype_t=no])
+ ])
+ if test $gl_cv_type_wctype_t = no; then
+ HAVE_WCTYPE_T=0
+ fi
+
+ dnl We assume that the wctrans() and towctrans() functions exist if and only
+ dnl if the type wctrans_t is defined in <wctype.h>.
+ AC_CACHE_CHECK([for wctrans_t], [gl_cv_type_wctrans_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be
+ included before <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h>
+ must be included before <wchar.h>. */
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+ #include <wctype.h>
+ wctrans_t a;
+ ]],
+ [[]])],
+ [gl_cv_type_wctrans_t=yes],
+ [gl_cv_type_wctrans_t=no])
+ ])
+ if test $gl_cv_type_wctrans_t = no; then
+ HAVE_WCTRANS_T=0
+ fi
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use.
+ gl_WARN_ON_USE_PREPARE([[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+# include <wchar.h>
+#endif
+#include <wctype.h>
+ ]],
+ [wctype iswctype wctrans towctrans
+ ])
+])
+
+AC_DEFUN([gl_WCTYPE_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_WCTYPE_H_DEFAULTS],
+[
+ GNULIB_ISWBLANK=0; AC_SUBST([GNULIB_ISWBLANK])
+ GNULIB_WCTYPE=0; AC_SUBST([GNULIB_WCTYPE])
+ GNULIB_ISWCTYPE=0; AC_SUBST([GNULIB_ISWCTYPE])
+ GNULIB_WCTRANS=0; AC_SUBST([GNULIB_WCTRANS])
+ GNULIB_TOWCTRANS=0; AC_SUBST([GNULIB_TOWCTRANS])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_ISWBLANK=1; AC_SUBST([HAVE_ISWBLANK])
+ HAVE_WCTYPE_T=1; AC_SUBST([HAVE_WCTYPE_T])
+ HAVE_WCTRANS_T=1; AC_SUBST([HAVE_WCTRANS_T])
+ REPLACE_ISWBLANK=0; AC_SUBST([REPLACE_ISWBLANK])
])
diff --git a/src/libs/gnulib/m4/wcwidth.m4 b/src/libs/gnulib/m4/wcwidth.m4
index 7d6fea4..740f81e 100644
--- a/src/libs/gnulib/m4/wcwidth.m4
+++ b/src/libs/gnulib/m4/wcwidth.m4
@@ -1,5 +1,5 @@
-# wcwidth.m4 serial 18
-dnl Copyright (C) 2006-2010 Free Software Foundation, Inc.
+# wcwidth.m4 serial 23
+dnl Copyright (C) 2006-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -18,7 +18,7 @@ AC_DEFUN([gl_FUNC_WCWIDTH],
AC_CHECK_HEADERS_ONCE([wchar.h])
AC_CHECK_FUNCS_ONCE([wcwidth])
- AC_CHECK_DECLS([wcwidth], [], [], [
+ AC_CHECK_DECLS([wcwidth], [], [], [[
/* AIX 3.2.5 declares wcwidth in <string.h>. */
#include <string.h>
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
@@ -29,13 +29,15 @@ AC_DEFUN([gl_FUNC_WCWIDTH],
#include <stdio.h>
#include <time.h>
#include <wchar.h>
-])
+]])
if test $ac_cv_have_decl_wcwidth != yes; then
HAVE_DECL_WCWIDTH=0
fi
if test $ac_cv_func_wcwidth = yes; then
- dnl On MacOS X 10.3, wcwidth(0x0301) (COMBINING ACUTE ACCENT) returns 1.
+ HAVE_WCWIDTH=1
+ dnl On Mac OS X 10.3, wcwidth(0x0301) (COMBINING ACUTE ACCENT) returns 1.
+ dnl On OpenBSD 5.0, wcwidth(0x05B0) (HEBREW POINT SHEVA) returns 1.
dnl On OSF/1 5.1, wcwidth(0x200B) (ZERO WIDTH SPACE) returns 1.
dnl This leads to bugs in 'ls' (coreutils).
AC_CACHE_CHECK([whether wcwidth works reasonably in UTF-8 locales],
@@ -68,8 +70,10 @@ int main ()
{
if (wcwidth (0x0301) > 0)
result |= 1;
- if (wcwidth (0x200B) > 0)
+ if (wcwidth (0x05B0) > 0)
result |= 2;
+ if (wcwidth (0x200B) > 0)
+ result |= 4;
}
return result;
}]])],
@@ -89,13 +93,8 @@ changequote([,])dnl
*yes) ;;
*no) REPLACE_WCWIDTH=1 ;;
esac
- fi
- if test $ac_cv_func_wcwidth != yes || test $REPLACE_WCWIDTH = 1; then
- AC_LIBOBJ([wcwidth])
- fi
- if test $ac_cv_func_wcwidth != yes || test $REPLACE_WCWIDTH = 1 \
- || test $HAVE_DECL_WCWIDTH = 0; then
- gl_REPLACE_WCHAR_H
+ else
+ HAVE_WCWIDTH=0
fi
dnl We don't substitute HAVE_WCWIDTH. We assume that if the system does not
dnl have the wcwidth function, then it does not declare it.
diff --git a/src/libs/gnulib/m4/wint_t.m4 b/src/libs/gnulib/m4/wint_t.m4
index 58ef865..d7cd3db 100644
--- a/src/libs/gnulib/m4/wint_t.m4
+++ b/src/libs/gnulib/m4/wint_t.m4
@@ -1,5 +1,5 @@
# wint_t.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2007-2013 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/src/libs/libdriver/input.cpp b/src/libs/libdriver/input.cpp
index 3d83788..e92c76e 100644
--- a/src/libs/libdriver/input.cpp
+++ b/src/libs/libdriver/input.cpp
@@ -2,12 +2,11 @@
// <groff_src_dir>/src/libs/libdriver/input.cpp
-/* Copyright (C) 1989, 1990, 1991, 1992, 2001, 2002, 2003, 2004, 2005,
- 2006, 2008, 2009, 2010
+/* Copyright (C) 1989-1992, 2001-2006, 2008-2011
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
- Major rewrite 2001 by Bernd Warken (bwarken@mayn.de)
+ Major rewrite 2001 by Bernd Warken <groff-bernd.warken-72@web.de>
Last update: 9 May 2010
@@ -995,7 +994,7 @@ next_command(void)
inline bool
odd(const int n)
{
- return (n & 1 == 1) ? true : false;
+ return ((n & 1) == 1) ? true : false;
}
//////////////////////////////////////////////////////////////////////
diff --git a/src/libs/libgroff/config.charset b/src/libs/libgroff/config.charset
index 9369179..14a80c5 100755
--- a/src/libs/libgroff/config.charset
+++ b/src/libs/libgroff/config.charset
@@ -1,20 +1,20 @@
#! /bin/sh
# Output a system dependent table of character encoding aliases.
#
-# Copyright (C) 2000-2004, 2006-2008 Free Software Foundation, Inc.
+# Copyright (C) 2000-2004, 2006-2012 Free Software Foundation, Inc.
#
# This program 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 3 of the License, or
-# (at your option) any later version.
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
#
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, see <http://www.gnu.org/licenses/>.
#
# The table consists of lines of the form
# ALIAS CANONICAL
@@ -29,21 +29,23 @@
# The current list of GNU canonical charset names is as follows.
#
# name MIME? used by which systems
-# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin
-# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
-# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
-# ISO-8859-3 Y glibc solaris
+# (darwin = MacOS X, woe32 = native Windows)
+#
+# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin cygwin
+# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+# ISO-8859-3 Y glibc solaris cygwin
# ISO-8859-4 Y osf solaris freebsd netbsd openbsd darwin
-# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin
-# ISO-8859-6 Y glibc aix hpux solaris
-# ISO-8859-7 Y glibc aix hpux irix osf solaris netbsd openbsd darwin
-# ISO-8859-8 Y glibc aix hpux osf solaris
-# ISO-8859-9 Y glibc aix hpux irix osf solaris darwin
-# ISO-8859-13 glibc netbsd openbsd darwin
-# ISO-8859-14 glibc
-# ISO-8859-15 glibc aix osf solaris freebsd netbsd openbsd darwin
+# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
+# ISO-8859-6 Y glibc aix hpux solaris cygwin
+# ISO-8859-7 Y glibc aix hpux irix osf solaris netbsd openbsd darwin cygwin
+# ISO-8859-8 Y glibc aix hpux osf solaris cygwin
+# ISO-8859-9 Y glibc aix hpux irix osf solaris darwin cygwin
+# ISO-8859-13 glibc netbsd openbsd darwin cygwin
+# ISO-8859-14 glibc cygwin
+# ISO-8859-15 glibc aix osf solaris freebsd netbsd openbsd darwin cygwin
# KOI8-R Y glibc solaris freebsd netbsd openbsd darwin
-# KOI8-U Y glibc freebsd netbsd openbsd darwin
+# KOI8-U Y glibc freebsd netbsd openbsd darwin cygwin
# KOI8-T glibc
# CP437 dos
# CP775 dos
@@ -60,16 +62,17 @@
# CP869 dos
# CP874 woe32 dos
# CP922 aix
-# CP932 aix woe32 dos
+# CP932 aix cygwin woe32 dos
# CP943 aix
-# CP949 osf woe32 dos
+# CP949 osf darwin woe32 dos
# CP950 woe32 dos
# CP1046 aix
# CP1124 aix
# CP1125 dos
# CP1129 aix
+# CP1131 darwin
# CP1250 woe32
-# CP1251 glibc solaris netbsd openbsd darwin woe32
+# CP1251 glibc solaris netbsd openbsd darwin cygwin woe32
# CP1252 aix woe32
# CP1253 woe32
# CP1254 woe32
@@ -78,18 +81,20 @@
# CP1257 woe32
# GB2312 Y glibc aix hpux irix solaris freebsd netbsd darwin
# EUC-JP Y glibc aix hpux irix osf solaris freebsd netbsd darwin
-# EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin
+# EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin
# EUC-TW glibc aix hpux irix osf solaris netbsd
-# BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin
-# BIG5-HKSCS glibc solaris
-# GBK glibc aix osf solaris woe32 dos
-# GB18030 glibc solaris netbsd
+# BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin cygwin
+# BIG5-HKSCS glibc solaris darwin
+# GBK glibc aix osf solaris darwin cygwin woe32 dos
+# GB18030 glibc solaris netbsd darwin
# SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin
# JOHAB glibc solaris woe32
-# TIS-620 glibc aix hpux osf solaris
+# TIS-620 glibc aix hpux osf solaris cygwin
# VISCII Y glibc
# TCVN5712-1 glibc
-# GEORGIAN-PS glibc
+# ARMSCII-8 glibc darwin
+# GEORGIAN-PS glibc cygwin
+# PT154 glibc
# HP-ROMAN8 hpux
# HP-ARABIC8 hpux
# HP-GREEK8 hpux
@@ -98,7 +103,7 @@
# HP-KANA8 hpux
# DEC-KANJI osf
# DEC-HANYU osf
-# UTF-8 Y glibc aix hpux osf solaris netbsd darwin
+# UTF-8 Y glibc aix hpux osf solaris netbsd darwin cygwin
#
# Note: Names which are not marked as being a MIME name should not be used in
# Internet protocols for information interchange (mail, news, etc.).
@@ -119,530 +124,561 @@ echo "# It was automatically generated from config.charset."
# List of references, updated during installation:
echo "# Packages using this file: "
case "$os" in
- linux-gnulibc1*)
- # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- echo "C ASCII"
- echo "POSIX ASCII"
- for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
- en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
- en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
- es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
- et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
- fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
- it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
- sv_FI sv_SE; do
- echo "$l ISO-8859-1"
- echo "$l.iso-8859-1 ISO-8859-1"
- echo "$l.iso-8859-15 ISO-8859-15"
- echo "$l.iso-8859-15@euro ISO-8859-15"
- echo "$l@euro ISO-8859-15"
- echo "$l.cp-437 CP437"
- echo "$l.cp-850 CP850"
- echo "$l.cp-1252 CP1252"
- echo "$l.cp-1252@euro CP1252"
- #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
- echo "$l.utf-8 UTF-8"
- echo "$l.utf-8@euro UTF-8"
- done
- for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
- sl_SI sr sr_CS sr_YU; do
- echo "$l ISO-8859-2"
- echo "$l.iso-8859-2 ISO-8859-2"
- echo "$l.cp-852 CP852"
- echo "$l.cp-1250 CP1250"
- echo "$l.utf-8 UTF-8"
- done
- for l in mk mk_MK ru ru_RU; do
- echo "$l ISO-8859-5"
- echo "$l.iso-8859-5 ISO-8859-5"
- echo "$l.koi8-r KOI8-R"
- echo "$l.cp-866 CP866"
- echo "$l.cp-1251 CP1251"
- echo "$l.utf-8 UTF-8"
- done
- for l in ar ar_SA; do
- echo "$l ISO-8859-6"
- echo "$l.iso-8859-6 ISO-8859-6"
- echo "$l.cp-864 CP864"
- #echo "$l.cp-868 CP868" # not a commonly used encoding
- echo "$l.cp-1256 CP1256"
- echo "$l.utf-8 UTF-8"
- done
- for l in el el_GR gr gr_GR; do
- echo "$l ISO-8859-7"
- echo "$l.iso-8859-7 ISO-8859-7"
- echo "$l.cp-869 CP869"
- echo "$l.cp-1253 CP1253"
- echo "$l.cp-1253@euro CP1253"
- echo "$l.utf-8 UTF-8"
- echo "$l.utf-8@euro UTF-8"
- done
- for l in he he_IL iw iw_IL; do
- echo "$l ISO-8859-8"
- echo "$l.iso-8859-8 ISO-8859-8"
- echo "$l.cp-862 CP862"
- echo "$l.cp-1255 CP1255"
- echo "$l.utf-8 UTF-8"
- done
- for l in tr tr_TR; do
- echo "$l ISO-8859-9"
- echo "$l.iso-8859-9 ISO-8859-9"
- echo "$l.cp-857 CP857"
- echo "$l.cp-1254 CP1254"
- echo "$l.utf-8 UTF-8"
- done
- for l in lt lt_LT lv lv_LV; do
- #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
- echo "$l ISO-8859-13"
- done
- for l in ru_UA uk uk_UA; do
- echo "$l KOI8-U"
- done
- for l in zh zh_CN; do
- #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
- echo "$l GB2312"
- done
- for l in ja ja_JP ja_JP.EUC; do
- echo "$l EUC-JP"
- done
- for l in ko ko_KR; do
- echo "$l EUC-KR"
- done
- for l in th th_TH; do
- echo "$l TIS-620"
- done
- for l in fa fa_IR; do
- #echo "$l ISIRI-3342" # a broken encoding
- echo "$l.utf-8 UTF-8"
- done
- ;;
- linux* | *-gnu*)
- # With glibc-2.1 or newer, we don't need any canonicalization,
- # because glibc has iconv and both glibc and libiconv support all
- # GNU canonical names directly. Therefore, the Makefile does not
- # need to install the alias file at all.
- # The following applies only to glibc-2.0.x and older libcs.
- echo "ISO_646.IRV:1983 ASCII"
- ;;
- aix*)
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-6 ISO-8859-6"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-8 ISO-8859-8"
- echo "ISO8859-9 ISO-8859-9"
- echo "ISO8859-15 ISO-8859-15"
- echo "IBM-850 CP850"
- echo "IBM-856 CP856"
- echo "IBM-921 ISO-8859-13"
- echo "IBM-922 CP922"
- echo "IBM-932 CP932"
- echo "IBM-943 CP943"
- echo "IBM-1046 CP1046"
- echo "IBM-1124 CP1124"
- echo "IBM-1129 CP1129"
- echo "IBM-1252 CP1252"
- echo "IBM-eucCN GB2312"
- echo "IBM-eucJP EUC-JP"
- echo "IBM-eucKR EUC-KR"
- echo "IBM-eucTW EUC-TW"
- echo "big5 BIG5"
- echo "GBK GBK"
- echo "TIS-620 TIS-620"
- echo "UTF-8 UTF-8"
- ;;
- hpux*)
- echo "iso88591 ISO-8859-1"
- echo "iso88592 ISO-8859-2"
- echo "iso88595 ISO-8859-5"
- echo "iso88596 ISO-8859-6"
- echo "iso88597 ISO-8859-7"
- echo "iso88598 ISO-8859-8"
- echo "iso88599 ISO-8859-9"
- echo "iso885915 ISO-8859-15"
- echo "roman8 HP-ROMAN8"
- echo "arabic8 HP-ARABIC8"
- echo "greek8 HP-GREEK8"
- echo "hebrew8 HP-HEBREW8"
- echo "turkish8 HP-TURKISH8"
- echo "kana8 HP-KANA8"
- echo "tis620 TIS-620"
- echo "big5 BIG5"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- echo "hp15CN GB2312"
- #echo "ccdc ?" # what is this?
- echo "SJIS SHIFT_JIS"
- echo "utf8 UTF-8"
- ;;
- irix*)
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-9 ISO-8859-9"
- echo "eucCN GB2312"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- ;;
- osf*)
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-8 ISO-8859-8"
- echo "ISO8859-9 ISO-8859-9"
- echo "ISO8859-15 ISO-8859-15"
- echo "cp850 CP850"
- echo "big5 BIG5"
- echo "dechanyu DEC-HANYU"
- echo "dechanzi GB2312"
- echo "deckanji DEC-KANJI"
- echo "deckorean EUC-KR"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- echo "GBK GBK"
- echo "KSC5601 CP949"
- echo "sdeckanji EUC-JP"
- echo "SJIS SHIFT_JIS"
- echo "TACTIS TIS-620"
- echo "UTF-8 UTF-8"
- ;;
- solaris*)
- echo "646 ASCII"
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-3 ISO-8859-3"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-6 ISO-8859-6"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-8 ISO-8859-8"
- echo "ISO8859-9 ISO-8859-9"
- echo "ISO8859-15 ISO-8859-15"
- echo "koi8-r KOI8-R"
- echo "ansi-1251 CP1251"
- echo "BIG5 BIG5"
- echo "Big5-HKSCS BIG5-HKSCS"
- echo "gb2312 GB2312"
- echo "GBK GBK"
- echo "GB18030 GB18030"
- echo "cns11643 EUC-TW"
- echo "5601 EUC-KR"
- echo "ko_KR.johap92 JOHAB"
- echo "eucJP EUC-JP"
- echo "PCK SHIFT_JIS"
- echo "TIS620.2533 TIS-620"
- #echo "sun_eu_greek ?" # what is this?
- echo "UTF-8 UTF-8"
- ;;
- freebsd* | os2*)
- # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
- # reuse FreeBSD's locale data for OS/2.
- echo "C ASCII"
- echo "US-ASCII ASCII"
- for l in la_LN lt_LN; do
- echo "$l.ASCII ASCII"
- done
- for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
- fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
- lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
- echo "$l.ISO_8859-1 ISO-8859-1"
- echo "$l.DIS_8859-15 ISO-8859-15"
- done
- for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
- echo "$l.ISO_8859-2 ISO-8859-2"
- done
- for l in la_LN lt_LT; do
- echo "$l.ISO_8859-4 ISO-8859-4"
- done
- for l in ru_RU ru_SU; do
- echo "$l.KOI8-R KOI8-R"
- echo "$l.ISO_8859-5 ISO-8859-5"
- echo "$l.CP866 CP866"
- done
- echo "uk_UA.KOI8-U KOI8-U"
- echo "zh_TW.BIG5 BIG5"
- echo "zh_TW.Big5 BIG5"
- echo "zh_CN.EUC GB2312"
- echo "ja_JP.EUC EUC-JP"
- echo "ja_JP.SJIS SHIFT_JIS"
- echo "ja_JP.Shift_JIS SHIFT_JIS"
- echo "ko_KR.EUC EUC-KR"
- ;;
- netbsd*)
- echo "646 ASCII"
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-13 ISO-8859-13"
- echo "ISO8859-15 ISO-8859-15"
- echo "eucCN GB2312"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- echo "BIG5 BIG5"
- echo "SJIS SHIFT_JIS"
- ;;
- openbsd*)
- echo "646 ASCII"
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-13 ISO-8859-13"
- echo "ISO8859-15 ISO-8859-15"
- ;;
- darwin[56]*)
- # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- echo "C ASCII"
- for l in en_AU en_CA en_GB en_US la_LN; do
- echo "$l.US-ASCII ASCII"
- done
- for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
- fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
- nl_NL no_NO pt_PT sv_SE; do
- echo "$l ISO-8859-1"
- echo "$l.ISO8859-1 ISO-8859-1"
- echo "$l.ISO8859-15 ISO-8859-15"
- done
- for l in la_LN; do
- echo "$l.ISO8859-1 ISO-8859-1"
- echo "$l.ISO8859-15 ISO-8859-15"
- done
- for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
- echo "$l.ISO8859-2 ISO-8859-2"
- done
- for l in la_LN lt_LT; do
- echo "$l.ISO8859-4 ISO-8859-4"
- done
- for l in ru_RU; do
- echo "$l.KOI8-R KOI8-R"
- echo "$l.ISO8859-5 ISO-8859-5"
- echo "$l.CP866 CP866"
- done
- for l in bg_BG; do
- echo "$l.CP1251 CP1251"
- done
- echo "uk_UA.KOI8-U KOI8-U"
- echo "zh_TW.BIG5 BIG5"
- echo "zh_TW.Big5 BIG5"
- echo "zh_CN.EUC GB2312"
- echo "ja_JP.EUC EUC-JP"
- echo "ja_JP.SJIS SHIFT_JIS"
- echo "ko_KR.EUC EUC-KR"
- ;;
- darwin*)
- # Darwin 7.5 has nl_langinfo(CODESET), but it is useless:
- # - It returns the empty string when LANG is set to a locale of the
- # form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8
- # LC_CTYPE file.
- # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by
- # the system; nl_langinfo(CODESET) returns "US-ASCII" in this case.
- # - The documentation says:
- # "... all code that calls BSD system routines should ensure
- # that the const *char parameters of these routines are in UTF-8
- # encoding. All BSD system functions expect their string
- # parameters to be in UTF-8 encoding and nothing else."
- # It also says
- # "An additional caveat is that string parameters for files,
- # paths, and other file-system entities must be in canonical
- # UTF-8. In a canonical UTF-8 Unicode string, all decomposable
- # characters are decomposed ..."
- # but this is not true: You can pass non-decomposed UTF-8 strings
- # to file system functions, and it is the OS which will convert
- # them to decomposed UTF-8 before accessing the file system.
- # - The Apple Terminal application displays UTF-8 by default.
- # - However, other applications are free to use different encodings:
- # - xterm uses ISO-8859-1 by default.
- # - TextEdit uses MacRoman by default.
- # We prefer UTF-8 over decomposed UTF-8-MAC because one should
- # minimize the use of decomposed Unicode. Unfortunately, through the
- # Darwin file system, decomposed UTF-8 strings are leaked into user
- # space nevertheless.
- echo "* UTF-8"
- ;;
- beos* | haiku*)
- # BeOS and Haiku have a single locale, and it has UTF-8 encoding.
- echo "* UTF-8"
- ;;
- msdosdjgpp*)
- # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- echo "#"
- echo "# The encodings given here may not all be correct."
- echo "# If you find that the encoding given for your language and"
- echo "# country is not the one your DOS machine actually uses, just"
- echo "# correct it in this file, and send a mail to"
- echo "# Juan Manuel Guerrero <juan.guerrero@gmx.de>"
- echo "# and Bruno Haible <bruno@clisp.org>."
- echo "#"
- echo "C ASCII"
- # ISO-8859-1 languages
- echo "ca CP850"
- echo "ca_ES CP850"
- echo "da CP865" # not CP850 ??
- echo "da_DK CP865" # not CP850 ??
- echo "de CP850"
- echo "de_AT CP850"
- echo "de_CH CP850"
- echo "de_DE CP850"
- echo "en CP850"
- echo "en_AU CP850" # not CP437 ??
- echo "en_CA CP850"
- echo "en_GB CP850"
- echo "en_NZ CP437"
- echo "en_US CP437"
- echo "en_ZA CP850" # not CP437 ??
- echo "es CP850"
- echo "es_AR CP850"
- echo "es_BO CP850"
- echo "es_CL CP850"
- echo "es_CO CP850"
- echo "es_CR CP850"
- echo "es_CU CP850"
- echo "es_DO CP850"
- echo "es_EC CP850"
- echo "es_ES CP850"
- echo "es_GT CP850"
- echo "es_HN CP850"
- echo "es_MX CP850"
- echo "es_NI CP850"
- echo "es_PA CP850"
- echo "es_PY CP850"
- echo "es_PE CP850"
- echo "es_SV CP850"
- echo "es_UY CP850"
- echo "es_VE CP850"
- echo "et CP850"
- echo "et_EE CP850"
- echo "eu CP850"
- echo "eu_ES CP850"
- echo "fi CP850"
- echo "fi_FI CP850"
- echo "fr CP850"
- echo "fr_BE CP850"
- echo "fr_CA CP850"
- echo "fr_CH CP850"
- echo "fr_FR CP850"
- echo "ga CP850"
- echo "ga_IE CP850"
- echo "gd CP850"
- echo "gd_GB CP850"
- echo "gl CP850"
- echo "gl_ES CP850"
- echo "id CP850" # not CP437 ??
- echo "id_ID CP850" # not CP437 ??
- echo "is CP861" # not CP850 ??
- echo "is_IS CP861" # not CP850 ??
- echo "it CP850"
- echo "it_CH CP850"
- echo "it_IT CP850"
- echo "lt CP775"
- echo "lt_LT CP775"
- echo "lv CP775"
- echo "lv_LV CP775"
- echo "nb CP865" # not CP850 ??
- echo "nb_NO CP865" # not CP850 ??
- echo "nl CP850"
- echo "nl_BE CP850"
- echo "nl_NL CP850"
- echo "nn CP865" # not CP850 ??
- echo "nn_NO CP865" # not CP850 ??
- echo "no CP865" # not CP850 ??
- echo "no_NO CP865" # not CP850 ??
- echo "pt CP850"
- echo "pt_BR CP850"
- echo "pt_PT CP850"
- echo "sv CP850"
- echo "sv_SE CP850"
- # ISO-8859-2 languages
- echo "cs CP852"
- echo "cs_CZ CP852"
- echo "hr CP852"
- echo "hr_HR CP852"
- echo "hu CP852"
- echo "hu_HU CP852"
- echo "pl CP852"
- echo "pl_PL CP852"
- echo "ro CP852"
- echo "ro_RO CP852"
- echo "sk CP852"
- echo "sk_SK CP852"
- echo "sl CP852"
- echo "sl_SI CP852"
- echo "sq CP852"
- echo "sq_AL CP852"
- echo "sr CP852" # CP852 or CP866 or CP855 ??
- echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
- echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
- # ISO-8859-3 languages
- echo "mt CP850"
- echo "mt_MT CP850"
- # ISO-8859-5 languages
- echo "be CP866"
- echo "be_BE CP866"
- echo "bg CP866" # not CP855 ??
- echo "bg_BG CP866" # not CP855 ??
- echo "mk CP866" # not CP855 ??
- echo "mk_MK CP866" # not CP855 ??
- echo "ru CP866"
- echo "ru_RU CP866"
- echo "uk CP1125"
- echo "uk_UA CP1125"
- # ISO-8859-6 languages
- echo "ar CP864"
- echo "ar_AE CP864"
- echo "ar_DZ CP864"
- echo "ar_EG CP864"
- echo "ar_IQ CP864"
- echo "ar_IR CP864"
- echo "ar_JO CP864"
- echo "ar_KW CP864"
- echo "ar_MA CP864"
- echo "ar_OM CP864"
- echo "ar_QA CP864"
- echo "ar_SA CP864"
- echo "ar_SY CP864"
- # ISO-8859-7 languages
- echo "el CP869"
- echo "el_GR CP869"
- # ISO-8859-8 languages
- echo "he CP862"
- echo "he_IL CP862"
- # ISO-8859-9 languages
- echo "tr CP857"
- echo "tr_TR CP857"
- # Japanese
- echo "ja CP932"
- echo "ja_JP CP932"
- # Chinese
- echo "zh_CN GBK"
- echo "zh_TW CP950" # not CP938 ??
- # Korean
- echo "kr CP949" # not CP934 ??
- echo "kr_KR CP949" # not CP934 ??
- # Thai
- echo "th CP874"
- echo "th_TH CP874"
- # Other
- echo "eo CP850"
- echo "eo_EO CP850"
- ;;
+ linux-gnulibc1*)
+ # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ echo "C ASCII"
+ echo "POSIX ASCII"
+ for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
+ en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
+ en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
+ es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
+ et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
+ fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
+ it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
+ sv_FI sv_SE; do
+ echo "$l ISO-8859-1"
+ echo "$l.iso-8859-1 ISO-8859-1"
+ echo "$l.iso-8859-15 ISO-8859-15"
+ echo "$l.iso-8859-15@euro ISO-8859-15"
+ echo "$l@euro ISO-8859-15"
+ echo "$l.cp-437 CP437"
+ echo "$l.cp-850 CP850"
+ echo "$l.cp-1252 CP1252"
+ echo "$l.cp-1252@euro CP1252"
+ #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
+ echo "$l.utf-8 UTF-8"
+ echo "$l.utf-8@euro UTF-8"
+ done
+ for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
+ sl_SI sr sr_CS sr_YU; do
+ echo "$l ISO-8859-2"
+ echo "$l.iso-8859-2 ISO-8859-2"
+ echo "$l.cp-852 CP852"
+ echo "$l.cp-1250 CP1250"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in mk mk_MK ru ru_RU; do
+ echo "$l ISO-8859-5"
+ echo "$l.iso-8859-5 ISO-8859-5"
+ echo "$l.koi8-r KOI8-R"
+ echo "$l.cp-866 CP866"
+ echo "$l.cp-1251 CP1251"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in ar ar_SA; do
+ echo "$l ISO-8859-6"
+ echo "$l.iso-8859-6 ISO-8859-6"
+ echo "$l.cp-864 CP864"
+ #echo "$l.cp-868 CP868" # not a commonly used encoding
+ echo "$l.cp-1256 CP1256"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in el el_GR gr gr_GR; do
+ echo "$l ISO-8859-7"
+ echo "$l.iso-8859-7 ISO-8859-7"
+ echo "$l.cp-869 CP869"
+ echo "$l.cp-1253 CP1253"
+ echo "$l.cp-1253@euro CP1253"
+ echo "$l.utf-8 UTF-8"
+ echo "$l.utf-8@euro UTF-8"
+ done
+ for l in he he_IL iw iw_IL; do
+ echo "$l ISO-8859-8"
+ echo "$l.iso-8859-8 ISO-8859-8"
+ echo "$l.cp-862 CP862"
+ echo "$l.cp-1255 CP1255"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in tr tr_TR; do
+ echo "$l ISO-8859-9"
+ echo "$l.iso-8859-9 ISO-8859-9"
+ echo "$l.cp-857 CP857"
+ echo "$l.cp-1254 CP1254"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in lt lt_LT lv lv_LV; do
+ #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
+ echo "$l ISO-8859-13"
+ done
+ for l in ru_UA uk uk_UA; do
+ echo "$l KOI8-U"
+ done
+ for l in zh zh_CN; do
+ #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
+ echo "$l GB2312"
+ done
+ for l in ja ja_JP ja_JP.EUC; do
+ echo "$l EUC-JP"
+ done
+ for l in ko ko_KR; do
+ echo "$l EUC-KR"
+ done
+ for l in th th_TH; do
+ echo "$l TIS-620"
+ done
+ for l in fa fa_IR; do
+ #echo "$l ISIRI-3342" # a broken encoding
+ echo "$l.utf-8 UTF-8"
+ done
+ ;;
+ linux* | *-gnu*)
+ # With glibc-2.1 or newer, we don't need any canonicalization,
+ # because glibc has iconv and both glibc and libiconv support all
+ # GNU canonical names directly. Therefore, the Makefile does not
+ # need to install the alias file at all.
+ # The following applies only to glibc-2.0.x and older libcs.
+ echo "ISO_646.IRV:1983 ASCII"
+ ;;
+ aix*)
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-6 ISO-8859-6"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-8 ISO-8859-8"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "IBM-850 CP850"
+ echo "IBM-856 CP856"
+ echo "IBM-921 ISO-8859-13"
+ echo "IBM-922 CP922"
+ echo "IBM-932 CP932"
+ echo "IBM-943 CP943"
+ echo "IBM-1046 CP1046"
+ echo "IBM-1124 CP1124"
+ echo "IBM-1129 CP1129"
+ echo "IBM-1252 CP1252"
+ echo "IBM-eucCN GB2312"
+ echo "IBM-eucJP EUC-JP"
+ echo "IBM-eucKR EUC-KR"
+ echo "IBM-eucTW EUC-TW"
+ echo "big5 BIG5"
+ echo "GBK GBK"
+ echo "TIS-620 TIS-620"
+ echo "UTF-8 UTF-8"
+ ;;
+ hpux*)
+ echo "iso88591 ISO-8859-1"
+ echo "iso88592 ISO-8859-2"
+ echo "iso88595 ISO-8859-5"
+ echo "iso88596 ISO-8859-6"
+ echo "iso88597 ISO-8859-7"
+ echo "iso88598 ISO-8859-8"
+ echo "iso88599 ISO-8859-9"
+ echo "iso885915 ISO-8859-15"
+ echo "roman8 HP-ROMAN8"
+ echo "arabic8 HP-ARABIC8"
+ echo "greek8 HP-GREEK8"
+ echo "hebrew8 HP-HEBREW8"
+ echo "turkish8 HP-TURKISH8"
+ echo "kana8 HP-KANA8"
+ echo "tis620 TIS-620"
+ echo "big5 BIG5"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "eucTW EUC-TW"
+ echo "hp15CN GB2312"
+ #echo "ccdc ?" # what is this?
+ echo "SJIS SHIFT_JIS"
+ echo "utf8 UTF-8"
+ ;;
+ irix*)
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "eucCN GB2312"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "eucTW EUC-TW"
+ ;;
+ osf*)
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-8 ISO-8859-8"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "cp850 CP850"
+ echo "big5 BIG5"
+ echo "dechanyu DEC-HANYU"
+ echo "dechanzi GB2312"
+ echo "deckanji DEC-KANJI"
+ echo "deckorean EUC-KR"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "eucTW EUC-TW"
+ echo "GBK GBK"
+ echo "KSC5601 CP949"
+ echo "sdeckanji EUC-JP"
+ echo "SJIS SHIFT_JIS"
+ echo "TACTIS TIS-620"
+ echo "UTF-8 UTF-8"
+ ;;
+ solaris*)
+ echo "646 ASCII"
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-3 ISO-8859-3"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-6 ISO-8859-6"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-8 ISO-8859-8"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "koi8-r KOI8-R"
+ echo "ansi-1251 CP1251"
+ echo "BIG5 BIG5"
+ echo "Big5-HKSCS BIG5-HKSCS"
+ echo "gb2312 GB2312"
+ echo "GBK GBK"
+ echo "GB18030 GB18030"
+ echo "cns11643 EUC-TW"
+ echo "5601 EUC-KR"
+ echo "ko_KR.johap92 JOHAB"
+ echo "eucJP EUC-JP"
+ echo "PCK SHIFT_JIS"
+ echo "TIS620.2533 TIS-620"
+ #echo "sun_eu_greek ?" # what is this?
+ echo "UTF-8 UTF-8"
+ ;;
+ freebsd* | os2*)
+ # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
+ # reuse FreeBSD's locale data for OS/2.
+ echo "C ASCII"
+ echo "US-ASCII ASCII"
+ for l in la_LN lt_LN; do
+ echo "$l.ASCII ASCII"
+ done
+ for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+ fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
+ lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
+ echo "$l.ISO_8859-1 ISO-8859-1"
+ echo "$l.DIS_8859-15 ISO-8859-15"
+ done
+ for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
+ echo "$l.ISO_8859-2 ISO-8859-2"
+ done
+ for l in la_LN lt_LT; do
+ echo "$l.ISO_8859-4 ISO-8859-4"
+ done
+ for l in ru_RU ru_SU; do
+ echo "$l.KOI8-R KOI8-R"
+ echo "$l.ISO_8859-5 ISO-8859-5"
+ echo "$l.CP866 CP866"
+ done
+ echo "uk_UA.KOI8-U KOI8-U"
+ echo "zh_TW.BIG5 BIG5"
+ echo "zh_TW.Big5 BIG5"
+ echo "zh_CN.EUC GB2312"
+ echo "ja_JP.EUC EUC-JP"
+ echo "ja_JP.SJIS SHIFT_JIS"
+ echo "ja_JP.Shift_JIS SHIFT_JIS"
+ echo "ko_KR.EUC EUC-KR"
+ ;;
+ netbsd*)
+ echo "646 ASCII"
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-13 ISO-8859-13"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "eucCN GB2312"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "eucTW EUC-TW"
+ echo "BIG5 BIG5"
+ echo "SJIS SHIFT_JIS"
+ ;;
+ openbsd*)
+ echo "646 ASCII"
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-13 ISO-8859-13"
+ echo "ISO8859-15 ISO-8859-15"
+ ;;
+ darwin[56]*)
+ # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ echo "C ASCII"
+ for l in en_AU en_CA en_GB en_US la_LN; do
+ echo "$l.US-ASCII ASCII"
+ done
+ for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+ fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
+ nl_NL no_NO pt_PT sv_SE; do
+ echo "$l ISO-8859-1"
+ echo "$l.ISO8859-1 ISO-8859-1"
+ echo "$l.ISO8859-15 ISO-8859-15"
+ done
+ for l in la_LN; do
+ echo "$l.ISO8859-1 ISO-8859-1"
+ echo "$l.ISO8859-15 ISO-8859-15"
+ done
+ for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
+ echo "$l.ISO8859-2 ISO-8859-2"
+ done
+ for l in la_LN lt_LT; do
+ echo "$l.ISO8859-4 ISO-8859-4"
+ done
+ for l in ru_RU; do
+ echo "$l.KOI8-R KOI8-R"
+ echo "$l.ISO8859-5 ISO-8859-5"
+ echo "$l.CP866 CP866"
+ done
+ for l in bg_BG; do
+ echo "$l.CP1251 CP1251"
+ done
+ echo "uk_UA.KOI8-U KOI8-U"
+ echo "zh_TW.BIG5 BIG5"
+ echo "zh_TW.Big5 BIG5"
+ echo "zh_CN.EUC GB2312"
+ echo "ja_JP.EUC EUC-JP"
+ echo "ja_JP.SJIS SHIFT_JIS"
+ echo "ko_KR.EUC EUC-KR"
+ ;;
+ darwin*)
+ # Darwin 7.5 has nl_langinfo(CODESET), but sometimes its value is
+ # useless:
+ # - It returns the empty string when LANG is set to a locale of the
+ # form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8
+ # LC_CTYPE file.
+ # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by
+ # the system; nl_langinfo(CODESET) returns "US-ASCII" in this case.
+ # - The documentation says:
+ # "... all code that calls BSD system routines should ensure
+ # that the const *char parameters of these routines are in UTF-8
+ # encoding. All BSD system functions expect their string
+ # parameters to be in UTF-8 encoding and nothing else."
+ # It also says
+ # "An additional caveat is that string parameters for files,
+ # paths, and other file-system entities must be in canonical
+ # UTF-8. In a canonical UTF-8 Unicode string, all decomposable
+ # characters are decomposed ..."
+ # but this is not true: You can pass non-decomposed UTF-8 strings
+ # to file system functions, and it is the OS which will convert
+ # them to decomposed UTF-8 before accessing the file system.
+ # - The Apple Terminal application displays UTF-8 by default.
+ # - However, other applications are free to use different encodings:
+ # - xterm uses ISO-8859-1 by default.
+ # - TextEdit uses MacRoman by default.
+ # We prefer UTF-8 over decomposed UTF-8-MAC because one should
+ # minimize the use of decomposed Unicode. Unfortunately, through the
+ # Darwin file system, decomposed UTF-8 strings are leaked into user
+ # space nevertheless.
+ # Then there are also the locales with encodings other than US-ASCII
+ # and UTF-8. These locales can be occasionally useful to users (e.g.
+ # when grepping through ISO-8859-1 encoded text files), when all their
+ # file names are in US-ASCII.
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "ISO8859-13 ISO-8859-13"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "KOI8-R KOI8-R"
+ echo "KOI8-U KOI8-U"
+ echo "CP866 CP866"
+ echo "CP949 CP949"
+ echo "CP1131 CP1131"
+ echo "CP1251 CP1251"
+ echo "eucCN GB2312"
+ echo "GB2312 GB2312"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "Big5 BIG5"
+ echo "Big5HKSCS BIG5-HKSCS"
+ echo "GBK GBK"
+ echo "GB18030 GB18030"
+ echo "SJIS SHIFT_JIS"
+ echo "ARMSCII-8 ARMSCII-8"
+ echo "PT154 PT154"
+ #echo "ISCII-DEV ?"
+ echo "* UTF-8"
+ ;;
+ beos* | haiku*)
+ # BeOS and Haiku have a single locale, and it has UTF-8 encoding.
+ echo "* UTF-8"
+ ;;
+ msdosdjgpp*)
+ # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ echo "#"
+ echo "# The encodings given here may not all be correct."
+ echo "# If you find that the encoding given for your language and"
+ echo "# country is not the one your DOS machine actually uses, just"
+ echo "# correct it in this file, and send a mail to"
+ echo "# Juan Manuel Guerrero <juan.guerrero@gmx.de>"
+ echo "# and Bruno Haible <bruno@clisp.org>."
+ echo "#"
+ echo "C ASCII"
+ # ISO-8859-1 languages
+ echo "ca CP850"
+ echo "ca_ES CP850"
+ echo "da CP865" # not CP850 ??
+ echo "da_DK CP865" # not CP850 ??
+ echo "de CP850"
+ echo "de_AT CP850"
+ echo "de_CH CP850"
+ echo "de_DE CP850"
+ echo "en CP850"
+ echo "en_AU CP850" # not CP437 ??
+ echo "en_CA CP850"
+ echo "en_GB CP850"
+ echo "en_NZ CP437"
+ echo "en_US CP437"
+ echo "en_ZA CP850" # not CP437 ??
+ echo "es CP850"
+ echo "es_AR CP850"
+ echo "es_BO CP850"
+ echo "es_CL CP850"
+ echo "es_CO CP850"
+ echo "es_CR CP850"
+ echo "es_CU CP850"
+ echo "es_DO CP850"
+ echo "es_EC CP850"
+ echo "es_ES CP850"
+ echo "es_GT CP850"
+ echo "es_HN CP850"
+ echo "es_MX CP850"
+ echo "es_NI CP850"
+ echo "es_PA CP850"
+ echo "es_PY CP850"
+ echo "es_PE CP850"
+ echo "es_SV CP850"
+ echo "es_UY CP850"
+ echo "es_VE CP850"
+ echo "et CP850"
+ echo "et_EE CP850"
+ echo "eu CP850"
+ echo "eu_ES CP850"
+ echo "fi CP850"
+ echo "fi_FI CP850"
+ echo "fr CP850"
+ echo "fr_BE CP850"
+ echo "fr_CA CP850"
+ echo "fr_CH CP850"
+ echo "fr_FR CP850"
+ echo "ga CP850"
+ echo "ga_IE CP850"
+ echo "gd CP850"
+ echo "gd_GB CP850"
+ echo "gl CP850"
+ echo "gl_ES CP850"
+ echo "id CP850" # not CP437 ??
+ echo "id_ID CP850" # not CP437 ??
+ echo "is CP861" # not CP850 ??
+ echo "is_IS CP861" # not CP850 ??
+ echo "it CP850"
+ echo "it_CH CP850"
+ echo "it_IT CP850"
+ echo "lt CP775"
+ echo "lt_LT CP775"
+ echo "lv CP775"
+ echo "lv_LV CP775"
+ echo "nb CP865" # not CP850 ??
+ echo "nb_NO CP865" # not CP850 ??
+ echo "nl CP850"
+ echo "nl_BE CP850"
+ echo "nl_NL CP850"
+ echo "nn CP865" # not CP850 ??
+ echo "nn_NO CP865" # not CP850 ??
+ echo "no CP865" # not CP850 ??
+ echo "no_NO CP865" # not CP850 ??
+ echo "pt CP850"
+ echo "pt_BR CP850"
+ echo "pt_PT CP850"
+ echo "sv CP850"
+ echo "sv_SE CP850"
+ # ISO-8859-2 languages
+ echo "cs CP852"
+ echo "cs_CZ CP852"
+ echo "hr CP852"
+ echo "hr_HR CP852"
+ echo "hu CP852"
+ echo "hu_HU CP852"
+ echo "pl CP852"
+ echo "pl_PL CP852"
+ echo "ro CP852"
+ echo "ro_RO CP852"
+ echo "sk CP852"
+ echo "sk_SK CP852"
+ echo "sl CP852"
+ echo "sl_SI CP852"
+ echo "sq CP852"
+ echo "sq_AL CP852"
+ echo "sr CP852" # CP852 or CP866 or CP855 ??
+ echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
+ echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
+ # ISO-8859-3 languages
+ echo "mt CP850"
+ echo "mt_MT CP850"
+ # ISO-8859-5 languages
+ echo "be CP866"
+ echo "be_BE CP866"
+ echo "bg CP866" # not CP855 ??
+ echo "bg_BG CP866" # not CP855 ??
+ echo "mk CP866" # not CP855 ??
+ echo "mk_MK CP866" # not CP855 ??
+ echo "ru CP866"
+ echo "ru_RU CP866"
+ echo "uk CP1125"
+ echo "uk_UA CP1125"
+ # ISO-8859-6 languages
+ echo "ar CP864"
+ echo "ar_AE CP864"
+ echo "ar_DZ CP864"
+ echo "ar_EG CP864"
+ echo "ar_IQ CP864"
+ echo "ar_IR CP864"
+ echo "ar_JO CP864"
+ echo "ar_KW CP864"
+ echo "ar_MA CP864"
+ echo "ar_OM CP864"
+ echo "ar_QA CP864"
+ echo "ar_SA CP864"
+ echo "ar_SY CP864"
+ # ISO-8859-7 languages
+ echo "el CP869"
+ echo "el_GR CP869"
+ # ISO-8859-8 languages
+ echo "he CP862"
+ echo "he_IL CP862"
+ # ISO-8859-9 languages
+ echo "tr CP857"
+ echo "tr_TR CP857"
+ # Japanese
+ echo "ja CP932"
+ echo "ja_JP CP932"
+ # Chinese
+ echo "zh_CN GBK"
+ echo "zh_TW CP950" # not CP938 ??
+ # Korean
+ echo "kr CP949" # not CP934 ??
+ echo "kr_KR CP949" # not CP934 ??
+ # Thai
+ echo "th CP874"
+ echo "th_TH CP874"
+ # Other
+ echo "eo CP850"
+ echo "eo_EO CP850"
+ ;;
esac
diff --git a/src/libs/libgroff/glyphuni.cpp b/src/libs/libgroff/glyphuni.cpp
index 95480c6..845189b 100644
--- a/src/libs/libgroff/glyphuni.cpp
+++ b/src/libs/libgroff/glyphuni.cpp
@@ -1,5 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 2002, 2003, 2004, 2006, 2009
+/* Copyright (C) 2002, 2003, 2004, 2006, 2009, 2012
Free Software Foundation, Inc.
Written by Werner Lemberg <wl@gnu.org>
@@ -273,6 +273,7 @@ struct S {
{ "vZ", "017D" },
{ "vz", "017E" },
{ "Fn", "0192" },
+ { ".j", "0237" },
{ "ah", "02C7" },
{ "ab", "02D8" },
{ "a.", "02D9" },
diff --git a/src/libs/libgroff/localcharset.c b/src/libs/libgroff/localcharset.c
index 482e28e..d41f346 100644
--- a/src/libs/libgroff/localcharset.c
+++ b/src/libs/libgroff/localcharset.c
@@ -1,19 +1,19 @@
/* Determine a canonical name for the current locale's character encoding.
- Copyright (C) 2000-2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2000-2006, 2008-2012 Free Software Foundation, Inc.
This program 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 3 of the License, or
- (at your option) any later version.
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, see <http://www.gnu.org/licenses/>. */
/* Written by Bruno Haible <bruno@clisp.org>. */
@@ -22,13 +22,18 @@
/* Specification. */
#include "localcharset.h"
+#include <fcntl.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET
+# define DARWIN7 /* Darwin 7 or newer, i.e. MacOS X 10.3 or newer */
+#endif
+
#if defined _WIN32 || defined __WIN32__
-# define WIN32_NATIVE
+# define WINDOWS_NATIVE
#endif
#if defined __EMX__
@@ -38,7 +43,8 @@
# endif
#endif
-#if !defined WIN32_NATIVE
+#if !defined WINDOWS_NATIVE
+# include <unistd.h>
# if HAVE_LANGINFO_CODESET
# include <langinfo.h>
# else
@@ -50,7 +56,7 @@
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
# endif
-#elif defined WIN32_NATIVE
+#elif defined WINDOWS_NATIVE
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
#endif
@@ -70,8 +76,13 @@
# include "configmake.h"
#endif
+/* Define O_NOFOLLOW to 0 on platforms where it does not exist. */
+#ifndef O_NOFOLLOW
+# define O_NOFOLLOW 0
+#endif
+
#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
- /* Win32, Cygwin, OS/2, DOS */
+ /* Native Windows, Cygwin, OS/2, DOS */
# define ISSLASH(C) ((C) == '/' || (C) == '\\')
#endif
@@ -111,160 +122,219 @@ get_charset_aliases (void)
cp = charset_aliases;
if (cp == NULL)
{
-#if !(defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
- FILE *fp;
+#if !(defined DARWIN7 || defined VMS || defined WINDOWS_NATIVE || defined __CYGWIN__)
const char *dir;
const char *base = "charset.alias";
char *file_name;
/* Make it possible to override the charset.alias location. This is
- necessary for running the testsuite before "make install". */
+ necessary for running the testsuite before "make install". */
dir = getenv ("CHARSETALIASDIR");
if (dir == NULL || dir[0] == '\0')
- dir = relocate (LIBDIR);
+ dir = relocate (LIBDIR);
/* Concatenate dir and base into freshly allocated file_name. */
{
- size_t dir_len = strlen (dir);
- size_t base_len = strlen (base);
- int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
- file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
- if (file_name != NULL)
- {
- memcpy (file_name, dir, dir_len);
- if (add_slash)
- file_name[dir_len] = DIRECTORY_SEPARATOR;
- memcpy (file_name + dir_len + add_slash, base, base_len + 1);
- }
+ size_t dir_len = strlen (dir);
+ size_t base_len = strlen (base);
+ int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
+ file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
+ if (file_name != NULL)
+ {
+ memcpy (file_name, dir, dir_len);
+ if (add_slash)
+ file_name[dir_len] = DIRECTORY_SEPARATOR;
+ memcpy (file_name + dir_len + add_slash, base, base_len + 1);
+ }
}
- if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL)
- /* Out of memory or file not found, treat it as empty. */
- cp = "";
+ if (file_name == NULL)
+ /* Out of memory. Treat the file as empty. */
+ cp = "";
else
- {
- /* Parse the file's contents. */
- char *res_ptr = NULL;
- size_t res_size = 0;
-
- for (;;)
- {
- int c;
- char buf1[50+1];
- char buf2[50+1];
- size_t l1, l2;
- char *old_res_ptr;
-
- c = getc (fp);
- if (c == EOF)
- break;
- if (c == '\n' || c == ' ' || c == '\t')
- continue;
- if (c == '#')
- {
- /* Skip comment, to end of line. */
- do
- c = getc (fp);
- while (!(c == EOF || c == '\n'));
- if (c == EOF)
- break;
- continue;
- }
- ungetc (c, fp);
- if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
- break;
- l1 = strlen (buf1);
- l2 = strlen (buf2);
- old_res_ptr = res_ptr;
- if (res_size == 0)
- {
- res_size = l1 + 1 + l2 + 1;
- res_ptr = (char *) malloc (res_size + 1);
- }
- else
- {
- res_size += l1 + 1 + l2 + 1;
- res_ptr = (char *) realloc (res_ptr, res_size + 1);
- }
- if (res_ptr == NULL)
- {
- /* Out of memory. */
- res_size = 0;
- if (old_res_ptr != NULL)
- free (old_res_ptr);
- break;
- }
- strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
- strcpy (res_ptr + res_size - (l2 + 1), buf2);
- }
- fclose (fp);
- if (res_size == 0)
- cp = "";
- else
- {
- *(res_ptr + res_size) = '\0';
- cp = res_ptr;
- }
- }
-
- if (file_name != NULL)
- free (file_name);
+ {
+ int fd;
+
+ /* Open the file. Reject symbolic links on platforms that support
+ O_NOFOLLOW. This is a security feature. Without it, an attacker
+ could retrieve parts of the contents (namely, the tail of the
+ first line that starts with "* ") of an arbitrary file by placing
+ a symbolic link to that file under the name "charset.alias" in
+ some writable directory and defining the environment variable
+ CHARSETALIASDIR to point to that directory. */
+ fd = open (file_name,
+ O_RDONLY | (HAVE_WORKING_O_NOFOLLOW ? O_NOFOLLOW : 0));
+ if (fd < 0)
+ /* File not found. Treat it as empty. */
+ cp = "";
+ else
+ {
+ FILE *fp;
+
+ fp = fdopen (fd, "r");
+ if (fp == NULL)
+ {
+ /* Out of memory. Treat the file as empty. */
+ close (fd);
+ cp = "";
+ }
+ else
+ {
+ /* Parse the file's contents. */
+ char *res_ptr = NULL;
+ size_t res_size = 0;
+
+ for (;;)
+ {
+ int c;
+ char buf1[50+1];
+ char buf2[50+1];
+ size_t l1, l2;
+ char *old_res_ptr;
+
+ c = getc (fp);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#')
+ {
+ /* Skip comment, to end of line. */
+ do
+ c = getc (fp);
+ while (!(c == EOF || c == '\n'));
+ if (c == EOF)
+ break;
+ continue;
+ }
+ ungetc (c, fp);
+ if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
+ break;
+ l1 = strlen (buf1);
+ l2 = strlen (buf2);
+ old_res_ptr = res_ptr;
+ if (res_size == 0)
+ {
+ res_size = l1 + 1 + l2 + 1;
+ res_ptr = (char *) malloc (res_size + 1);
+ }
+ else
+ {
+ res_size += l1 + 1 + l2 + 1;
+ res_ptr = (char *) realloc (res_ptr, res_size + 1);
+ }
+ if (res_ptr == NULL)
+ {
+ /* Out of memory. */
+ res_size = 0;
+ free (old_res_ptr);
+ break;
+ }
+ strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
+ strcpy (res_ptr + res_size - (l2 + 1), buf2);
+ }
+ fclose (fp);
+ if (res_size == 0)
+ cp = "";
+ else
+ {
+ *(res_ptr + res_size) = '\0';
+ cp = res_ptr;
+ }
+ }
+ }
+
+ free (file_name);
+ }
#else
+# if defined DARWIN7
+ /* To avoid the trouble of installing a file that is shared by many
+ GNU packages -- many packaging systems have problems with this --,
+ simply inline the aliases here. */
+ cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
+ "ISO8859-2" "\0" "ISO-8859-2" "\0"
+ "ISO8859-4" "\0" "ISO-8859-4" "\0"
+ "ISO8859-5" "\0" "ISO-8859-5" "\0"
+ "ISO8859-7" "\0" "ISO-8859-7" "\0"
+ "ISO8859-9" "\0" "ISO-8859-9" "\0"
+ "ISO8859-13" "\0" "ISO-8859-13" "\0"
+ "ISO8859-15" "\0" "ISO-8859-15" "\0"
+ "KOI8-R" "\0" "KOI8-R" "\0"
+ "KOI8-U" "\0" "KOI8-U" "\0"
+ "CP866" "\0" "CP866" "\0"
+ "CP949" "\0" "CP949" "\0"
+ "CP1131" "\0" "CP1131" "\0"
+ "CP1251" "\0" "CP1251" "\0"
+ "eucCN" "\0" "GB2312" "\0"
+ "GB2312" "\0" "GB2312" "\0"
+ "eucJP" "\0" "EUC-JP" "\0"
+ "eucKR" "\0" "EUC-KR" "\0"
+ "Big5" "\0" "BIG5" "\0"
+ "Big5HKSCS" "\0" "BIG5-HKSCS" "\0"
+ "GBK" "\0" "GBK" "\0"
+ "GB18030" "\0" "GB18030" "\0"
+ "SJIS" "\0" "SHIFT_JIS" "\0"
+ "ARMSCII-8" "\0" "ARMSCII-8" "\0"
+ "PT154" "\0" "PT154" "\0"
+ /*"ISCII-DEV" "\0" "?" "\0"*/
+ "*" "\0" "UTF-8" "\0";
+# endif
+
# if defined VMS
/* To avoid the troubles of an extra file charset.alias_vms in the
- sources of many GNU packages, simply inline the aliases here. */
+ sources of many GNU packages, simply inline the aliases here. */
/* The list of encodings is taken from the OpenVMS 7.3-1 documentation
- "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
- section 10.7 "Handling Different Character Sets". */
+ "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
+ section 10.7 "Handling Different Character Sets". */
cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
- "ISO8859-2" "\0" "ISO-8859-2" "\0"
- "ISO8859-5" "\0" "ISO-8859-5" "\0"
- "ISO8859-7" "\0" "ISO-8859-7" "\0"
- "ISO8859-8" "\0" "ISO-8859-8" "\0"
- "ISO8859-9" "\0" "ISO-8859-9" "\0"
- /* Japanese */
- "eucJP" "\0" "EUC-JP" "\0"
- "SJIS" "\0" "SHIFT_JIS" "\0"
- "DECKANJI" "\0" "DEC-KANJI" "\0"
- "SDECKANJI" "\0" "EUC-JP" "\0"
- /* Chinese */
- "eucTW" "\0" "EUC-TW" "\0"
- "DECHANYU" "\0" "DEC-HANYU" "\0"
- "DECHANZI" "\0" "GB2312" "\0"
- /* Korean */
- "DECKOREAN" "\0" "EUC-KR" "\0";
+ "ISO8859-2" "\0" "ISO-8859-2" "\0"
+ "ISO8859-5" "\0" "ISO-8859-5" "\0"
+ "ISO8859-7" "\0" "ISO-8859-7" "\0"
+ "ISO8859-8" "\0" "ISO-8859-8" "\0"
+ "ISO8859-9" "\0" "ISO-8859-9" "\0"
+ /* Japanese */
+ "eucJP" "\0" "EUC-JP" "\0"
+ "SJIS" "\0" "SHIFT_JIS" "\0"
+ "DECKANJI" "\0" "DEC-KANJI" "\0"
+ "SDECKANJI" "\0" "EUC-JP" "\0"
+ /* Chinese */
+ "eucTW" "\0" "EUC-TW" "\0"
+ "DECHANYU" "\0" "DEC-HANYU" "\0"
+ "DECHANZI" "\0" "GB2312" "\0"
+ /* Korean */
+ "DECKOREAN" "\0" "EUC-KR" "\0";
# endif
-# if defined WIN32_NATIVE || defined __CYGWIN__
+# if defined WINDOWS_NATIVE || defined __CYGWIN__
/* To avoid the troubles of installing a separate file in the same
- directory as the DLL and of retrieving the DLL's directory at
- runtime, simply inline the aliases here. */
+ directory as the DLL and of retrieving the DLL's directory at
+ runtime, simply inline the aliases here. */
cp = "CP936" "\0" "GBK" "\0"
- "CP1361" "\0" "JOHAB" "\0"
- "CP20127" "\0" "ASCII" "\0"
- "CP20866" "\0" "KOI8-R" "\0"
- "CP20936" "\0" "GB2312" "\0"
- "CP21866" "\0" "KOI8-RU" "\0"
- "CP28591" "\0" "ISO-8859-1" "\0"
- "CP28592" "\0" "ISO-8859-2" "\0"
- "CP28593" "\0" "ISO-8859-3" "\0"
- "CP28594" "\0" "ISO-8859-4" "\0"
- "CP28595" "\0" "ISO-8859-5" "\0"
- "CP28596" "\0" "ISO-8859-6" "\0"
- "CP28597" "\0" "ISO-8859-7" "\0"
- "CP28598" "\0" "ISO-8859-8" "\0"
- "CP28599" "\0" "ISO-8859-9" "\0"
- "CP28605" "\0" "ISO-8859-15" "\0"
- "CP38598" "\0" "ISO-8859-8" "\0"
- "CP51932" "\0" "EUC-JP" "\0"
- "CP51936" "\0" "GB2312" "\0"
- "CP51949" "\0" "EUC-KR" "\0"
- "CP51950" "\0" "EUC-TW" "\0"
- "CP54936" "\0" "GB18030" "\0"
- "CP65001" "\0" "UTF-8" "\0";
+ "CP1361" "\0" "JOHAB" "\0"
+ "CP20127" "\0" "ASCII" "\0"
+ "CP20866" "\0" "KOI8-R" "\0"
+ "CP20936" "\0" "GB2312" "\0"
+ "CP21866" "\0" "KOI8-RU" "\0"
+ "CP28591" "\0" "ISO-8859-1" "\0"
+ "CP28592" "\0" "ISO-8859-2" "\0"
+ "CP28593" "\0" "ISO-8859-3" "\0"
+ "CP28594" "\0" "ISO-8859-4" "\0"
+ "CP28595" "\0" "ISO-8859-5" "\0"
+ "CP28596" "\0" "ISO-8859-6" "\0"
+ "CP28597" "\0" "ISO-8859-7" "\0"
+ "CP28598" "\0" "ISO-8859-8" "\0"
+ "CP28599" "\0" "ISO-8859-9" "\0"
+ "CP28605" "\0" "ISO-8859-15" "\0"
+ "CP38598" "\0" "ISO-8859-8" "\0"
+ "CP51932" "\0" "EUC-JP" "\0"
+ "CP51936" "\0" "GB2312" "\0"
+ "CP51949" "\0" "EUC-KR" "\0"
+ "CP51950" "\0" "EUC-TW" "\0"
+ "CP54936" "\0" "GB18030" "\0"
+ "CP65001" "\0" "UTF-8" "\0";
# endif
#endif
@@ -289,7 +359,7 @@ locale_charset (void)
const char *codeset;
const char *aliases;
-#if !(defined WIN32_NATIVE || defined OS2)
+#if !(defined WINDOWS_NATIVE || defined OS2)
# if HAVE_LANGINFO_CODESET
@@ -297,10 +367,9 @@ locale_charset (void)
codeset = nl_langinfo (CODESET);
# ifdef __CYGWIN__
- /* Cygwin 2006 does not have locales. nl_langinfo (CODESET) always
- returns "US-ASCII". As long as this is not fixed, return the suffix
- of the locale name from the environment variables (if present) or
- the codepage as a number. */
+ /* Cygwin < 1.7 does not have locales. nl_langinfo (CODESET) always
+ returns "US-ASCII". Return the suffix of the locale name from the
+ environment variables (if present) or the codepage as a number. */
if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
{
const char *locale;
@@ -308,36 +377,46 @@ locale_charset (void)
locale = getenv ("LC_ALL");
if (locale == NULL || locale[0] == '\0')
- {
- locale = getenv ("LC_CTYPE");
- if (locale == NULL || locale[0] == '\0')
- locale = getenv ("LANG");
- }
+ {
+ locale = getenv ("LC_CTYPE");
+ if (locale == NULL || locale[0] == '\0')
+ locale = getenv ("LANG");
+ }
if (locale != NULL && locale[0] != '\0')
- {
- /* If the locale name contains an encoding after the dot, return
- it. */
- const char *dot = strchr (locale, '.');
-
- if (dot != NULL)
- {
- const char *modifier;
-
- dot++;
- /* Look for the possible @... trailer and remove it, if any. */
- modifier = strchr (dot, '@');
- if (modifier == NULL)
- return dot;
- if (modifier - dot < sizeof (buf))
- {
- memcpy (buf, dot, modifier - dot);
- buf [modifier - dot] = '\0';
- return buf;
- }
- }
- }
-
- /* Woe32 has a function returning the locale's codepage as a number. */
+ {
+ /* If the locale name contains an encoding after the dot, return
+ it. */
+ const char *dot = strchr (locale, '.');
+
+ if (dot != NULL)
+ {
+ const char *modifier;
+
+ dot++;
+ /* Look for the possible @... trailer and remove it, if any. */
+ modifier = strchr (dot, '@');
+ if (modifier == NULL)
+ return dot;
+ if (modifier - dot < sizeof (buf))
+ {
+ memcpy (buf, dot, modifier - dot);
+ buf [modifier - dot] = '\0';
+ return buf;
+ }
+ }
+ }
+
+ /* The Windows API has a function returning the locale's codepage as a
+ number: GetACP(). This encoding is used by Cygwin, unless the user
+ has set the environment variable CYGWIN=codepage:oem (which very few
+ people do).
+ Output directed to console windows needs to be converted (to
+ GetOEMCP() if the console is using a raster font, or to
+ GetConsoleOutputCP() if it is using a TrueType font). Cygwin does
+ this conversion transparently (see winsup/cygwin/fhandler_console.cc),
+ converting to GetConsoleOutputCP(). This leads to correct results,
+ except when SetConsoleOutputCP has been called and a raster font is
+ in use. */
sprintf (buf, "CP%u", GetACP ());
codeset = buf;
}
@@ -359,11 +438,11 @@ locale_charset (void)
{
locale = getenv ("LC_ALL");
if (locale == NULL || locale[0] == '\0')
- {
- locale = getenv ("LC_CTYPE");
- if (locale == NULL || locale[0] == '\0')
- locale = getenv ("LANG");
- }
+ {
+ locale = getenv ("LC_CTYPE");
+ if (locale == NULL || locale[0] == '\0')
+ locale = getenv ("LANG");
+ }
}
/* On some old systems, one used to set locale = "iso8859_1". On others,
@@ -373,11 +452,17 @@ locale_charset (void)
# endif
-#elif defined WIN32_NATIVE
+#elif defined WINDOWS_NATIVE
static char buf[2 + 10 + 1];
- /* Woe32 has a function returning the locale's codepage as a number. */
+ /* The Windows API has a function returning the locale's codepage as a
+ number: GetACP().
+ When the output goes to a console window, it needs to be provided in
+ GetOEMCP() encoding if the console is using a raster font, or in
+ GetConsoleOutputCP() encoding if it is using a TrueType font.
+ But in GUI programs and for output sent to files and pipes, GetACP()
+ encoding is the best bet. */
sprintf (buf, "CP%u", GetACP ());
codeset = buf;
@@ -395,7 +480,7 @@ locale_charset (void)
{
locale = getenv ("LC_CTYPE");
if (locale == NULL || locale[0] == '\0')
- locale = getenv ("LANG");
+ locale = getenv ("LANG");
}
if (locale != NULL && locale[0] != '\0')
{
@@ -403,21 +488,21 @@ locale_charset (void)
const char *dot = strchr (locale, '.');
if (dot != NULL)
- {
- const char *modifier;
-
- dot++;
- /* Look for the possible @... trailer and remove it, if any. */
- modifier = strchr (dot, '@');
- if (modifier == NULL)
- return dot;
- if (modifier - dot < sizeof (buf))
- {
- memcpy (buf, dot, modifier - dot);
- buf [modifier - dot] = '\0';
- return buf;
- }
- }
+ {
+ const char *modifier;
+
+ dot++;
+ /* Look for the possible @... trailer and remove it, if any. */
+ modifier = strchr (dot, '@');
+ if (modifier == NULL)
+ return dot;
+ if (modifier - dot < sizeof (buf))
+ {
+ memcpy (buf, dot, modifier - dot);
+ buf [modifier - dot] = '\0';
+ return buf;
+ }
+ }
/* Resolve through the charset.alias file. */
codeset = locale;
@@ -426,12 +511,12 @@ locale_charset (void)
{
/* OS/2 has a function returning the locale's codepage as a number. */
if (DosQueryCp (sizeof (cp), cp, &cplen))
- codeset = "";
+ codeset = "";
else
- {
- sprintf (buf, "CP%u", cp[0]);
- codeset = buf;
- }
+ {
+ sprintf (buf, "CP%u", cp[0]);
+ codeset = buf;
+ }
}
#endif
@@ -445,10 +530,10 @@ locale_charset (void)
*aliases != '\0';
aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
if (strcmp (codeset, aliases) == 0
- || (aliases[0] == '*' && aliases[1] == '\0'))
+ || (aliases[0] == '*' && aliases[1] == '\0'))
{
- codeset = aliases + strlen (aliases) + 1;
- break;
+ codeset = aliases + strlen (aliases) + 1;
+ break;
}
/* Don't return an empty string. GNU libc and GNU libiconv interpret
diff --git a/src/libs/libgroff/ref-add.sin b/src/libs/libgroff/ref-add.sin
index bfa8e28..76404ee 100644
--- a/src/libs/libgroff/ref-add.sin
+++ b/src/libs/libgroff/ref-add.sin
@@ -1,19 +1,19 @@
# Add this package to a list of references stored in a text file.
#
-# Copyright (C) 2000 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
#
# This program 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 3 of the License, or
-# (at your option) any later version.
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
#
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, see <http://www.gnu.org/licenses/>.
#
# Written by Bruno Haible <haible@clisp.cons.org>.
#
diff --git a/src/libs/libgroff/ref-del.sin b/src/libs/libgroff/ref-del.sin
index 3dc0569..0ec83ed 100644
--- a/src/libs/libgroff/ref-del.sin
+++ b/src/libs/libgroff/ref-del.sin
@@ -1,19 +1,19 @@
# Remove this package from a list of references stored in a text file.
#
-# Copyright (C) 2000 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
#
# This program 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 3 of the License, or
-# (at your option) any later version.
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
#
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, see <http://www.gnu.org/licenses/>.
#
# Written by Bruno Haible <haible@clisp.cons.org>.
#
diff --git a/src/libs/libgroff/uniglyph.cpp b/src/libs/libgroff/uniglyph.cpp
index 9b6bba6..c07870b 100644
--- a/src/libs/libgroff/uniglyph.cpp
+++ b/src/libs/libgroff/uniglyph.cpp
@@ -1,5 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 2002, 2003, 2004, 2006, 2009
+/* Copyright (C) 2002-2004, 2006, 2009, 2012
Free Software Foundation, Inc.
Written by Werner Lemberg <wl@gnu.org>
@@ -271,6 +271,7 @@ struct S {
{ "0152", "OE" },
{ "0153", "oe" },
{ "0192", "Fn" },
+ { "0237", ".j" },
{ "02C7", "ah" },
{ "02D8", "ab" },
{ "02D9", "a." },
@@ -322,12 +323,12 @@ struct S {
{ "03C3", "*s" },
{ "03C4", "*t" },
{ "03C5", "*u" },
- { "03C6", "*f" },
+ { "03C6", "+f" },
{ "03C7", "*x" },
{ "03C8", "*q" },
{ "03C9", "*w" },
{ "03D1", "+h" },
- { "03D5", "+f" },
+ { "03D5", "*f" },
{ "03D6", "+p" },
{ "03F5", "+e" },
//{ "2010", "-" },
diff --git a/src/preproc/eqn/eqn.cpp b/src/preproc/eqn/eqn.cpp
index 2f1a58e..979f827 100644
--- a/src/preproc/eqn/eqn.cpp
+++ b/src/preproc/eqn/eqn.cpp
@@ -1,10 +1,8 @@
+/* A Bison parser, made by GNU Bison 2.5. */
-/* A Bison parser, made by GNU Bison 2.4.1. */
-
-/* Skeleton implementation for Bison's Yacc-like parsers in C
+/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -46,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "2.5"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -67,7 +65,7 @@
/* Copy the first part of user declarations. */
-/* Line 189 of yacc.c */
+/* Line 268 of yacc.c */
#line 19 "eqn.y"
#include <stdio.h>
@@ -81,8 +79,8 @@ int yylex();
void yyerror(const char *);
-/* Line 189 of yacc.c */
-#line 86 "eqn.cpp"
+/* Line 268 of yacc.c */
+#line 84 "eqn.cpp"
/* Enabling traces. */
#ifndef YYDEBUG
@@ -236,7 +234,7 @@ void yyerror(const char *);
typedef union YYSTYPE
{
-/* Line 214 of yacc.c */
+/* Line 293 of yacc.c */
#line 31 "eqn.y"
char *str;
@@ -248,8 +246,8 @@ typedef union YYSTYPE
-/* Line 214 of yacc.c */
-#line 253 "eqn.cpp"
+/* Line 293 of yacc.c */
+#line 251 "eqn.cpp"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -260,8 +258,8 @@ typedef union YYSTYPE
/* Copy the second part of user declarations. */
-/* Line 264 of yacc.c */
-#line 265 "eqn.cpp"
+/* Line 343 of yacc.c */
+#line 263 "eqn.cpp"
#ifdef short
# undef short
@@ -311,7 +309,7 @@ typedef short int yytype_int16;
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -364,11 +362,11 @@ YYID (yyi)
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
# endif
# endif
# endif
@@ -391,24 +389,24 @@ YYID (yyi)
# ifndef YYSTACK_ALLOC_MAXIMUM
# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
# endif
-# if (defined __cplusplus && ! defined _STDLIB_H \
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
&& ! ((defined YYMALLOC || defined malloc) \
&& (defined YYFREE || defined free)))
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
# endif
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
-# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
-# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
@@ -437,23 +435,7 @@ union yyalloc
((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (YYID (0))
-# endif
-# endif
+# define YYCOPY_NEEDED 1
/* Relocate STACK from its old location to the new one. The
local variables YYSIZE and YYSTACKSIZE give the old and new number of
@@ -473,6 +455,26 @@ union yyalloc
#endif
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 72
/* YYLAST -- Last index in YYTABLE. */
@@ -651,8 +653,8 @@ static const yytype_uint8 yyr2[] =
2, 1, 1, 1, 1, 1
};
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
@@ -711,8 +713,7 @@ static const yytype_int8 yypgoto[] =
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
- number is the opposite. If zero, do what YYDEFACT says.
- If YYTABLE_NINF, syntax error. */
+ number is the opposite. If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -1
static const yytype_uint8 yytable[] =
{
@@ -756,6 +757,12 @@ static const yytype_uint8 yytable[] =
28, 29, 30, 0, 0, 0, 83, 0, 0, 84
};
+#define yypact_value_is_default(yystate) \
+ ((yystate) == (-76))
+
+#define yytable_value_is_error(yytable_value) \
+ YYID (0)
+
static const yytype_int16 yycheck[] =
{
0, 76, 1, 20, 21, 6, 7, 8, 15, 16,
@@ -831,9 +838,18 @@ static const yytype_uint8 yystos[] =
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
+ Once GCC version 2 has supplanted version 1, this can go. However,
+ YYFAIL appears to be in use. Nevertheless, it is formally deprecated
+ in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+ discussed. */
#define YYFAIL goto yyerrlab
+#if defined YYFAIL
+ /* This is here to suppress warnings from the GCC cpp's
+ -Wunused-macros. Normally we don't worry about that warning, but
+ some users do, and we want to make it easy for users to remove
+ YYFAIL uses, which will produce warnings from Bison 2.5. */
+#endif
#define YYRECOVERING() (!!yyerrstatus)
@@ -843,7 +859,6 @@ do \
{ \
yychar = (Token); \
yylval = (Value); \
- yytoken = YYTRANSLATE (yychar); \
YYPOPSTACK (1); \
goto yybackup; \
} \
@@ -885,19 +900,10 @@ while (YYID (0))
#endif
-/* YY_LOCATION_PRINT -- Print the location on the stream.
- This macro was not mandated originally: define only if we know
- we won't break user code: when these are the locations we know. */
+/* This macro is provided for backward compatibility. */
#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-# define YY_LOCATION_PRINT(File, Loc) \
- fprintf (File, "%d.%d-%d.%d", \
- (Loc).first_line, (Loc).first_column, \
- (Loc).last_line, (Loc).last_column)
-# else
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
#endif
@@ -1089,7 +1095,6 @@ int yydebug;
# define YYMAXDEPTH 10000
#endif
-
#if YYERROR_VERBOSE
@@ -1192,115 +1197,142 @@ yytnamerr (char *yyres, const char *yystr)
}
# endif
-/* Copy into YYRESULT an error message about the unexpected token
- YYCHAR while in state YYSTATE. Return the number of bytes copied,
- including the terminating null byte. If YYRESULT is null, do not
- copy anything; just return the number of bytes that would be
- copied. As a special case, return 0 if an ordinary "syntax error"
- message will do. Return YYSIZE_MAXIMUM if overflow occurs during
- size calculation. */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
- int yyn = yypact[yystate];
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
- if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
- return 0;
- else
+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+{
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = 0;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ int yycount = 0;
+
+ /* There are many possibilities here to consider:
+ - Assume YYFAIL is not used. It's too flawed to consider. See
+ <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+ for details. YYERROR is fine as it does not invoke this
+ function.
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yytoken != YYEMPTY)
{
- int yytype = YYTRANSLATE (yychar);
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- int yysize_overflow = 0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- int yyx;
-
-# if 0
- /* This is so xgettext sees the translatable formats that are
- constructed on the fly. */
- YY_("syntax error, unexpected %s");
- YY_("syntax error, unexpected %s, expecting %s");
- YY_("syntax error, unexpected %s, expecting %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
- char *yyfmt;
- char const *yyf;
- static char const yyunexpected[] = "syntax error, unexpected %s";
- static char const yyexpecting[] = ", expecting %s";
- static char const yyor[] = " or %s";
- char yyformat[sizeof yyunexpected
- + sizeof yyexpecting - 1
- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
- * (sizeof yyor - 1))];
- char const *yyprefix = yyexpecting;
-
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
-
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yycount = 1;
-
- yyarg[0] = yytname[yytype];
- yyfmt = yystpcpy (yyformat, yyunexpected);
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- yyformat[sizeof yyunexpected - 1] = '\0';
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
- yyfmt = yystpcpy (yyfmt, yyprefix);
- yyprefix = yyor;
- }
+ int yyn = yypact[*yyssp];
+ yyarg[yycount++] = yytname[yytoken];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
- yyf = YY_(yyformat);
- yysize1 = yysize + yystrlen (yyf);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
+ switch (yycount)
+ {
+# define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+ }
- if (yysize_overflow)
- return YYSIZE_MAXIMUM;
+ yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
- if (yyresult)
- {
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- char *yyp = yyresult;
- int yyi = 0;
- while ((*yyp = *yyf) != '\0')
- {
- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyf += 2;
- }
- else
- {
- yyp++;
- yyf++;
- }
- }
- }
- return yysize;
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
}
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyformat += 2;
+ }
+ else
+ {
+ yyp++;
+ yyformat++;
+ }
+ }
+ return 0;
}
#endif /* YYERROR_VERBOSE */
-
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
@@ -1333,6 +1365,7 @@ yydestruct (yymsg, yytype, yyvaluep)
}
}
+
/* Prevent warnings from -Wmissing-prototypes. */
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
@@ -1359,10 +1392,9 @@ YYSTYPE yylval;
int yynerrs;
-
-/*-------------------------.
-| yyparse or yypush_parse. |
-`-------------------------*/
+/*----------.
+| yyparse. |
+`----------*/
#ifdef YYPARSE_PARAM
#if (defined __STDC__ || defined __C99__FUNC__ \
@@ -1386,8 +1418,6 @@ yyparse ()
#endif
#endif
{
-
-
int yystate;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
@@ -1542,7 +1572,7 @@ yybackup:
/* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
- if (yyn == YYPACT_NINF)
+ if (yypact_value_is_default (yyn))
goto yydefault;
/* Not known => get a lookahead token if don't already have one. */
@@ -1573,8 +1603,8 @@ yybackup:
yyn = yytable[yyn];
if (yyn <= 0)
{
- if (yyn == 0 || yyn == YYTABLE_NINF)
- goto yyerrlab;
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
@@ -1629,21 +1659,21 @@ yyreduce:
{
case 3:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 125 "eqn.y"
{ (yyvsp[(1) - (1)].b)->top_level(); non_empty_flag = 1; }
break;
case 4:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 130 "eqn.y"
{ (yyval.b) = (yyvsp[(1) - (1)].b); }
break;
case 5:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 132 "eqn.y"
{
list_box *lb = (yyvsp[(1) - (2)].b)->to_list_box();
@@ -1656,357 +1686,357 @@ yyreduce:
case 6:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 143 "eqn.y"
{ (yyval.b) = (yyvsp[(1) - (1)].b); }
break;
case 7:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 145 "eqn.y"
{ (yyval.b) = make_mark_box((yyvsp[(2) - (2)].b)); }
break;
case 8:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 147 "eqn.y"
{ (yyval.b) = make_lineup_box((yyvsp[(2) - (2)].b)); }
break;
case 9:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 152 "eqn.y"
{ (yyval.b) = (yyvsp[(1) - (1)].b); }
break;
case 10:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 154 "eqn.y"
{ (yyval.b) = make_limit_box((yyvsp[(1) - (3)].b), 0, (yyvsp[(3) - (3)].b)); }
break;
case 11:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 156 "eqn.y"
{ (yyval.b) = make_limit_box((yyvsp[(1) - (3)].b), (yyvsp[(3) - (3)].b), 0); }
break;
case 12:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 158 "eqn.y"
{ (yyval.b) = make_limit_box((yyvsp[(1) - (5)].b), (yyvsp[(3) - (5)].b), (yyvsp[(5) - (5)].b)); }
break;
case 13:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 160 "eqn.y"
{ (yyval.b) = make_limit_box((yyvsp[(1) - (5)].b), make_limit_box((yyvsp[(3) - (5)].b), (yyvsp[(5) - (5)].b), 0), 0); }
break;
case 14:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 165 "eqn.y"
{ (yyval.b) = (yyvsp[(1) - (1)].b); }
break;
case 15:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 167 "eqn.y"
{ (yyval.b) = make_sqrt_box((yyvsp[(2) - (2)].b)); }
break;
case 16:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 169 "eqn.y"
{ (yyval.b) = make_over_box((yyvsp[(1) - (3)].b), (yyvsp[(3) - (3)].b)); }
break;
case 17:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 171 "eqn.y"
{ (yyval.b) = make_small_over_box((yyvsp[(1) - (3)].b), (yyvsp[(3) - (3)].b)); }
break;
case 18:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 176 "eqn.y"
{ (yyval.b) = (yyvsp[(1) - (1)].b); }
break;
case 19:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 178 "eqn.y"
{ (yyval.b) = make_script_box((yyvsp[(1) - (3)].b), 0, (yyvsp[(3) - (3)].b)); }
break;
case 20:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 183 "eqn.y"
{ (yyval.b) = (yyvsp[(1) - (1)].b); }
break;
case 21:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 185 "eqn.y"
{ (yyval.b) = make_script_box((yyvsp[(1) - (3)].b), (yyvsp[(3) - (3)].b), 0); }
break;
case 22:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 187 "eqn.y"
{ (yyval.b) = make_script_box((yyvsp[(1) - (5)].b), (yyvsp[(3) - (5)].b), (yyvsp[(5) - (5)].b)); }
break;
case 23:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 192 "eqn.y"
{ (yyval.b) = split_text((yyvsp[(1) - (1)].str)); }
break;
case 24:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 194 "eqn.y"
{ (yyval.b) = new quoted_text_box((yyvsp[(1) - (1)].str)); }
break;
case 25:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 196 "eqn.y"
{ (yyval.b) = split_text((yyvsp[(2) - (2)].str)); }
break;
case 26:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 198 "eqn.y"
{ (yyval.b) = new quoted_text_box((yyvsp[(2) - (2)].str)); }
break;
case 27:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 200 "eqn.y"
{ (yyval.b) = new half_space_box; }
break;
case 28:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 202 "eqn.y"
{ (yyval.b) = new space_box; }
break;
case 29:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 204 "eqn.y"
{ (yyval.b) = new tab_box; }
break;
case 30:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 206 "eqn.y"
{ (yyval.b) = (yyvsp[(2) - (3)].b); }
break;
case 31:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 208 "eqn.y"
{ (yyvsp[(2) - (2)].pb)->set_alignment(CENTER_ALIGN); (yyval.b) = (yyvsp[(2) - (2)].pb); }
break;
case 32:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 210 "eqn.y"
{ (yyvsp[(2) - (2)].pb)->set_alignment(LEFT_ALIGN); (yyval.b) = (yyvsp[(2) - (2)].pb); }
break;
case 33:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 212 "eqn.y"
{ (yyvsp[(2) - (2)].pb)->set_alignment(RIGHT_ALIGN); (yyval.b) = (yyvsp[(2) - (2)].pb); }
break;
case 34:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 214 "eqn.y"
{ (yyvsp[(2) - (2)].pb)->set_alignment(CENTER_ALIGN); (yyval.b) = (yyvsp[(2) - (2)].pb); }
break;
case 35:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 216 "eqn.y"
{ (yyval.b) = (yyvsp[(3) - (4)].mb); }
break;
case 36:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 218 "eqn.y"
{ (yyval.b) = make_delim_box((yyvsp[(2) - (5)].str), (yyvsp[(3) - (5)].b), (yyvsp[(5) - (5)].str)); }
break;
case 37:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 220 "eqn.y"
{ (yyval.b) = make_delim_box((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].b), 0); }
break;
case 38:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 222 "eqn.y"
{ (yyval.b) = make_overline_box((yyvsp[(1) - (2)].b)); }
break;
case 39:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 224 "eqn.y"
{ (yyval.b) = make_underline_box((yyvsp[(1) - (2)].b)); }
break;
case 40:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 226 "eqn.y"
{ (yyval.b) = make_prime_box((yyvsp[(1) - (2)].b)); }
break;
case 41:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 228 "eqn.y"
{ (yyval.b) = make_accent_box((yyvsp[(1) - (3)].b), (yyvsp[(3) - (3)].b)); }
break;
case 42:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 230 "eqn.y"
{ (yyval.b) = make_uaccent_box((yyvsp[(1) - (3)].b), (yyvsp[(3) - (3)].b)); }
break;
case 43:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 232 "eqn.y"
{ (yyval.b) = new font_box(strsave(get_grfont()), (yyvsp[(2) - (2)].b)); }
break;
case 44:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 234 "eqn.y"
{ (yyval.b) = new font_box(strsave(get_gbfont()), (yyvsp[(2) - (2)].b)); }
break;
case 45:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 236 "eqn.y"
{ (yyval.b) = new font_box(strsave(get_gfont()), (yyvsp[(2) - (2)].b)); }
break;
case 46:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 238 "eqn.y"
{ (yyval.b) = new fat_box((yyvsp[(2) - (2)].b)); }
break;
case 47:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 240 "eqn.y"
{ (yyval.b) = new font_box((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].b)); }
break;
case 48:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 242 "eqn.y"
{ (yyval.b) = new size_box((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].b)); }
break;
case 49:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 244 "eqn.y"
{ (yyval.b) = new hmotion_box((yyvsp[(2) - (3)].n), (yyvsp[(3) - (3)].b)); }
break;
case 50:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 246 "eqn.y"
{ (yyval.b) = new hmotion_box(-(yyvsp[(2) - (3)].n), (yyvsp[(3) - (3)].b)); }
break;
case 51:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 248 "eqn.y"
{ (yyval.b) = new vmotion_box((yyvsp[(2) - (3)].n), (yyvsp[(3) - (3)].b)); }
break;
case 52:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 250 "eqn.y"
{ (yyval.b) = new vmotion_box(-(yyvsp[(2) - (3)].n), (yyvsp[(3) - (3)].b)); }
break;
case 53:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 252 "eqn.y"
{ (yyvsp[(3) - (3)].b)->set_spacing_type((yyvsp[(2) - (3)].str)); (yyval.b) = (yyvsp[(3) - (3)].b); }
break;
case 54:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 254 "eqn.y"
{ (yyval.b) = new vcenter_box((yyvsp[(2) - (2)].b)); }
break;
case 55:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 256 "eqn.y"
{ (yyval.b) = make_special_box((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].b)); }
break;
case 56:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 261 "eqn.y"
{
int n;
@@ -2018,143 +2048,154 @@ yyreduce:
case 57:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 271 "eqn.y"
{ (yyval.pb) = new pile_box((yyvsp[(1) - (1)].b)); }
break;
case 58:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 273 "eqn.y"
{ (yyvsp[(1) - (3)].pb)->append((yyvsp[(3) - (3)].b)); (yyval.pb) = (yyvsp[(1) - (3)].pb); }
break;
case 59:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 278 "eqn.y"
{ (yyval.pb) = (yyvsp[(2) - (3)].pb); }
break;
case 60:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 280 "eqn.y"
{ (yyvsp[(3) - (4)].pb)->set_space((yyvsp[(1) - (4)].n)); (yyval.pb) = (yyvsp[(3) - (4)].pb); }
break;
case 61:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 285 "eqn.y"
{ (yyval.mb) = new matrix_box((yyvsp[(1) - (1)].col)); }
break;
case 62:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 287 "eqn.y"
{ (yyvsp[(1) - (2)].mb)->append((yyvsp[(2) - (2)].col)); (yyval.mb) = (yyvsp[(1) - (2)].mb); }
break;
case 63:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 292 "eqn.y"
{ (yyval.col) = new column((yyvsp[(1) - (1)].b)); }
break;
case 64:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 294 "eqn.y"
{ (yyvsp[(1) - (3)].col)->append((yyvsp[(3) - (3)].b)); (yyval.col) = (yyvsp[(1) - (3)].col); }
break;
case 65:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 299 "eqn.y"
{ (yyval.col) = (yyvsp[(2) - (3)].col); }
break;
case 66:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 301 "eqn.y"
{ (yyvsp[(3) - (4)].col)->set_space((yyvsp[(1) - (4)].n)); (yyval.col) = (yyvsp[(3) - (4)].col); }
break;
case 67:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 306 "eqn.y"
{ (yyvsp[(2) - (2)].col)->set_alignment(CENTER_ALIGN); (yyval.col) = (yyvsp[(2) - (2)].col); }
break;
case 68:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 308 "eqn.y"
{ (yyvsp[(2) - (2)].col)->set_alignment(LEFT_ALIGN); (yyval.col) = (yyvsp[(2) - (2)].col); }
break;
case 69:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 310 "eqn.y"
{ (yyvsp[(2) - (2)].col)->set_alignment(RIGHT_ALIGN); (yyval.col) = (yyvsp[(2) - (2)].col); }
break;
case 70:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 312 "eqn.y"
{ (yyvsp[(2) - (2)].col)->set_alignment(CENTER_ALIGN); (yyval.col) = (yyvsp[(2) - (2)].col); }
break;
case 71:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 316 "eqn.y"
{ (yyval.str) = (yyvsp[(1) - (1)].str); }
break;
case 72:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 318 "eqn.y"
{ (yyval.str) = (yyvsp[(1) - (1)].str); }
break;
case 73:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 323 "eqn.y"
{ (yyval.str) = (yyvsp[(1) - (1)].str); }
break;
case 74:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 325 "eqn.y"
{ (yyval.str) = strsave("{"); }
break;
case 75:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 327 "eqn.y"
{ (yyval.str) = strsave("}"); }
break;
-/* Line 1455 of yacc.c */
-#line 2156 "eqn.cpp"
+/* Line 1806 of yacc.c */
+#line 2186 "eqn.cpp"
default: break;
}
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
YYPOPSTACK (yylen);
@@ -2182,6 +2223,10 @@ yyreduce:
| yyerrlab -- here on detecting error |
`------------------------------------*/
yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
@@ -2189,37 +2234,36 @@ yyerrlab:
#if ! YYERROR_VERBOSE
yyerror (YY_("syntax error"));
#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
{
- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
- {
- YYSIZE_T yyalloc = 2 * yysize;
- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
- yyalloc = YYSTACK_ALLOC_MAXIMUM;
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yyalloc);
- if (yymsg)
- yymsg_alloc = yyalloc;
- else
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- }
- }
-
- if (0 < yysize && yysize <= yymsg_alloc)
- {
- (void) yysyntax_error (yymsg, yystate, yychar);
- yyerror (yymsg);
- }
- else
- {
- yyerror (YY_("syntax error"));
- if (yysize != 0)
- goto yyexhaustedlab;
- }
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == 1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ if (!yymsg)
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = 2;
+ }
+ else
+ {
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ yymsgp = yymsg;
+ }
+ }
+ yyerror (yymsgp);
+ if (yysyntax_error_status == 2)
+ goto yyexhaustedlab;
}
+# undef YYSYNTAX_ERROR
#endif
}
@@ -2278,7 +2322,7 @@ yyerrlab1:
for (;;)
{
yyn = yypact[yystate];
- if (yyn != YYPACT_NINF)
+ if (!yypact_value_is_default (yyn))
{
yyn += YYTERROR;
if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
@@ -2337,8 +2381,13 @@ yyexhaustedlab:
yyreturn:
if (yychar != YYEMPTY)
- yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval);
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ }
/* Do not reclaim the symbols of the rule which action triggered
this YYABORT or YYACCEPT. */
YYPOPSTACK (yylen);
@@ -2363,7 +2412,7 @@ yyreturn:
-/* Line 1675 of yacc.c */
+/* Line 2067 of yacc.c */
#line 330 "eqn.y"
diff --git a/src/preproc/eqn/eqn.man b/src/preproc/eqn/eqn.man
index 309d095..61df4e6 100644
--- a/src/preproc/eqn/eqn.man
+++ b/src/preproc/eqn/eqn.man
@@ -1,5 +1,5 @@
.ig
-Copyright (C) 1989-2000, 2001, 2004, 2005, 2007, 2009
+Copyright (C) 1989-2001, 2004, 2005, 2007, 2009, 2013
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -58,10 +58,6 @@ the original English.
.RI [ files\|.\|.\|. ]
.YS
.
-.LP
-It is possible to have whitespace between a command line option and its
-parameter.
-.
.
.SH DESCRIPTION
This manual page describes the GNU version of
@@ -113,6 +109,10 @@ it does not support low-resolution, typewriter-like devices
.
.
.SH OPTIONS
+.LP
+It is possible to have whitespace between a command line option and its
+parameter.
+.
.TP
.BI \-d xy
Specify delimiters
@@ -131,6 +131,9 @@ Recognize
and
.B .EN
even when followed by a character other than space or newline.
+Also, the statement
+.RB ` "delim on" '
+is not handled specially.
.TP
.B \-N
Don't allow newlines within delimiters.
@@ -243,6 +246,23 @@ There are some references to the differences between \*(tx and GNU
below;
these may safely be ignored if you do not know \*(tx.
.
+.SS Controlling delimiters
+.
+If not in compatibility mode,
+.B eqn
+recognizes
+.
+.RS
+.LP
+.B delim on
+.RE
+.
+.LP
+to restore the delimiters which have been previously disabled
+with a call to
+.RB ` "delim off" '.
+If delimiters haven't been specified, the call has no effect.
+.
.SS Automatic spacing
.B eqn
gives each component of an equation a type, and adjusts the spacing
@@ -1167,17 +1187,6 @@ A type of
causes a character to be set in roman type.
.
.
-.SH "INTERACTION WITH @G@TBL"
-It is not advisable to use the hash character (#) as a delimiter for in-line
-equations in
-.B eqn
-since
-.BR @g@tbl (@MAN1EXT@)
-uses a macro called
-.BR .T# ,
-causing a clash.
-.
-.
.SH FILES
.Tp \w'\fB@MACRODIR@/eqnrc'u+2n
.B @MACRODIR@/eqnrc
diff --git a/src/preproc/eqn/eqn_tab.h b/src/preproc/eqn/eqn_tab.h
index a227ef4..1291ee1 100644
--- a/src/preproc/eqn/eqn_tab.h
+++ b/src/preproc/eqn/eqn_tab.h
@@ -1,10 +1,8 @@
+/* A Bison parser, made by GNU Bison 2.5. */
-/* A Bison parser, made by GNU Bison 2.4.1. */
-
-/* Skeleton interface for Bison's Yacc-like parsers in C
+/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -166,7 +164,7 @@
typedef union YYSTYPE
{
-/* Line 1676 of yacc.c */
+/* Line 2068 of yacc.c */
#line 31 "eqn.y"
char *str;
@@ -178,8 +176,8 @@ typedef union YYSTYPE
-/* Line 1676 of yacc.c */
-#line 183 "y.tab.h"
+/* Line 2068 of yacc.c */
+#line 181 "y.tab.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
diff --git a/src/preproc/eqn/lex.cpp b/src/preproc/eqn/lex.cpp
index b328801..899ecae 100644
--- a/src/preproc/eqn/lex.cpp
+++ b/src/preproc/eqn/lex.cpp
@@ -1,6 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2002, 2003, 2005, 2007,
- 2008, 2009
+/* Copyright (C) 1989-1992, 2000-2003, 2005, 2007-2009, 2013
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -1058,6 +1057,9 @@ void do_ifdef()
}
}
+char start_delim_saved = '\0';
+char end_delim_saved = '\0';
+
void do_delim()
{
int c = get_char();
@@ -1069,8 +1071,14 @@ void do_delim()
else {
if (c == 'o' && d == 'f' && peek_char() == 'f') {
(void)get_char();
+ start_delim_saved = start_delim;
+ end_delim_saved = end_delim;
start_delim = end_delim = '\0';
}
+ else if (c == 'o' && d == 'n' && !compatible_flag) {
+ start_delim = start_delim_saved;
+ end_delim = end_delim_saved;
+ }
else {
start_delim = c;
end_delim = d;
diff --git a/src/preproc/eqn/main.cpp b/src/preproc/eqn/main.cpp
index e784c2c..167fb4e 100644
--- a/src/preproc/eqn/main.cpp
+++ b/src/preproc/eqn/main.cpp
@@ -1,6 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2002, 2005, 2007,
- 2009
+/* Copyright (C) 1989-1992, 2000-2002, 2005, 2007, 2009, 2011
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -112,13 +111,14 @@ void do_file(FILE *fp, const char *filename)
inline_flag = 0;
yyparse();
restore_compatibility();
- if (non_empty_flag)
+ if (non_empty_flag) {
if (output_format == mathml)
putchar('\n');
else {
printf(".lf %d\n", current_lineno - 1);
output_string();
}
+ }
if (output_format == troff)
printf(".lf %d\n", current_lineno);
put_string(linebuf, stdout);
diff --git a/src/preproc/eqn/pile.cpp b/src/preproc/eqn/pile.cpp
index 239e81b..79982d0 100644
--- a/src/preproc/eqn/pile.cpp
+++ b/src/preproc/eqn/pile.cpp
@@ -1,5 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991, 1992, 2004, 2007, 2009
+/* Copyright (C) 1989-1992, 2004, 2007, 2009, 2013
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -40,7 +40,7 @@ int pile_box::compute_metrics(int style)
printf(">?(\\n[" DEPTH_FORMAT "]+\\n[" HEIGHT_FORMAT "]+%dM)",
col.p[i-1]->uid, col.p[i]->uid, default_rule_thickness*5);
// round it so that it's a multiple of the vertical resolution
- printf("/\\n(.V+(\\n(.V/2)*\\n(.V\n");
+ printf("+(\\n(.V/2)/\\n(.V*\\n(.V\n");
printf(".nr " SUP_RAISE_FORMAT " \\n[" BASELINE_SEP_FORMAT "]*%d/2"
"+%dM\n",
@@ -167,7 +167,7 @@ int matrix_box::compute_metrics(int style)
printf(">?(\\n[" DEPTH_FORMAT "]+\\n[" HEIGHT_FORMAT "]+%dM)",
p[i]->p[j-1]->uid, p[i]->p[j]->uid, default_rule_thickness*5);
// round it so that it's a multiple of the vertical resolution
- printf("/\\n(.V+(\\n(.V/2)*\\n(.V\n");
+ printf("+(\\n(.V/2)/\\n(.V*\\n(.V\n");
printf(".nr " SUP_RAISE_FORMAT " \\n[" BASELINE_SEP_FORMAT "]*%d/2"
"+%dM\n",
uid, uid, max_len-1, axis_height - shift_down);
diff --git a/src/preproc/grn/Makefile.sub b/src/preproc/grn/Makefile.sub
index c28db47..0fa0bec 100644
--- a/src/preproc/grn/Makefile.sub
+++ b/src/preproc/grn/Makefile.sub
@@ -1,7 +1,7 @@
PROG=grn$(EXEEXT)
MAN1=grn.n
MLIB=$(LIBM)
-XLIBS=$(LIBGROFF)
+XLIBS=$(LIBGROFF) $(LIBGNU)
OBJS=\
hdb.$(OBJEXT) \
hpoint.$(OBJEXT) \
diff --git a/src/preproc/grn/grn.man b/src/preproc/grn/grn.man
index e723ae4..f76e75c 100644
--- a/src/preproc/grn/grn.man
+++ b/src/preproc/grn/grn.man
@@ -56,9 +56,6 @@ the original English.
[
.IR file\.\.\.\&
]
-.PP
-It is possible to have whitespace between a command line option and its
-parameter.
.SH DESCRIPTION
.I @g@grn
is a preprocessor for including
@@ -165,6 +162,9 @@ even when followed by a character other than space or newline.
.TP
.B \-v
Print the version number.
+.PP
+It is possible to have whitespace between a command line option and its
+parameter.
.SH GRN COMMANDS
Each input line between
.B .GS
diff --git a/src/preproc/grn/main.cpp b/src/preproc/grn/main.cpp
index 401109a..d6ae754 100644
--- a/src/preproc/grn/main.cpp
+++ b/src/preproc/grn/main.cpp
@@ -119,7 +119,7 @@ extern POINT *PTMakePoint(double x, double y, POINT **pplist);
#define BIG 999999999999.0 /* unweildly large floating number */
-static char sccsid[] = "@(#) (Berkeley) 8/5/85, 12/28/99";
+/* static char sccsid[] = "@(#) (Berkeley) 8/5/85, 12/28/99"; */
int res; /* the printer's resolution goes here */
diff --git a/src/preproc/html/Makefile.sub b/src/preproc/html/Makefile.sub
index 0763537..2a8adea 100644
--- a/src/preproc/html/Makefile.sub
+++ b/src/preproc/html/Makefile.sub
@@ -1,7 +1,7 @@
PROG=pre-grohtml$(EXEEXT)
# MAN1=pre-grohtml.n
MAN1=
-XLIBS=$(LIBGROFF)
+XLIBS=$(LIBGROFF) $(LIBGNU)
MLIB=$(LIBM)
OBJS=pre-html.$(OBJEXT) pushback.$(OBJEXT)
CCSRCS=$(srcdir)/pre-html.cpp $(srcdir)/pushback.cpp
diff --git a/src/preproc/html/pre-html.cpp b/src/preproc/html/pre-html.cpp
index 50c2de5..fae164c 100644
--- a/src/preproc/html/pre-html.cpp
+++ b/src/preproc/html/pre-html.cpp
@@ -1,5 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009
+/* Copyright (C) 2000-2004, 2007-2009, 2012
* Free Software Foundation, Inc.
* Written by Gaius Mulley (gaius@glam.ac.uk).
*
@@ -1205,11 +1205,12 @@ static void alterDeviceTo(int argc, char *argv[], int toImage)
}
else {
while (i < argc) {
- if (strcmp(argv[i], IMAGE_DEVICE) == 0)
+ if (strcmp(argv[i], IMAGE_DEVICE) == 0) {
if (dialect == xhtml)
argv[i] = (char *)"-Txhtml";
else
argv[i] = (char *)"-Thtml";
+ }
i++;
}
argv[troff_arg] = (char *)"groff"; /* use groff -Z */
diff --git a/src/preproc/html/pushback.cpp b/src/preproc/html/pushback.cpp
index 60ca9ff..8db3087 100644
--- a/src/preproc/html/pushback.cpp
+++ b/src/preproc/html/pushback.cpp
@@ -71,6 +71,9 @@ pushBackBuffer::pushBackBuffer (char *filename)
lineNo = 1;
if (strcmp(filename, "") != 0) {
stdIn = dup(0);
+ if (stdIn < 0) {
+ sys_fatal("dup stdin");
+ }
close(0);
if (open(filename, O_RDONLY) != 0) {
sys_fatal("when trying to open file");
@@ -87,7 +90,9 @@ pushBackBuffer::~pushBackBuffer ()
}
close(0);
/* restore stdin in file descriptor 0 */
- dup(stdIn);
+ if (dup(stdIn) < 0) {
+ sys_fatal("restore stdin");
+ }
close(stdIn);
}
diff --git a/src/preproc/pic/main.cpp b/src/preproc/pic/main.cpp
index 3b97416..f242da0 100644
--- a/src/preproc/pic/main.cpp
+++ b/src/preproc/pic/main.cpp
@@ -1,5 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 1989-1992, 2000, 2001, 2002, 2003, 2006, 2009
+/* Copyright (C) 1989-1992, 2000, 2001, 2002, 2003, 2006, 2009, 2012
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -316,6 +316,10 @@ void do_file(const char *filename)
enum { START, MIDDLE, HAD_DOT, HAD_P, HAD_PS, HAD_l, HAD_lf } state = START;
for (;;) {
int c = getc(fp);
+ while (invalid_input_char(c)) {
+ error("invalid input character code %1", int(c));
+ c = getc(fp);
+ }
if (c == EOF)
break;
switch (state) {
diff --git a/src/preproc/pic/pic.cpp b/src/preproc/pic/pic.cpp
index 99a7aa9..a27fcd5 100644
--- a/src/preproc/pic/pic.cpp
+++ b/src/preproc/pic/pic.cpp
@@ -1,10 +1,8 @@
+/* A Bison parser, made by GNU Bison 2.5. */
-/* A Bison parser, made by GNU Bison 2.4.1. */
-
-/* Skeleton implementation for Bison's Yacc-like parsers in C
+/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -46,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "2.5"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -67,7 +65,7 @@
/* Copy the first part of user declarations. */
-/* Line 189 of yacc.c */
+/* Line 268 of yacc.c */
#line 21 "pic.y"
#include "pic.h"
@@ -113,8 +111,8 @@ char *do_sprintf(const char *form, const double *v, int nv);
-/* Line 189 of yacc.c */
-#line 118 "pic.cpp"
+/* Line 268 of yacc.c */
+#line 116 "pic.cpp"
/* Enabling traces. */
#ifndef YYDEBUG
@@ -396,7 +394,7 @@ char *do_sprintf(const char *form, const double *v, int nv);
typedef union YYSTYPE
{
-/* Line 214 of yacc.c */
+/* Line 293 of yacc.c */
#line 67 "pic.y"
char *str;
@@ -418,8 +416,8 @@ typedef union YYSTYPE
-/* Line 214 of yacc.c */
-#line 423 "pic.cpp"
+/* Line 293 of yacc.c */
+#line 421 "pic.cpp"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -430,8 +428,8 @@ typedef union YYSTYPE
/* Copy the second part of user declarations. */
-/* Line 264 of yacc.c */
-#line 435 "pic.cpp"
+/* Line 343 of yacc.c */
+#line 433 "pic.cpp"
#ifdef short
# undef short
@@ -481,7 +479,7 @@ typedef short int yytype_int16;
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -534,11 +532,11 @@ YYID (yyi)
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
# endif
# endif
# endif
@@ -561,24 +559,24 @@ YYID (yyi)
# ifndef YYSTACK_ALLOC_MAXIMUM
# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
# endif
-# if (defined __cplusplus && ! defined _STDLIB_H \
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
&& ! ((defined YYMALLOC || defined malloc) \
&& (defined YYFREE || defined free)))
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
# endif
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
-# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
-# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
@@ -607,23 +605,7 @@ union yyalloc
((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (YYID (0))
-# endif
-# endif
+# define YYCOPY_NEEDED 1
/* Relocate STACK from its old location to the new one. The
local variables YYSIZE and YYSTACKSIZE give the old and new number of
@@ -643,6 +625,26 @@ union yyalloc
#endif
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 6
/* YYLAST -- Last index in YYTABLE. */
@@ -987,8 +989,8 @@ static const yytype_uint8 yyr2[] =
2
};
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
@@ -1115,8 +1117,7 @@ static const yytype_int16 yypgoto[] =
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
- number is the opposite. If zero, do what YYDEFACT says.
- If YYTABLE_NINF, syntax error. */
+ number is the opposite. If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -206
static const yytype_int16 yytable[] =
{
@@ -1366,6 +1367,12 @@ static const yytype_int16 yytable[] =
241, 242, 243, 244, 245, 246, 247, 0, 248
};
+#define yypact_value_is_default(yystate) \
+ ((yystate) == (-240))
+
+#define yytable_value_is_error(yytable_value) \
+ YYID (0)
+
static const yytype_int16 yycheck[] =
{
26, 128, 106, 52, 30, 52, 32, 4, 108, 4,
@@ -1678,9 +1685,18 @@ static const yytype_uint8 yystos[] =
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
+ Once GCC version 2 has supplanted version 1, this can go. However,
+ YYFAIL appears to be in use. Nevertheless, it is formally deprecated
+ in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+ discussed. */
#define YYFAIL goto yyerrlab
+#if defined YYFAIL
+ /* This is here to suppress warnings from the GCC cpp's
+ -Wunused-macros. Normally we don't worry about that warning, but
+ some users do, and we want to make it easy for users to remove
+ YYFAIL uses, which will produce warnings from Bison 2.5. */
+#endif
#define YYRECOVERING() (!!yyerrstatus)
@@ -1690,7 +1706,6 @@ do \
{ \
yychar = (Token); \
yylval = (Value); \
- yytoken = YYTRANSLATE (yychar); \
YYPOPSTACK (1); \
goto yybackup; \
} \
@@ -1732,19 +1747,10 @@ while (YYID (0))
#endif
-/* YY_LOCATION_PRINT -- Print the location on the stream.
- This macro was not mandated originally: define only if we know
- we won't break user code: when these are the locations we know. */
+/* This macro is provided for backward compatibility. */
#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-# define YY_LOCATION_PRINT(File, Loc) \
- fprintf (File, "%d.%d-%d.%d", \
- (Loc).first_line, (Loc).first_column, \
- (Loc).last_line, (Loc).last_column)
-# else
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
#endif
@@ -1936,7 +1942,6 @@ int yydebug;
# define YYMAXDEPTH 10000
#endif
-
#if YYERROR_VERBOSE
@@ -2039,115 +2044,142 @@ yytnamerr (char *yyres, const char *yystr)
}
# endif
-/* Copy into YYRESULT an error message about the unexpected token
- YYCHAR while in state YYSTATE. Return the number of bytes copied,
- including the terminating null byte. If YYRESULT is null, do not
- copy anything; just return the number of bytes that would be
- copied. As a special case, return 0 if an ordinary "syntax error"
- message will do. Return YYSIZE_MAXIMUM if overflow occurs during
- size calculation. */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
- int yyn = yypact[yystate];
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
- if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
- return 0;
- else
- {
- int yytype = YYTRANSLATE (yychar);
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- int yysize_overflow = 0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- int yyx;
-
-# if 0
- /* This is so xgettext sees the translatable formats that are
- constructed on the fly. */
- YY_("syntax error, unexpected %s");
- YY_("syntax error, unexpected %s, expecting %s");
- YY_("syntax error, unexpected %s, expecting %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
- char *yyfmt;
- char const *yyf;
- static char const yyunexpected[] = "syntax error, unexpected %s";
- static char const yyexpecting[] = ", expecting %s";
- static char const yyor[] = " or %s";
- char yyformat[sizeof yyunexpected
- + sizeof yyexpecting - 1
- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
- * (sizeof yyor - 1))];
- char const *yyprefix = yyexpecting;
-
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
-
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yycount = 1;
-
- yyarg[0] = yytname[yytype];
- yyfmt = yystpcpy (yyformat, yyunexpected);
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- yyformat[sizeof yyunexpected - 1] = '\0';
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
- yyfmt = yystpcpy (yyfmt, yyprefix);
- yyprefix = yyor;
- }
+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+{
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = 0;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ int yycount = 0;
+
+ /* There are many possibilities here to consider:
+ - Assume YYFAIL is not used. It's too flawed to consider. See
+ <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+ for details. YYERROR is fine as it does not invoke this
+ function.
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yytoken != YYEMPTY)
+ {
+ int yyn = yypact[*yyssp];
+ yyarg[yycount++] = yytname[yytoken];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
- yyf = YY_(yyformat);
- yysize1 = yysize + yystrlen (yyf);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
+ switch (yycount)
+ {
+# define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+ }
- if (yysize_overflow)
- return YYSIZE_MAXIMUM;
+ yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
- if (yyresult)
- {
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- char *yyp = yyresult;
- int yyi = 0;
- while ((*yyp = *yyf) != '\0')
- {
- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyf += 2;
- }
- else
- {
- yyp++;
- yyf++;
- }
- }
- }
- return yysize;
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
}
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyformat += 2;
+ }
+ else
+ {
+ yyp++;
+ yyformat++;
+ }
+ }
+ return 0;
}
#endif /* YYERROR_VERBOSE */
-
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
@@ -2180,6 +2212,7 @@ yydestruct (yymsg, yytype, yyvaluep)
}
}
+
/* Prevent warnings from -Wmissing-prototypes. */
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
@@ -2206,10 +2239,9 @@ YYSTYPE yylval;
int yynerrs;
-
-/*-------------------------.
-| yyparse or yypush_parse. |
-`-------------------------*/
+/*----------.
+| yyparse. |
+`----------*/
#ifdef YYPARSE_PARAM
#if (defined __STDC__ || defined __C99__FUNC__ \
@@ -2233,8 +2265,6 @@ yyparse ()
#endif
#endif
{
-
-
int yystate;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
@@ -2389,7 +2419,7 @@ yybackup:
/* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
- if (yyn == YYPACT_NINF)
+ if (yypact_value_is_default (yyn))
goto yydefault;
/* Not known => get a lookahead token if don't already have one. */
@@ -2420,8 +2450,8 @@ yybackup:
yyn = yytable[yyn];
if (yyn <= 0)
{
- if (yyn == 0 || yyn == YYTABLE_NINF)
- goto yyerrlab;
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
@@ -2476,7 +2506,7 @@ yyreduce:
{
case 3:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 279 "pic.y"
{
if (olist.head)
@@ -2486,28 +2516,28 @@ yyreduce:
case 4:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 288 "pic.y"
{ (yyval.pl) = (yyvsp[(2) - (3)].pl); }
break;
case 5:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 293 "pic.y"
{ (yyval.pl) = (yyvsp[(1) - (1)].pl); }
break;
case 6:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 295 "pic.y"
{ (yyval.pl) = (yyvsp[(1) - (3)].pl); }
break;
case 11:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 310 "pic.y"
{
a_delete graphname;
@@ -2519,7 +2549,7 @@ yyreduce:
case 12:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 318 "pic.y"
{
define_variable((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].x));
@@ -2529,7 +2559,7 @@ yyreduce:
case 13:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 323 "pic.y"
{
place *p = lookup_label((yyvsp[(1) - (4)].str));
@@ -2546,35 +2576,35 @@ yyreduce:
case 14:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 335 "pic.y"
{ current_direction = UP_DIRECTION; }
break;
case 15:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 337 "pic.y"
{ current_direction = DOWN_DIRECTION; }
break;
case 16:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 339 "pic.y"
{ current_direction = LEFT_DIRECTION; }
break;
case 17:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 341 "pic.y"
{ current_direction = RIGHT_DIRECTION; }
break;
case 18:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 343 "pic.y"
{
olist.append(make_command_object((yyvsp[(1) - (1)].lstr).str, (yyvsp[(1) - (1)].lstr).filename,
@@ -2584,7 +2614,7 @@ yyreduce:
case 19:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 348 "pic.y"
{
olist.append(make_command_object((yyvsp[(2) - (2)].lstr).str, (yyvsp[(2) - (2)].lstr).filename,
@@ -2594,7 +2624,7 @@ yyreduce:
case 20:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 353 "pic.y"
{
fprintf(stderr, "%s\n", (yyvsp[(2) - (2)].lstr).str);
@@ -2605,14 +2635,14 @@ yyreduce:
case 21:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 359 "pic.y"
{ delim_flag = 1; }
break;
case 22:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 361 "pic.y"
{
delim_flag = 0;
@@ -2626,7 +2656,7 @@ yyreduce:
case 23:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 370 "pic.y"
{
if (yychar < 0)
@@ -2638,21 +2668,21 @@ yyreduce:
case 24:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 377 "pic.y"
{ delim_flag = 2; }
break;
case 25:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 379 "pic.y"
{ delim_flag = 0; }
break;
case 26:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 381 "pic.y"
{
if (yychar < 0)
@@ -2666,21 +2696,21 @@ yyreduce:
case 27:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 390 "pic.y"
{ delim_flag = 2; }
break;
case 28:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 392 "pic.y"
{ delim_flag = 0; }
break;
case 29:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 394 "pic.y"
{
if (yychar < 0)
@@ -2693,14 +2723,14 @@ yyreduce:
case 30:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 402 "pic.y"
{ delim_flag = 1; }
break;
case 31:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 404 "pic.y"
{
delim_flag = 0;
@@ -2712,7 +2742,7 @@ yyreduce:
case 32:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 411 "pic.y"
{
if (yychar < 0)
@@ -2725,14 +2755,14 @@ yyreduce:
case 33:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 419 "pic.y"
{ delim_flag = 1; }
break;
case 34:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 421 "pic.y"
{
delim_flag = 0;
@@ -2749,14 +2779,14 @@ yyreduce:
case 36:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 434 "pic.y"
{ define_variable("scale", 1.0); }
break;
case 39:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 444 "pic.y"
{
reset((yyvsp[(2) - (2)].str));
@@ -2766,7 +2796,7 @@ yyreduce:
case 40:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 449 "pic.y"
{
reset((yyvsp[(2) - (2)].str));
@@ -2776,7 +2806,7 @@ yyreduce:
case 41:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 454 "pic.y"
{
reset((yyvsp[(3) - (3)].str));
@@ -2786,14 +2816,14 @@ yyreduce:
case 42:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 462 "pic.y"
{ (yyval.lstr) = (yyvsp[(1) - (1)].lstr); }
break;
case 43:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 464 "pic.y"
{
(yyval.lstr).str = new char[strlen((yyvsp[(1) - (2)].lstr).str) + strlen((yyvsp[(2) - (2)].lstr).str) + 1];
@@ -2814,7 +2844,7 @@ yyreduce:
case 44:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 483 "pic.y"
{
(yyval.lstr).str = new char[GDIGITS + 1];
@@ -2826,14 +2856,14 @@ yyreduce:
case 45:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 490 "pic.y"
{ (yyval.lstr) = (yyvsp[(1) - (1)].lstr); }
break;
case 46:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 492 "pic.y"
{
(yyval.lstr).str = new char[GDIGITS + 2 + GDIGITS + 1];
@@ -2845,14 +2875,14 @@ yyreduce:
case 47:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 502 "pic.y"
{ delim_flag = 1; }
break;
case 48:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 504 "pic.y"
{
delim_flag = 0;
@@ -2863,35 +2893,35 @@ yyreduce:
case 49:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 513 "pic.y"
{ (yyval.str) = 0; }
break;
case 50:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 515 "pic.y"
{ (yyval.str) = (yyvsp[(2) - (2)].lstr).str; }
break;
case 51:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 520 "pic.y"
{ (yyval.x) = (yyvsp[(1) - (1)].x); }
break;
case 52:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 522 "pic.y"
{ (yyval.x) = (yyvsp[(1) - (1)].x); }
break;
case 53:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 527 "pic.y"
{
(yyval.x) = strcmp((yyvsp[(1) - (3)].lstr).str, (yyvsp[(3) - (3)].lstr).str) == 0;
@@ -2902,7 +2932,7 @@ yyreduce:
case 54:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 533 "pic.y"
{
(yyval.x) = strcmp((yyvsp[(1) - (3)].lstr).str, (yyvsp[(3) - (3)].lstr).str) != 0;
@@ -2913,56 +2943,56 @@ yyreduce:
case 55:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 539 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) != 0.0 && (yyvsp[(3) - (3)].x) != 0.0); }
break;
case 56:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 541 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) != 0.0 && (yyvsp[(3) - (3)].x) != 0.0); }
break;
case 57:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 543 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) != 0.0 && (yyvsp[(3) - (3)].x) != 0.0); }
break;
case 58:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 545 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) != 0.0 || (yyvsp[(3) - (3)].x) != 0.0); }
break;
case 59:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 547 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) != 0.0 || (yyvsp[(3) - (3)].x) != 0.0); }
break;
case 60:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 549 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) != 0.0 || (yyvsp[(3) - (3)].x) != 0.0); }
break;
case 61:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 551 "pic.y"
{ (yyval.x) = ((yyvsp[(2) - (2)].x) == 0.0); }
break;
case 62:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 557 "pic.y"
{
(yyval.by).val = 1.0;
@@ -2972,7 +3002,7 @@ yyreduce:
case 63:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 562 "pic.y"
{
(yyval.by).val = (yyvsp[(2) - (2)].x);
@@ -2982,7 +3012,7 @@ yyreduce:
case 64:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 567 "pic.y"
{
(yyval.by).val = (yyvsp[(3) - (3)].x);
@@ -2992,7 +3022,7 @@ yyreduce:
case 65:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 575 "pic.y"
{
(yyval.pl).obj = (yyvsp[(1) - (1)].spec)->make_object(&current_position,
@@ -3011,7 +3041,7 @@ yyreduce:
case 66:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 589 "pic.y"
{
(yyval.pl) = (yyvsp[(4) - (4)].pl);
@@ -3022,7 +3052,7 @@ yyreduce:
case 67:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 595 "pic.y"
{
(yyval.pl).obj = 0;
@@ -3035,7 +3065,7 @@ yyreduce:
case 68:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 603 "pic.y"
{
(yyval.pl) = (yyvsp[(4) - (4)].pl);
@@ -3046,7 +3076,7 @@ yyreduce:
case 69:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 609 "pic.y"
{
(yyval.state).x = current_position.x;
@@ -3057,7 +3087,7 @@ yyreduce:
case 70:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 615 "pic.y"
{
current_position.x = (yyvsp[(2) - (4)].state).x;
@@ -3068,7 +3098,7 @@ yyreduce:
case 71:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 621 "pic.y"
{
(yyval.pl) = (yyvsp[(3) - (6)].pl);
@@ -3077,7 +3107,7 @@ yyreduce:
case 72:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 625 "pic.y"
{
(yyval.pl).obj = 0;
@@ -3088,42 +3118,42 @@ yyreduce:
case 73:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 634 "pic.y"
{}
break;
case 74:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 636 "pic.y"
{}
break;
case 75:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 641 "pic.y"
{ (yyval.spec) = new object_spec(BOX_OBJECT); }
break;
case 76:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 643 "pic.y"
{ (yyval.spec) = new object_spec(CIRCLE_OBJECT); }
break;
case 77:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 645 "pic.y"
{ (yyval.spec) = new object_spec(ELLIPSE_OBJECT); }
break;
case 78:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 647 "pic.y"
{
(yyval.spec) = new object_spec(ARC_OBJECT);
@@ -3133,7 +3163,7 @@ yyreduce:
case 79:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 652 "pic.y"
{
(yyval.spec) = new object_spec(LINE_OBJECT);
@@ -3145,7 +3175,7 @@ yyreduce:
case 80:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 659 "pic.y"
{
(yyval.spec) = new object_spec(ARROW_OBJECT);
@@ -3157,7 +3187,7 @@ yyreduce:
case 81:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 666 "pic.y"
{
(yyval.spec) = new object_spec(MOVE_OBJECT);
@@ -3169,7 +3199,7 @@ yyreduce:
case 82:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 673 "pic.y"
{
(yyval.spec) = new object_spec(SPLINE_OBJECT);
@@ -3181,7 +3211,7 @@ yyreduce:
case 83:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 680 "pic.y"
{
(yyval.spec) = new object_spec(TEXT_OBJECT);
@@ -3191,7 +3221,7 @@ yyreduce:
case 84:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 685 "pic.y"
{
(yyval.spec) = new object_spec(TEXT_OBJECT);
@@ -3201,7 +3231,7 @@ yyreduce:
case 85:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 690 "pic.y"
{
(yyval.spec) = new object_spec(TEXT_OBJECT);
@@ -3213,7 +3243,7 @@ yyreduce:
case 86:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 697 "pic.y"
{
saved_state *p = new saved_state;
@@ -3233,7 +3263,7 @@ yyreduce:
case 87:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 712 "pic.y"
{
current_position.x = (yyvsp[(2) - (4)].pstate)->x;
@@ -3250,7 +3280,7 @@ yyreduce:
case 88:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 724 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3261,7 +3291,7 @@ yyreduce:
case 89:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 730 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3272,7 +3302,7 @@ yyreduce:
case 90:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 736 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3283,7 +3313,7 @@ yyreduce:
case 91:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 742 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3294,7 +3324,7 @@ yyreduce:
case 92:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 748 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3318,7 +3348,7 @@ yyreduce:
case 93:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 767 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3330,7 +3360,7 @@ yyreduce:
case 94:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 774 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3342,7 +3372,7 @@ yyreduce:
case 95:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 781 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3354,7 +3384,7 @@ yyreduce:
case 96:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 788 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3366,7 +3396,7 @@ yyreduce:
case 97:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 795 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3378,7 +3408,7 @@ yyreduce:
case 98:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 802 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3390,7 +3420,7 @@ yyreduce:
case 99:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 809 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3402,7 +3432,7 @@ yyreduce:
case 100:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 816 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3414,7 +3444,7 @@ yyreduce:
case 101:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 823 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3426,7 +3456,7 @@ yyreduce:
case 102:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 830 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3446,7 +3476,7 @@ yyreduce:
case 103:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 845 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3463,7 +3493,7 @@ yyreduce:
case 104:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 857 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3474,7 +3504,7 @@ yyreduce:
case 105:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 863 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3488,7 +3518,7 @@ yyreduce:
case 106:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 872 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3500,7 +3530,7 @@ yyreduce:
case 107:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 879 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3530,7 +3560,7 @@ yyreduce:
case 108:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 904 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec); // nothing
@@ -3539,7 +3569,7 @@ yyreduce:
case 109:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 908 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3550,7 +3580,7 @@ yyreduce:
case 110:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 914 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3561,7 +3591,7 @@ yyreduce:
case 111:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 920 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3572,7 +3602,7 @@ yyreduce:
case 112:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 926 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3583,7 +3613,7 @@ yyreduce:
case 113:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 932 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3593,7 +3623,7 @@ yyreduce:
case 114:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 937 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3604,7 +3634,7 @@ yyreduce:
case 115:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 943 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3615,7 +3645,7 @@ yyreduce:
case 116:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 949 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3626,7 +3656,7 @@ yyreduce:
case 117:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 955 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3638,7 +3668,7 @@ yyreduce:
case 118:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 962 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3652,7 +3682,7 @@ yyreduce:
case 119:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 971 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3664,7 +3694,7 @@ yyreduce:
case 120:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 978 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3685,7 +3715,7 @@ yyreduce:
case 121:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 994 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3707,7 +3737,7 @@ yyreduce:
case 122:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1011 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3717,7 +3747,7 @@ yyreduce:
case 123:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1016 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3727,7 +3757,7 @@ yyreduce:
case 124:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1021 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3737,7 +3767,7 @@ yyreduce:
case 125:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1026 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3747,7 +3777,7 @@ yyreduce:
case 126:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1031 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3757,7 +3787,7 @@ yyreduce:
case 127:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1036 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3767,7 +3797,7 @@ yyreduce:
case 128:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1041 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3777,7 +3807,7 @@ yyreduce:
case 129:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1046 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3790,7 +3820,7 @@ yyreduce:
case 130:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1054 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3805,7 +3835,7 @@ yyreduce:
case 131:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1064 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3820,7 +3850,7 @@ yyreduce:
case 132:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1074 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3835,7 +3865,7 @@ yyreduce:
case 133:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1084 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3850,7 +3880,7 @@ yyreduce:
case 134:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1094 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (3)].spec);
@@ -3861,7 +3891,7 @@ yyreduce:
case 135:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1100 "pic.y"
{
(yyval.spec) = (yyvsp[(1) - (2)].spec);
@@ -3871,14 +3901,14 @@ yyreduce:
case 136:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1108 "pic.y"
{ (yyval.lstr) = (yyvsp[(1) - (1)].lstr); }
break;
case 137:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1110 "pic.y"
{
(yyval.lstr).filename = (yyvsp[(3) - (5)].lstr).filename;
@@ -3891,7 +3921,7 @@ yyreduce:
case 138:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1121 "pic.y"
{
(yyval.dv).v = 0;
@@ -3902,7 +3932,7 @@ yyreduce:
case 139:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1127 "pic.y"
{
(yyval.dv) = (yyvsp[(1) - (3)].dv);
@@ -3934,14 +3964,14 @@ yyreduce:
case 140:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1157 "pic.y"
{ (yyval.pair) = (yyvsp[(1) - (1)].pair); }
break;
case 141:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1159 "pic.y"
{
position pos = (yyvsp[(1) - (1)].pl);
@@ -3952,7 +3982,7 @@ yyreduce:
case 142:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1165 "pic.y"
{
position pos = (yyvsp[(2) - (3)].pl);
@@ -3963,14 +3993,14 @@ yyreduce:
case 143:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1174 "pic.y"
{ (yyval.pair) = (yyvsp[(1) - (1)].pair); }
break;
case 144:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1176 "pic.y"
{
(yyval.pair).x = (yyvsp[(1) - (3)].pair).x + (yyvsp[(3) - (3)].pair).x;
@@ -3980,7 +4010,7 @@ yyreduce:
case 145:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1181 "pic.y"
{
(yyval.pair).x = (yyvsp[(2) - (5)].pair).x + (yyvsp[(4) - (5)].pair).x;
@@ -3990,7 +4020,7 @@ yyreduce:
case 146:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1186 "pic.y"
{
(yyval.pair).x = (yyvsp[(1) - (3)].pair).x - (yyvsp[(3) - (3)].pair).x;
@@ -4000,7 +4030,7 @@ yyreduce:
case 147:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1191 "pic.y"
{
(yyval.pair).x = (yyvsp[(2) - (5)].pair).x - (yyvsp[(4) - (5)].pair).x;
@@ -4010,7 +4040,7 @@ yyreduce:
case 148:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1196 "pic.y"
{
(yyval.pair).x = (yyvsp[(2) - (5)].pair).x;
@@ -4020,7 +4050,7 @@ yyreduce:
case 149:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1201 "pic.y"
{
(yyval.pair).x = (1.0 - (yyvsp[(1) - (5)].x))*(yyvsp[(3) - (5)].pair).x + (yyvsp[(1) - (5)].x)*(yyvsp[(5) - (5)].pair).x;
@@ -4030,7 +4060,7 @@ yyreduce:
case 150:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1206 "pic.y"
{
(yyval.pair).x = (1.0 - (yyvsp[(2) - (7)].x))*(yyvsp[(4) - (7)].pair).x + (yyvsp[(2) - (7)].x)*(yyvsp[(6) - (7)].pair).x;
@@ -4040,7 +4070,7 @@ yyreduce:
case 151:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1212 "pic.y"
{
(yyval.pair).x = (1.0 - (yyvsp[(1) - (6)].x))*(yyvsp[(3) - (6)].pair).x + (yyvsp[(1) - (6)].x)*(yyvsp[(5) - (6)].pair).x;
@@ -4050,7 +4080,7 @@ yyreduce:
case 152:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1217 "pic.y"
{
(yyval.pair).x = (1.0 - (yyvsp[(2) - (8)].x))*(yyvsp[(4) - (8)].pair).x + (yyvsp[(2) - (8)].x)*(yyvsp[(6) - (8)].pair).x;
@@ -4060,7 +4090,7 @@ yyreduce:
case 155:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1230 "pic.y"
{
(yyval.pair).x = (yyvsp[(1) - (3)].x);
@@ -4070,21 +4100,21 @@ yyreduce:
case 156:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1235 "pic.y"
{ (yyval.pair) = (yyvsp[(2) - (3)].pair); }
break;
case 157:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1241 "pic.y"
{ (yyval.pl) = (yyvsp[(1) - (1)].pl); }
break;
case 158:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1243 "pic.y"
{
path pth((yyvsp[(2) - (2)].crn));
@@ -4095,7 +4125,7 @@ yyreduce:
case 159:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1249 "pic.y"
{
path pth((yyvsp[(1) - (2)].crn));
@@ -4106,7 +4136,7 @@ yyreduce:
case 160:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1255 "pic.y"
{
path pth((yyvsp[(1) - (3)].crn));
@@ -4117,7 +4147,7 @@ yyreduce:
case 161:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1261 "pic.y"
{
(yyval.pl).x = current_position.x;
@@ -4128,7 +4158,7 @@ yyreduce:
case 162:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1270 "pic.y"
{
place *p = lookup_label((yyvsp[(1) - (1)].str));
@@ -4143,14 +4173,14 @@ yyreduce:
case 163:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1280 "pic.y"
{ (yyval.pl).obj = (yyvsp[(1) - (1)].obj); }
break;
case 164:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1282 "pic.y"
{
path pth((yyvsp[(3) - (3)].str));
@@ -4161,14 +4191,14 @@ yyreduce:
case 165:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1291 "pic.y"
{ (yyval.n) = (yyvsp[(1) - (1)].n); }
break;
case 166:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1293 "pic.y"
{
// XXX Check for overflow (and non-integers?).
@@ -4178,21 +4208,21 @@ yyreduce:
case 167:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1301 "pic.y"
{ (yyval.n) = 1; }
break;
case 168:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1303 "pic.y"
{ (yyval.n) = (yyvsp[(1) - (2)].n); }
break;
case 169:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1308 "pic.y"
{
int count = 0;
@@ -4212,7 +4242,7 @@ yyreduce:
case 170:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1323 "pic.y"
{
int count = 0;
@@ -4232,77 +4262,77 @@ yyreduce:
case 171:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1341 "pic.y"
{ (yyval.obtype) = BOX_OBJECT; }
break;
case 172:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1343 "pic.y"
{ (yyval.obtype) = CIRCLE_OBJECT; }
break;
case 173:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1345 "pic.y"
{ (yyval.obtype) = ELLIPSE_OBJECT; }
break;
case 174:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1347 "pic.y"
{ (yyval.obtype) = ARC_OBJECT; }
break;
case 175:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1349 "pic.y"
{ (yyval.obtype) = LINE_OBJECT; }
break;
case 176:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1351 "pic.y"
{ (yyval.obtype) = ARROW_OBJECT; }
break;
case 177:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1353 "pic.y"
{ (yyval.obtype) = SPLINE_OBJECT; }
break;
case 178:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1355 "pic.y"
{ (yyval.obtype) = BLOCK_OBJECT; }
break;
case 179:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1357 "pic.y"
{ (yyval.obtype) = TEXT_OBJECT; }
break;
case 180:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1362 "pic.y"
{ (yyval.pth) = new path((yyvsp[(2) - (2)].str)); }
break;
case 181:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1364 "pic.y"
{
(yyval.pth) = (yyvsp[(1) - (3)].pth);
@@ -4312,21 +4342,21 @@ yyreduce:
case 182:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1372 "pic.y"
{ (yyval.pth) = new path((yyvsp[(1) - (1)].crn)); }
break;
case 183:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1376 "pic.y"
{ (yyval.pth) = (yyvsp[(1) - (1)].pth); }
break;
case 184:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1378 "pic.y"
{
(yyval.pth) = (yyvsp[(1) - (2)].pth);
@@ -4336,14 +4366,14 @@ yyreduce:
case 185:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1386 "pic.y"
{ (yyval.pth) = (yyvsp[(1) - (1)].pth); }
break;
case 186:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1388 "pic.y"
{
(yyval.pth) = (yyvsp[(2) - (5)].pth);
@@ -4353,7 +4383,7 @@ yyreduce:
case 187:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1394 "pic.y"
{
lex_warning("`%1%2 last %3' in `with' argument ignored",
@@ -4364,7 +4394,7 @@ yyreduce:
case 188:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1400 "pic.y"
{
lex_warning("`last %1' in `with' argument ignored",
@@ -4375,7 +4405,7 @@ yyreduce:
case 189:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1406 "pic.y"
{
lex_warning("`%1%2 %3' in `with' argument ignored",
@@ -4386,7 +4416,7 @@ yyreduce:
case 190:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1412 "pic.y"
{
lex_warning("initial `%1' in `with' argument ignored", (yyvsp[(1) - (2)].str));
@@ -4397,252 +4427,252 @@ yyreduce:
case 191:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1421 "pic.y"
{ (yyval.crn) = &object::north; }
break;
case 192:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1423 "pic.y"
{ (yyval.crn) = &object::east; }
break;
case 193:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1425 "pic.y"
{ (yyval.crn) = &object::west; }
break;
case 194:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1427 "pic.y"
{ (yyval.crn) = &object::south; }
break;
case 195:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1429 "pic.y"
{ (yyval.crn) = &object::north_east; }
break;
case 196:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1431 "pic.y"
{ (yyval.crn) = &object:: south_east; }
break;
case 197:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1433 "pic.y"
{ (yyval.crn) = &object::north_west; }
break;
case 198:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1435 "pic.y"
{ (yyval.crn) = &object::south_west; }
break;
case 199:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1437 "pic.y"
{ (yyval.crn) = &object::center; }
break;
case 200:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1439 "pic.y"
{ (yyval.crn) = &object::start; }
break;
case 201:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1441 "pic.y"
{ (yyval.crn) = &object::end; }
break;
case 202:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1443 "pic.y"
{ (yyval.crn) = &object::north; }
break;
case 203:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1445 "pic.y"
{ (yyval.crn) = &object::south; }
break;
case 204:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1447 "pic.y"
{ (yyval.crn) = &object::west; }
break;
case 205:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1449 "pic.y"
{ (yyval.crn) = &object::east; }
break;
case 206:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1451 "pic.y"
{ (yyval.crn) = &object::north_west; }
break;
case 207:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1453 "pic.y"
{ (yyval.crn) = &object::south_west; }
break;
case 208:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1455 "pic.y"
{ (yyval.crn) = &object::north_east; }
break;
case 209:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1457 "pic.y"
{ (yyval.crn) = &object::south_east; }
break;
case 210:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1459 "pic.y"
{ (yyval.crn) = &object::west; }
break;
case 211:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1461 "pic.y"
{ (yyval.crn) = &object::east; }
break;
case 212:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1463 "pic.y"
{ (yyval.crn) = &object::north_west; }
break;
case 213:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1465 "pic.y"
{ (yyval.crn) = &object::south_west; }
break;
case 214:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1467 "pic.y"
{ (yyval.crn) = &object::north_east; }
break;
case 215:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1469 "pic.y"
{ (yyval.crn) = &object::south_east; }
break;
case 216:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1471 "pic.y"
{ (yyval.crn) = &object::north; }
break;
case 217:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1473 "pic.y"
{ (yyval.crn) = &object::south; }
break;
case 218:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1475 "pic.y"
{ (yyval.crn) = &object::east; }
break;
case 219:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1477 "pic.y"
{ (yyval.crn) = &object::west; }
break;
case 220:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1479 "pic.y"
{ (yyval.crn) = &object::center; }
break;
case 221:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1481 "pic.y"
{ (yyval.crn) = &object::start; }
break;
case 222:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1483 "pic.y"
{ (yyval.crn) = &object::end; }
break;
case 223:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1488 "pic.y"
{ (yyval.x) = (yyvsp[(1) - (1)].x); }
break;
case 224:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1490 "pic.y"
{ (yyval.x) = (yyvsp[(1) - (1)].x); }
break;
case 225:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1495 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) < (yyvsp[(3) - (3)].x)); }
break;
case 226:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1500 "pic.y"
{
if (!lookup_variable((yyvsp[(1) - (1)].str), & (yyval.x))) {
@@ -4655,14 +4685,14 @@ yyreduce:
case 227:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1508 "pic.y"
{ (yyval.x) = (yyvsp[(1) - (1)].x); }
break;
case 228:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1510 "pic.y"
{
if ((yyvsp[(1) - (2)].pl).obj != 0)
@@ -4674,7 +4704,7 @@ yyreduce:
case 229:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1517 "pic.y"
{
if ((yyvsp[(1) - (2)].pl).obj != 0)
@@ -4686,7 +4716,7 @@ yyreduce:
case 230:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1524 "pic.y"
{
if ((yyvsp[(1) - (2)].pl).obj != 0)
@@ -4698,7 +4728,7 @@ yyreduce:
case 231:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1531 "pic.y"
{
if ((yyvsp[(1) - (2)].pl).obj != 0)
@@ -4710,7 +4740,7 @@ yyreduce:
case 232:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1538 "pic.y"
{
if ((yyvsp[(1) - (2)].pl).obj != 0)
@@ -4722,28 +4752,28 @@ yyreduce:
case 233:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1545 "pic.y"
{ (yyval.x) = (yyvsp[(1) - (3)].x) + (yyvsp[(3) - (3)].x); }
break;
case 234:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1547 "pic.y"
{ (yyval.x) = (yyvsp[(1) - (3)].x) - (yyvsp[(3) - (3)].x); }
break;
case 235:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1549 "pic.y"
{ (yyval.x) = (yyvsp[(1) - (3)].x) * (yyvsp[(3) - (3)].x); }
break;
case 236:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1551 "pic.y"
{
if ((yyvsp[(3) - (3)].x) == 0.0) {
@@ -4756,7 +4786,7 @@ yyreduce:
case 237:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1559 "pic.y"
{
if ((yyvsp[(3) - (3)].x) == 0.0) {
@@ -4769,7 +4799,7 @@ yyreduce:
case 238:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1567 "pic.y"
{
errno = 0;
@@ -4787,21 +4817,21 @@ yyreduce:
case 239:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1580 "pic.y"
{ (yyval.x) = -(yyvsp[(2) - (2)].x); }
break;
case 240:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1582 "pic.y"
{ (yyval.x) = (yyvsp[(2) - (3)].x); }
break;
case 241:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1584 "pic.y"
{
errno = 0;
@@ -4815,7 +4845,7 @@ yyreduce:
case 242:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1593 "pic.y"
{
errno = 0;
@@ -4829,7 +4859,7 @@ yyreduce:
case 243:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1602 "pic.y"
{
errno = 0;
@@ -4847,7 +4877,7 @@ yyreduce:
case 244:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1615 "pic.y"
{
errno = 0;
@@ -4861,7 +4891,7 @@ yyreduce:
case 245:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1624 "pic.y"
{
errno = 0;
@@ -4875,7 +4905,7 @@ yyreduce:
case 246:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1633 "pic.y"
{
errno = 0;
@@ -4889,35 +4919,35 @@ yyreduce:
case 247:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1642 "pic.y"
{ (yyval.x) = (yyvsp[(3) - (6)].x) > (yyvsp[(5) - (6)].x) ? (yyvsp[(3) - (6)].x) : (yyvsp[(5) - (6)].x); }
break;
case 248:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1644 "pic.y"
{ (yyval.x) = (yyvsp[(3) - (6)].x) < (yyvsp[(5) - (6)].x) ? (yyvsp[(3) - (6)].x) : (yyvsp[(5) - (6)].x); }
break;
case 249:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1646 "pic.y"
{ (yyval.x) = (yyvsp[(3) - (4)].x) < 0 ? -floor(-(yyvsp[(3) - (4)].x)) : floor((yyvsp[(3) - (4)].x)); }
break;
case 250:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1648 "pic.y"
{ (yyval.x) = 1.0 + floor(((rand()&0x7fff)/double(0x7fff))*(yyvsp[(3) - (4)].x)); }
break;
case 251:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1650 "pic.y"
{
/* return a random number in the range [0,1) */
@@ -4928,7 +4958,7 @@ yyreduce:
case 252:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1656 "pic.y"
{
(yyval.x) = 0;
@@ -4938,66 +4968,77 @@ yyreduce:
case 253:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1661 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) <= (yyvsp[(3) - (3)].x)); }
break;
case 254:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1663 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) > (yyvsp[(3) - (3)].x)); }
break;
case 255:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1665 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) >= (yyvsp[(3) - (3)].x)); }
break;
case 256:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1667 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) == (yyvsp[(3) - (3)].x)); }
break;
case 257:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1669 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) != (yyvsp[(3) - (3)].x)); }
break;
case 258:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1671 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) != 0.0 && (yyvsp[(3) - (3)].x) != 0.0); }
break;
case 259:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1673 "pic.y"
{ (yyval.x) = ((yyvsp[(1) - (3)].x) != 0.0 || (yyvsp[(3) - (3)].x) != 0.0); }
break;
case 260:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 1675 "pic.y"
{ (yyval.x) = ((yyvsp[(2) - (2)].x) == 0.0); }
break;
-/* Line 1455 of yacc.c */
-#line 4999 "pic.cpp"
+/* Line 1806 of yacc.c */
+#line 5029 "pic.cpp"
default: break;
}
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
YYPOPSTACK (yylen);
@@ -5025,6 +5066,10 @@ yyreduce:
| yyerrlab -- here on detecting error |
`------------------------------------*/
yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
@@ -5032,37 +5077,36 @@ yyerrlab:
#if ! YYERROR_VERBOSE
yyerror (YY_("syntax error"));
#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
{
- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
- {
- YYSIZE_T yyalloc = 2 * yysize;
- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
- yyalloc = YYSTACK_ALLOC_MAXIMUM;
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yyalloc);
- if (yymsg)
- yymsg_alloc = yyalloc;
- else
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- }
- }
-
- if (0 < yysize && yysize <= yymsg_alloc)
- {
- (void) yysyntax_error (yymsg, yystate, yychar);
- yyerror (yymsg);
- }
- else
- {
- yyerror (YY_("syntax error"));
- if (yysize != 0)
- goto yyexhaustedlab;
- }
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == 1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ if (!yymsg)
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = 2;
+ }
+ else
+ {
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ yymsgp = yymsg;
+ }
+ }
+ yyerror (yymsgp);
+ if (yysyntax_error_status == 2)
+ goto yyexhaustedlab;
}
+# undef YYSYNTAX_ERROR
#endif
}
@@ -5121,7 +5165,7 @@ yyerrlab1:
for (;;)
{
yyn = yypact[yystate];
- if (yyn != YYPACT_NINF)
+ if (!yypact_value_is_default (yyn))
{
yyn += YYTERROR;
if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
@@ -5180,8 +5224,13 @@ yyexhaustedlab:
yyreturn:
if (yychar != YYEMPTY)
- yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval);
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ }
/* Do not reclaim the symbols of the rule which action triggered
this YYABORT or YYACCEPT. */
YYPOPSTACK (yylen);
@@ -5206,7 +5255,7 @@ yyreturn:
-/* Line 1675 of yacc.c */
+/* Line 2067 of yacc.c */
#line 1679 "pic.y"
diff --git a/src/preproc/pic/pic.man b/src/preproc/pic/pic.man
index 144f0a1..e845dd1 100644
--- a/src/preproc/pic/pic.man
+++ b/src/preproc/pic/pic.man
@@ -1,5 +1,5 @@
.ig
-Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2007, 2009
+Copyright (C) 1989-2004, 2007, 2009, 2011
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -924,7 +924,9 @@ Objects can have an
.B aligned
attribute.
This will only work if the postprocessor is
-.BR grops .
+.BR grops ,
+or
+.BR gropdf .
Any text associated with an object having the
.B aligned
attribute will be rotated about the center of the object
@@ -1033,6 +1035,16 @@ Call
for a list of the available devices.
.
.LP
+An alternative may be to use the
+.B \-Tpdf
+option to convert your picture directly into
+.B PDF
+format.
+The MediaBox of the file produced can be controlled by passing a
+.B \-P-p
+papersize to groff.
+.
+.LP
As the Encapsulated PostScript File Format
.B EPS
is getting more and more important, and the conversion wasn't regarded
@@ -1078,11 +1090,18 @@ macros.
.BR ps2epsi (1),
.BR pnm (5)
.LP
+Eric S. Raymond,
+.I Making Pictures With GNU PIC.
+.br
+@DOCDIR@/pic.ps (this file, together with its source file, pic.ms, is part
+of the groff documentation)
+.LP
Tpic: Pic for \*(tx
.LP
Brian W. Kernighan,
-PIC \(em A Graphics Language for Typesetting (User Manual).
+.I PIC \(em A Graphics Language for Typesetting (User Manual).
AT&T Bell Laboratories, Computing Science Technical Report No.\ 116
+.br
<http://cm.bell-labs.com/cm/cs/cstr/116.ps.gz>
(revised May, 1991).
.LP
@@ -1091,11 +1110,13 @@ is available from CTAN mirrors, e.g.
.br
<ftp://ftp.dante.de/tex-archive/support/ps2eps/>
.LP
-W. Richard Stevens - Turning PIC Into HTML
+W. Richard Stevens,
+.I Turning PIC Into HTML
.br
<http://www.kohala.com/start/troff/pic2html.html>
.LP
-W. Richard Stevens - Examples of picMacros
+W. Richard Stevens,
+.I Examples of picMacros
.br
<http://www.kohala.com/start/troff/pic.examples.ps>
.
diff --git a/src/preproc/pic/pic_tab.h b/src/preproc/pic/pic_tab.h
index ff398eb..b690815 100644
--- a/src/preproc/pic/pic_tab.h
+++ b/src/preproc/pic/pic_tab.h
@@ -1,10 +1,8 @@
+/* A Bison parser, made by GNU Bison 2.5. */
-/* A Bison parser, made by GNU Bison 2.4.1. */
-
-/* Skeleton interface for Bison's Yacc-like parsers in C
+/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -294,7 +292,7 @@
typedef union YYSTYPE
{
-/* Line 1676 of yacc.c */
+/* Line 2068 of yacc.c */
#line 67 "pic.y"
char *str;
@@ -316,8 +314,8 @@ typedef union YYSTYPE
-/* Line 1676 of yacc.c */
-#line 321 "y.tab.h"
+/* Line 2068 of yacc.c */
+#line 319 "y.tab.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
diff --git a/src/preproc/refer/label.cpp b/src/preproc/refer/label.cpp
index 6bbecfd..5af2f74 100644
--- a/src/preproc/refer/label.cpp
+++ b/src/preproc/refer/label.cpp
@@ -1,10 +1,8 @@
+/* A Bison parser, made by GNU Bison 2.5. */
-/* A Bison parser, made by GNU Bison 2.4.1. */
-
-/* Skeleton implementation for Bison's Yacc-like parsers in C
+/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -46,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "2.5"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -67,7 +65,7 @@
/* Copy the first part of user declarations. */
-/* Line 189 of yacc.c */
+/* Line 268 of yacc.c */
#line 21 "label.y"
@@ -269,8 +267,8 @@ string literals;
-/* Line 189 of yacc.c */
-#line 274 "label.cpp"
+/* Line 268 of yacc.c */
+#line 272 "label.cpp"
/* Enabling traces. */
#ifndef YYDEBUG
@@ -314,7 +312,7 @@ string literals;
typedef union YYSTYPE
{
-/* Line 214 of yacc.c */
+/* Line 293 of yacc.c */
#line 221 "label.y"
int num;
@@ -324,8 +322,8 @@ typedef union YYSTYPE
-/* Line 214 of yacc.c */
-#line 329 "label.cpp"
+/* Line 293 of yacc.c */
+#line 327 "label.cpp"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -336,8 +334,8 @@ typedef union YYSTYPE
/* Copy the second part of user declarations. */
-/* Line 264 of yacc.c */
-#line 341 "label.cpp"
+/* Line 343 of yacc.c */
+#line 339 "label.cpp"
#ifdef short
# undef short
@@ -387,7 +385,7 @@ typedef short int yytype_int16;
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -440,11 +438,11 @@ YYID (yyi)
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
# endif
# endif
# endif
@@ -467,24 +465,24 @@ YYID (yyi)
# ifndef YYSTACK_ALLOC_MAXIMUM
# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
# endif
-# if (defined __cplusplus && ! defined _STDLIB_H \
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
&& ! ((defined YYMALLOC || defined malloc) \
&& (defined YYFREE || defined free)))
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
# endif
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
-# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
-# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
@@ -513,23 +511,7 @@ union yyalloc
((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (YYID (0))
-# endif
-# endif
+# define YYCOPY_NEEDED 1
/* Relocate STACK from its old location to the new one. The
local variables YYSIZE and YYSTACKSIZE give the old and new number of
@@ -549,6 +531,26 @@ union yyalloc
#endif
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 21
/* YYLAST -- Last index in YYTABLE. */
@@ -680,8 +682,8 @@ static const yytype_uint8 yyr2[] =
1, 2, 0, 1, 1
};
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
@@ -720,8 +722,7 @@ static const yytype_int8 yypgoto[] =
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
- number is the opposite. If zero, do what YYDEFACT says.
- If YYTABLE_NINF, syntax error. */
+ number is the opposite. If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -1
static const yytype_uint8 yytable[] =
{
@@ -731,6 +732,12 @@ static const yytype_uint8 yytable[] =
24, 31, 32, 33, 34, 44, 45, 46, 0, 38
};
+#define yypact_value_is_default(yystate) \
+ ((yystate) == (-26))
+
+#define yytable_value_is_error(yytable_value) \
+ YYID (0)
+
static const yytype_int8 yycheck[] =
{
11, 5, 6, 28, 29, 3, 4, 13, 14, 15,
@@ -762,9 +769,18 @@ static const yytype_uint8 yystos[] =
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
+ Once GCC version 2 has supplanted version 1, this can go. However,
+ YYFAIL appears to be in use. Nevertheless, it is formally deprecated
+ in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+ discussed. */
#define YYFAIL goto yyerrlab
+#if defined YYFAIL
+ /* This is here to suppress warnings from the GCC cpp's
+ -Wunused-macros. Normally we don't worry about that warning, but
+ some users do, and we want to make it easy for users to remove
+ YYFAIL uses, which will produce warnings from Bison 2.5. */
+#endif
#define YYRECOVERING() (!!yyerrstatus)
@@ -774,7 +790,6 @@ do \
{ \
yychar = (Token); \
yylval = (Value); \
- yytoken = YYTRANSLATE (yychar); \
YYPOPSTACK (1); \
goto yybackup; \
} \
@@ -816,19 +831,10 @@ while (YYID (0))
#endif
-/* YY_LOCATION_PRINT -- Print the location on the stream.
- This macro was not mandated originally: define only if we know
- we won't break user code: when these are the locations we know. */
+/* This macro is provided for backward compatibility. */
#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-# define YY_LOCATION_PRINT(File, Loc) \
- fprintf (File, "%d.%d-%d.%d", \
- (Loc).first_line, (Loc).first_column, \
- (Loc).last_line, (Loc).last_column)
-# else
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
#endif
@@ -1020,7 +1026,6 @@ int yydebug;
# define YYMAXDEPTH 10000
#endif
-
#if YYERROR_VERBOSE
@@ -1123,115 +1128,142 @@ yytnamerr (char *yyres, const char *yystr)
}
# endif
-/* Copy into YYRESULT an error message about the unexpected token
- YYCHAR while in state YYSTATE. Return the number of bytes copied,
- including the terminating null byte. If YYRESULT is null, do not
- copy anything; just return the number of bytes that would be
- copied. As a special case, return 0 if an ordinary "syntax error"
- message will do. Return YYSIZE_MAXIMUM if overflow occurs during
- size calculation. */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
- int yyn = yypact[yystate];
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
- if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
- return 0;
- else
+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+{
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = 0;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ int yycount = 0;
+
+ /* There are many possibilities here to consider:
+ - Assume YYFAIL is not used. It's too flawed to consider. See
+ <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+ for details. YYERROR is fine as it does not invoke this
+ function.
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yytoken != YYEMPTY)
{
- int yytype = YYTRANSLATE (yychar);
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- int yysize_overflow = 0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- int yyx;
-
-# if 0
- /* This is so xgettext sees the translatable formats that are
- constructed on the fly. */
- YY_("syntax error, unexpected %s");
- YY_("syntax error, unexpected %s, expecting %s");
- YY_("syntax error, unexpected %s, expecting %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
- char *yyfmt;
- char const *yyf;
- static char const yyunexpected[] = "syntax error, unexpected %s";
- static char const yyexpecting[] = ", expecting %s";
- static char const yyor[] = " or %s";
- char yyformat[sizeof yyunexpected
- + sizeof yyexpecting - 1
- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
- * (sizeof yyor - 1))];
- char const *yyprefix = yyexpecting;
-
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
-
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yycount = 1;
-
- yyarg[0] = yytname[yytype];
- yyfmt = yystpcpy (yyformat, yyunexpected);
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- yyformat[sizeof yyunexpected - 1] = '\0';
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
- yyfmt = yystpcpy (yyfmt, yyprefix);
- yyprefix = yyor;
- }
+ int yyn = yypact[*yyssp];
+ yyarg[yycount++] = yytname[yytoken];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
- yyf = YY_(yyformat);
- yysize1 = yysize + yystrlen (yyf);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
+ switch (yycount)
+ {
+# define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+ }
- if (yysize_overflow)
- return YYSIZE_MAXIMUM;
+ yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
- if (yyresult)
- {
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- char *yyp = yyresult;
- int yyi = 0;
- while ((*yyp = *yyf) != '\0')
- {
- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyf += 2;
- }
- else
- {
- yyp++;
- yyf++;
- }
- }
- }
- return yysize;
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
}
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyformat += 2;
+ }
+ else
+ {
+ yyp++;
+ yyformat++;
+ }
+ }
+ return 0;
}
#endif /* YYERROR_VERBOSE */
-
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
@@ -1264,6 +1296,7 @@ yydestruct (yymsg, yytype, yyvaluep)
}
}
+
/* Prevent warnings from -Wmissing-prototypes. */
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
@@ -1290,10 +1323,9 @@ YYSTYPE yylval;
int yynerrs;
-
-/*-------------------------.
-| yyparse or yypush_parse. |
-`-------------------------*/
+/*----------.
+| yyparse. |
+`----------*/
#ifdef YYPARSE_PARAM
#if (defined __STDC__ || defined __C99__FUNC__ \
@@ -1317,8 +1349,6 @@ yyparse ()
#endif
#endif
{
-
-
int yystate;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
@@ -1473,7 +1503,7 @@ yybackup:
/* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
- if (yyn == YYPACT_NINF)
+ if (yypact_value_is_default (yyn))
goto yydefault;
/* Not known => get a lookahead token if don't already have one. */
@@ -1504,8 +1534,8 @@ yybackup:
yyn = yytable[yyn];
if (yyn <= 0)
{
- if (yyn == 0 || yyn == YYTABLE_NINF)
- goto yyerrlab;
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
@@ -1560,98 +1590,98 @@ yyreduce:
{
case 2:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 250 "label.y"
{ parse_result = ((yyvsp[(1) - (1)].expr) ? new analyzed_expr((yyvsp[(1) - (1)].expr)) : 0); }
break;
case 3:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 255 "label.y"
{ (yyval.expr) = (yyvsp[(1) - (1)].expr); }
break;
case 4:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 257 "label.y"
{ (yyval.expr) = new conditional_expr((yyvsp[(1) - (5)].expr), (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].expr)); }
break;
case 5:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 262 "label.y"
{ (yyval.expr) = 0; }
break;
case 6:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 264 "label.y"
{ (yyval.expr) = (yyvsp[(1) - (1)].expr); }
break;
case 7:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 269 "label.y"
{ (yyval.expr) = (yyvsp[(1) - (1)].expr); }
break;
case 8:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 271 "label.y"
{ (yyval.expr) = new alternative_expr((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
break;
case 9:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 273 "label.y"
{ (yyval.expr) = new conditional_expr((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr), 0); }
break;
case 10:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 278 "label.y"
{ (yyval.expr) = (yyvsp[(1) - (1)].expr); }
break;
case 11:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 280 "label.y"
{ (yyval.expr) = new list_expr((yyvsp[(1) - (2)].expr), (yyvsp[(2) - (2)].expr)); }
break;
case 12:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 285 "label.y"
{ (yyval.expr) = (yyvsp[(1) - (1)].expr); }
break;
case 13:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 287 "label.y"
{ (yyval.expr) = new substitute_expr((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
break;
case 14:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 292 "label.y"
{ (yyval.expr) = new at_expr; }
break;
case 15:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 294 "label.y"
{
(yyval.expr) = new literal_expr(literals.contents() + (yyvsp[(1) - (1)].str).start,
@@ -1661,21 +1691,21 @@ yyreduce:
case 16:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 299 "label.y"
{ (yyval.expr) = new field_expr((yyvsp[(1) - (1)].num), 0); }
break;
case 17:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 301 "label.y"
{ (yyval.expr) = new field_expr((yyvsp[(1) - (2)].num), (yyvsp[(2) - (2)].num) - 1); }
break;
case 18:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 303 "label.y"
{
switch ((yyvsp[(2) - (2)].num)) {
@@ -1695,7 +1725,7 @@ yyreduce:
case 19:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 319 "label.y"
{
(yyval.expr) = new format_expr('0', (yyvsp[(2) - (2)].dig).ndigits, (yyvsp[(2) - (2)].dig).val);
@@ -1704,7 +1734,7 @@ yyreduce:
case 20:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 323 "label.y"
{
switch ((yyvsp[(4) - (5)].num)) {
@@ -1739,108 +1769,119 @@ yyreduce:
case 21:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 354 "label.y"
{ (yyval.expr) = new truncate_expr((yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].num)); }
break;
case 22:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 356 "label.y"
{ (yyval.expr) = new truncate_expr((yyvsp[(1) - (3)].expr), -(yyvsp[(3) - (3)].num)); }
break;
case 23:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 358 "label.y"
{ (yyval.expr) = new star_expr((yyvsp[(1) - (2)].expr)); }
break;
case 24:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 360 "label.y"
{ (yyval.expr) = (yyvsp[(2) - (3)].expr); }
break;
case 25:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 362 "label.y"
{ (yyval.expr) = new separator_expr((yyvsp[(2) - (3)].expr)); }
break;
case 26:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 367 "label.y"
{ (yyval.num) = -1; }
break;
case 27:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 369 "label.y"
{ (yyval.num) = (yyvsp[(1) - (1)].num); }
break;
case 28:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 374 "label.y"
{ (yyval.num) = (yyvsp[(1) - (1)].num); }
break;
case 29:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 376 "label.y"
{ (yyval.num) = (yyvsp[(1) - (2)].num)*10 + (yyvsp[(2) - (2)].num); }
break;
case 30:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 381 "label.y"
{ (yyval.dig).ndigits = 1; (yyval.dig).val = (yyvsp[(1) - (1)].num); }
break;
case 31:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 383 "label.y"
{ (yyval.dig).ndigits = (yyvsp[(1) - (2)].dig).ndigits + 1; (yyval.dig).val = (yyvsp[(1) - (2)].dig).val*10 + (yyvsp[(2) - (2)].num); }
break;
case 32:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 389 "label.y"
{ (yyval.num) = 0; }
break;
case 33:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 391 "label.y"
{ (yyval.num) = 1; }
break;
case 34:
-/* Line 1455 of yacc.c */
+/* Line 1806 of yacc.c */
#line 393 "label.y"
{ (yyval.num) = -1; }
break;
-/* Line 1455 of yacc.c */
-#line 1842 "label.cpp"
+/* Line 1806 of yacc.c */
+#line 1872 "label.cpp"
default: break;
}
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
YYPOPSTACK (yylen);
@@ -1868,6 +1909,10 @@ yyreduce:
| yyerrlab -- here on detecting error |
`------------------------------------*/
yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
@@ -1875,37 +1920,36 @@ yyerrlab:
#if ! YYERROR_VERBOSE
yyerror (YY_("syntax error"));
#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
{
- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
- {
- YYSIZE_T yyalloc = 2 * yysize;
- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
- yyalloc = YYSTACK_ALLOC_MAXIMUM;
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yyalloc);
- if (yymsg)
- yymsg_alloc = yyalloc;
- else
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- }
- }
-
- if (0 < yysize && yysize <= yymsg_alloc)
- {
- (void) yysyntax_error (yymsg, yystate, yychar);
- yyerror (yymsg);
- }
- else
- {
- yyerror (YY_("syntax error"));
- if (yysize != 0)
- goto yyexhaustedlab;
- }
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == 1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ if (!yymsg)
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = 2;
+ }
+ else
+ {
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ yymsgp = yymsg;
+ }
+ }
+ yyerror (yymsgp);
+ if (yysyntax_error_status == 2)
+ goto yyexhaustedlab;
}
+# undef YYSYNTAX_ERROR
#endif
}
@@ -1964,7 +2008,7 @@ yyerrlab1:
for (;;)
{
yyn = yypact[yystate];
- if (yyn != YYPACT_NINF)
+ if (!yypact_value_is_default (yyn))
{
yyn += YYTERROR;
if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
@@ -2023,8 +2067,13 @@ yyexhaustedlab:
yyreturn:
if (yychar != YYEMPTY)
- yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval);
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ }
/* Do not reclaim the symbols of the rule which action triggered
this YYABORT or YYACCEPT. */
YYPOPSTACK (yylen);
@@ -2049,7 +2098,7 @@ yyreturn:
-/* Line 1675 of yacc.c */
+/* Line 2067 of yacc.c */
#line 396 "label.y"
diff --git a/src/preproc/refer/refer.man b/src/preproc/refer/refer.man
index 861b592..b7ef676 100644
--- a/src/preproc/refer/refer.man
+++ b/src/preproc/refer/refer.man
@@ -76,12 +76,6 @@ the original English.
.br
.ad \na
.
-.LP
-It is possible to have whitespace between a command line option and its
-parameter.
-.
-.
-.
.SH DESCRIPTION
This file documents the GNU version of
.BR refer ,
@@ -188,6 +182,10 @@ preprocessed by a command such as
.SH OPTIONS
.
.LP
+It is possible to have whitespace between a command line option and its
+parameter.
+.
+.LP
Most options are equivalent to commands
(for a description of these commands see the
.B Commands
diff --git a/src/preproc/tbl/table.cpp b/src/preproc/tbl/table.cpp
index e1b8c3f..9a7789c 100644
--- a/src/preproc/tbl/table.cpp
+++ b/src/preproc/tbl/table.cpp
@@ -1,6 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2003, 2004, 2007, 2008,
- 2009, 2010
+/* Copyright (C) 1989-1992, 2000, 2003, 2004, 2007-2011
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -59,6 +58,11 @@ const int DEFAULT_COLUMN_SEPARATION = 3;
#define REPEATED_VPT_MACRO PREFIX "rvpt"
#define SUPPRESS_BOTTOM_REG PREFIX "supbot"
#define SAVED_DN_REG PREFIX "dn"
+#define ROW_START_LINE_REG PREFIX "lnst"
+#define ROW_SAVE_LINE_REG PREFIX "lnsv"
+#define ROW_MAX_LINE_REG PREFIX "lnmx"
+#define REPEATED_NM_SET_MACRO PREFIX "rlns"
+#define REPEATED_NM_SUS_MACRO PREFIX "rlnx"
// this must be one character
#define COMPATIBLE_REG PREFIX "c"
@@ -1780,6 +1784,31 @@ void table::init_output()
".de " REPEATED_VPT_MACRO "\n"
".vpt \\$1\n"
".if !'\\n(.z'' \\!." REPEATED_VPT_MACRO " \"\\$1\"\n"
+ "..\n"
+ ".de " REPEATED_NM_SET_MACRO "\n"
+ ".ie !'\\n(.z'' \\{.nm\n"
+ "\\!." REPEATED_NM_SET_MACRO " \"\\$1\"\n"
+ ".\\}\n"
+ ".el .if \\n[ln] \\{\\\n"
+ ".if '\\$1'd' .nr " ROW_START_LINE_REG " \\n[ln]\n"
+ ".if '\\$1's' .nm \\n[" ROW_START_LINE_REG "]\n"
+ ".if '\\$1'm' .nr " ROW_MAX_LINE_REG " \\n[ln]>?\\n[" ROW_MAX_LINE_REG "]\n"
+ ".\\}\n"
+ "..\n"
+ ".de " REPEATED_NM_SUS_MACRO "\n"
+ ".ie !'\\n(.z'' \\{.nm\n"
+ "\\!." REPEATED_NM_SUS_MACRO " \"\\$1\"\n"
+ ".\\}\n"
+ ".el .if \\n[ln] \\{\\\n"
+ ".ie '\\$1's' \\{\\\n"
+ ".nr " ROW_SAVE_LINE_REG " \\n(ln<?\\n[" ROW_MAX_LINE_REG "]\n"
+ ".nm +0 \\n[ln]+42\n"
+ ".\\}\n"
+ ".el \\{\\\n"
+ ".nr ln \\n[" ROW_SAVE_LINE_REG "]\n"
+ ".nm \\n[ln] 1\n"
+ ".\\}\n"
+ ".\\}\n"
"..\n");
if (!(flags & NOKEEP))
prints(".de " KEEP_MACRO_NAME "\n"
@@ -1790,6 +1819,12 @@ void table::init_output()
".in 0\n"
".\\}\n"
"..\n"
+ // protect # in macro name against eqn
+ ".ig\n"
+ ".EQ\n"
+ "delim off\n"
+ ".EN\n"
+ "..\n"
".de " RELEASE_MACRO_NAME "\n"
".if \\n[" SECTION_DIVERSION_FLAG_REG "] \\{"
".di\n"
@@ -1812,12 +1847,20 @@ void table::init_output()
page. */
".tm warning: page \\n%: table text block will not fit on one page\n"
".nf\n"
+ ".if \\n[ln] .nm \\n[ln]\n"
+ ".nr " ROW_MAX_LINE_REG " \\n[ln]\n"
".ls 1\n"
"." SECTION_DIVERSION_NAME "\n"
".ls\n"
+ ".if \\n[ln] .nm\n"
".rm " SECTION_DIVERSION_NAME "\n"
".\\}\n"
"..\n"
+ ".ig\n"
+ ".EQ\n"
+ "delim on\n"
+ ".EN\n"
+ "..\n"
".nr " TABLE_DIVERSION_FLAG_REG " 0\n"
".de " TABLE_KEEP_MACRO_NAME "\n"
".if '\\n[.z]'' \\{"
@@ -1836,10 +1879,14 @@ void table::init_output()
".in 0\n"
".ls 1\n"
".nf\n"
+ ".if \\n[ln] .nm \\n[ln]\n"
"." TABLE_DIVERSION_NAME "\n"
".\\}\n"
".rm " TABLE_DIVERSION_NAME "\n"
".\\}\n"
+ ".if \\n[ln] \\{.nm\n"
+ ".nr ln \\n[" ROW_MAX_LINE_REG "]\n"
+ ".\\}\n"
"..\n");
prints(".ec\n"
".ce 0\n"
@@ -2077,12 +2124,24 @@ void table::compute_expand_width()
if (total_separation)
printfs("-%1n", as_string(total_separation));
prints("\n");
- prints(".if \\n[" EXPAND_REG "]<0 \\{");
+ prints(".if \\n[" EXPAND_REG "]<0 \\{\\\n");
entry_list->set_location();
- if (!(flags & NOWARN))
+ if (!(flags & NOWARN)) {
+ // protect ` and ' in warning message against eqn
+ prints(".ig\n"
+ ".EQ\n"
+ "delim off\n"
+ ".EN\n"
+ "..\n");
prints(".tm1 \"warning: file `\\n[.F]', around line \\n[.c]:\n"
- ".tm1 \" table wider than line width\n"
- ".nr " EXPAND_REG " 0\n");
+ ".tm1 \" table wider than line width\n");
+ prints(".ig\n"
+ ".EQ\n"
+ "delim on\n"
+ ".EN\n"
+ "..\n");
+ prints(".nr " EXPAND_REG " 0\n");
+ }
prints(".\\}\n");
if (colcount > 1)
printfs(".nr " EXPAND_REG " \\n[" EXPAND_REG "]/%1\n",
@@ -2117,18 +2176,31 @@ void table::compute_separation_factor()
for (int i = 0; i < ncolumns; i++)
printfs("-\\n[%1]", span_width_reg(i, i));
printfs("/%1\n", as_string(total_separation));
- prints(".ie \\n[" SEPARATION_FACTOR_REG "]<=0 \\{");
+ prints(".ie \\n[" SEPARATION_FACTOR_REG "]<=0 \\{\\\n");
entry_list->set_location();
- if (!(flags & NOWARN))
+ if (!(flags & NOWARN)) {
+ // protect ` and ' in warning message against eqn
+ prints(".ig\n"
+ ".EQ\n"
+ "delim off\n"
+ ".EN\n"
+ "..\n");
prints(".tm1 \"warning: file `\\n[.F]', around line \\n[.c]:\n"
".tm1 \" column separation set to zero\n"
".nr " SEPARATION_FACTOR_REG " 0\n");
+ }
prints(".\\}\n"
- ".el .if \\n[" SEPARATION_FACTOR_REG "]<1n \\{");
+ ".el .if \\n[" SEPARATION_FACTOR_REG "]<1n \\{\\\n");
entry_list->set_location();
- if (!(flags & NOWARN))
+ if (!(flags & NOWARN)) {
prints(".tm1 \"warning: file `\\n[.F]', around line \\n[.c]:\n"
".tm1 \" table squeezed horizontally to fit line length\n");
+ prints(".ig\n"
+ ".EQ\n"
+ "delim on\n"
+ ".EN\n"
+ "..\n");
+ }
prints(".\\}\n");
}
@@ -2268,6 +2340,7 @@ void table::print_single_hline(int r)
{
prints(".vs " LINE_SEP ">?\\n[.V]u\n"
".ls 1\n"
+ "." REPEATED_NM_SUS_MACRO " s\n"
"\\v'" BODY_DEPTH "'"
"\\s[\\n[" LINESIZE_REG "]]");
if (r > nrows - 1)
@@ -2304,7 +2377,8 @@ void table::print_single_hline(int r)
}
}
prints("\\s0\n");
- prints(".ls\n"
+ prints("." REPEATED_NM_SUS_MACRO " r\n"
+ ".ls\n"
".vs\n");
}
@@ -2313,6 +2387,7 @@ void table::print_double_hline(int r)
prints(".vs " LINE_SEP "+" DOUBLE_LINE_SEP
">?\\n[.V]u\n"
".ls 1\n"
+ "." REPEATED_NM_SUS_MACRO " s\n"
"\\v'" BODY_DEPTH "'"
"\\s[\\n[" LINESIZE_REG "]]");
if (r > nrows - 1)
@@ -2371,6 +2446,7 @@ void table::print_double_hline(int r)
}
}
prints("\\s0\n"
+ "." REPEATED_NM_SUS_MACRO " r\n"
".ls\n"
".vs\n");
}
@@ -2562,6 +2638,12 @@ void table::build_vrule_list()
void table::define_bottom_macro()
{
prints(".eo\n"
+ // protect # in macro name against eqn
+ ".ig\n"
+ ".EQ\n"
+ "delim off\n"
+ ".EN\n"
+ "..\n"
".de T#\n"
".if !\\n[" SUPPRESS_BOTTOM_REG "] \\{"
"." REPEATED_VPT_MACRO " 0\n"
@@ -2571,7 +2653,8 @@ void table::define_bottom_macro()
print_single_hline(0);
prints(".\\}\n");
}
- prints(".ls 1\n");
+ prints("." REPEATED_NM_SUS_MACRO " s\n"
+ ".ls 1\n");
for (vertical_rule *p = vrule_list; p; p = p->next)
p->contribute_to_bottom_macro(this);
if (flags & DOUBLEBOX)
@@ -2588,12 +2671,18 @@ void table::define_bottom_macro()
".sp -1\n"
"\\v'" BODY_DEPTH "'\\h'|\\n[TW]u'\\s[\\n[" LINESIZE_REG "]]"
"\\D'l 0 |\\n[" TOP_REG "]u-1v'\\s0\n");
- prints(".ls\n");
+ prints("." REPEATED_NM_SUS_MACRO " r\n"
+ ".ls\n");
prints(".nr " LAST_PASSED_ROW_REG " \\n[" CURRENT_ROW_REG "]\n"
".sp |\\n[" SAVED_VERTICAL_POS_REG "]u\n"
"." REPEATED_VPT_MACRO " 1\n"
".\\}\n"
"..\n"
+ ".ig\n"
+ ".EQ\n"
+ "delim on\n"
+ ".EN\n"
+ "..\n"
".ec\n");
}
@@ -2659,6 +2748,8 @@ void table::do_row(int r)
// we might have had a .TH, for example, since we last tried
if (!(flags & NOKEEP) && row_begins_section(r))
prints("." KEEP_MACRO_NAME "\n");
+ prints("." REPEATED_NM_SET_MACRO " d\n"
+ ".nr " ROW_MAX_LINE_REG " \\n[ln]\n");
printfs(".mk %1\n", row_start_reg(r));
prints(".mk " BOTTOM_REG "\n"
"." REPEATED_VPT_MACRO " 0\n");
@@ -2755,6 +2846,7 @@ void table::do_row(int r)
table_entry *e = entry[r][c];
if (e) {
if (e->end_row == r && e->to_simple_entry() == 0) {
+ prints("." REPEATED_NM_SET_MACRO " s\n");
e->position_vertically();
e->print();
prints(".nr " BOTTOM_REG " \\n[" BOTTOM_REG "]>?\\n[.d]\n");
@@ -2763,7 +2855,8 @@ void table::do_row(int r)
c = e->end_col;
}
}
- prints("." REPEATED_VPT_MACRO " 1\n"
+ prints("." REPEATED_NM_SET_MACRO " m\n"
+ "." REPEATED_VPT_MACRO " 1\n"
".sp |\\n[" BOTTOM_REG "]u\n"
"\\*[" TRANSPARENT_STRING_NAME "].nr " NEED_BOTTOM_RULE_REG " 1\n");
if (r != nrows - 1 && (flags & ALLBOX)) {
@@ -2791,6 +2884,7 @@ void table::do_row(int r)
if (!(flags & NOKEEP) && row_ends_section(r))
prints("." RELEASE_MACRO_NAME "\n");
}
+ prints(".if \\n[ln] .nr ln \\n[" ROW_MAX_LINE_REG "]\n");
}
void table::do_top()
@@ -2799,7 +2893,8 @@ void table::do_top()
if (!(flags & NOKEEP) && (flags & (BOX | DOUBLEBOX | ALLBOX)))
prints("." TABLE_KEEP_MACRO_NAME "\n");
if (flags & DOUBLEBOX) {
- prints(".ls 1\n"
+ prints("." REPEATED_NM_SUS_MACRO " s\n"
+ ".ls 1\n"
".vs " LINE_SEP ">?\\n[.V]u\n"
"\\v'" BODY_DEPTH "'\\s[\\n[" LINESIZE_REG "]]\\D'l \\n[TW]u 0'\\s0\n"
".vs\n"
@@ -2813,7 +2908,8 @@ void table::do_top()
"\n",
column_divide_reg(0),
column_divide_reg(ncolumns));
- prints(".ls\n"
+ prints("." REPEATED_NM_SUS_MACRO " r\n"
+ ".ls\n"
".vs\n");
}
else if (flags & (ALLBOX | BOX)) {
@@ -2833,9 +2929,24 @@ void table::do_bottom()
printfs(".mk %1\n", row_top_reg(nrows));
prints(".nr " NEED_BOTTOM_RULE_REG " 1\n"
".nr T. 1\n"
- ".T#\n");
+ // protect # in macro name against eqn
+ ".ig\n"
+ ".EQ\n"
+ "delim off\n"
+ ".EN\n"
+ "..\n"
+ ".T#\n"
+ ".ig\n"
+ ".EQ\n"
+ "delim on\n"
+ ".EN\n"
+ "..\n");
if (!(flags & NOKEEP) && (flags & (BOX | DOUBLEBOX | ALLBOX)))
prints("." TABLE_RELEASE_MACRO_NAME "\n");
+ else
+ prints(".if \\n[ln] \\{.nm\n"
+ ".nr ln \\n[" ROW_MAX_LINE_REG "]\n"
+ ".\\}\n");
if (flags & DOUBLEBOX)
prints(".sp " DOUBLE_LINE_SEP "\n");
prints("." RESET_MACRO_NAME "\n"
diff --git a/src/preproc/tbl/tbl.man b/src/preproc/tbl/tbl.man
index 879143f..9c7be49 100644
--- a/src/preproc/tbl/tbl.man
+++ b/src/preproc/tbl/tbl.man
@@ -1,7 +1,6 @@
'\" t
.ig
-Copyright (C) 1989-1995, 2001, 2002, 2003, 2004, 2006, 2007, 2008,
- 2009, 2010
+Copyright (C) 1989-1995, 2001-2004, 2006-2013
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -361,11 +360,15 @@ Not allowed for the first row.
.TP
.BR _ , -
Replace this entry with a horizontal line.
+Note that `_' and `-' can be used for table fields only,
+not for column separator lines.
.
.TP
.B =
.
Replace this entry with a double horizontal line.
+Note that `=' can be used for table fields only,
+not for column separator lines.
.
.TP
.B |
@@ -398,8 +401,63 @@ Short form of
.
.TP
.BR d , D
-Start an item vertically spanning rows at the bottom of its range rather
+Start an item that vertically spans rows,
+using the `^' column specifier or `\[rs]^' data item,
+at the bottom of its range rather
than vertically centering it (GNU tbl only).
+Example:
+.RS
+.IP
+.EX
+\&.TS
+\&tab(;) allbox;
+\&l l
+\&l ld
+\&r ^
+\&l rd.
+\&0000;foobar
+\&T{
+\&1111
+\&.br
+\&2222
+\&T};foo
+\&r;
+\&T{
+\&3333
+\&.br
+\&4444
+\&T};bar
+\&\[rs]^;\[rs]^
+\&.TE
+.EE
+.RE
+.
+.IP
+Result:
+.
+.RS
+.IP
+.TS
+tab(;) allbox;
+l l
+l ld
+r ^
+l rd.
+0000;foobar
+T{
+1111
+.br
+2222
+T};foo
+r;
+T{
+3333
+.br
+4444
+T};bar
+\^;\^
+.TE
+.RE
.
.TP
.BR e , E
@@ -478,7 +536,7 @@ No effect if the corresponding table entry isn't a text block.
.
.TP
.BR w , W
-Minimal column width value.
+Minimum column width value.
Must be followed either by a
.BR @g@troff (@MAN1EXT@)
width expression in parentheses or a unitless integer.
@@ -684,16 +742,6 @@ should always be called before
.RB ( groff (@MAN1EXT@)
automatically takes care of the correct order of preprocessors).
.
-.LP
-It is not advisable to use the hash character (#) as a delimiter for in-line
-equations in
-.BR @g@eqn (@MAN1EXT@)
-since
-.B @g@tbl
-uses a macro called
-.BR .T# ,
-causing a clash.
-.
.
.SH "GNU TBL ENHANCEMENTS"
There is no limit on the number of columns in a table, nor any limit on the
@@ -815,6 +863,48 @@ this:
.EE
.
.
+.LP
+A leading and/or trailing `|' in a format line, such as
+.
+.IP
+.EX
+|l r|.
+.EE
+.
+.LP
+gives output which has a 1n\~space between the resulting
+bordering vertical rule and the content of the adjacent column,
+as in
+.
+.IP
+.EX
+\&.TS
+\&tab(#);
+\&|l r|.
+\&left column#right column
+\&.TE
+.EE
+.
+.LP
+If it is desired to have zero space (so that the rule touches
+the content), this can be achieved by introducing extra \[lq]dummy\[rq]
+columns, with no content and zero separation, before and/or after,
+as in
+.
+.IP
+.EX
+\&.TS
+\&tab(#);
+\&r0|l r0|l.
+\&#left column#right column#
+\&.TE
+.EE
+.
+.LP
+The resulting \[lq]dummy\[rq] columns are invisible and have zero width;
+note that such columns usually don't work with TTY devices.
+.
+.
.SH REFERENCE
Lesk, M.E.: "TBL \[en] A Program to Format Tables".
For copyright reasons it cannot be included in the groff distribution,
diff --git a/src/roff/groff/Makefile.sub b/src/roff/groff/Makefile.sub
index 798f2d8..c0ea081 100644
--- a/src/roff/groff/Makefile.sub
+++ b/src/roff/groff/Makefile.sub
@@ -1,6 +1,6 @@
PROG=groff$(EXEEXT)
MAN1=groff.n
-XLIBS=$(LIBGROFF)
+XLIBS=$(LIBGROFF) $(LIBGNU)
MLIB=$(LIBM)
OBJS=groff.$(OBJEXT) pipeline.$(OBJEXT)
CCSRCS=$(srcdir)/groff.cpp
diff --git a/src/roff/groff/groff.cpp b/src/roff/groff/groff.cpp
index 7921d1d..cbc1384 100644
--- a/src/roff/groff/groff.cpp
+++ b/src/roff/groff/groff.cpp
@@ -1,6 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010
+/* Copyright (C) 1989-2012
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -51,11 +50,15 @@ extern "C" {
#endif /* NEED_DECLARATION_PUTENV */
// The number of commands must be in sync with MAX_COMMANDS in pipeline.h
+
+// grap and chem must come before pic;
+// tbl must come before eqn
const int PRECONV_INDEX = 0;
const int SOELIM_INDEX = PRECONV_INDEX + 1;
const int REFER_INDEX = SOELIM_INDEX + 1;
const int GRAP_INDEX = REFER_INDEX + 1;
-const int PIC_INDEX = GRAP_INDEX + 1;
+const int CHEM_INDEX = GRAP_INDEX + 1;
+const int PIC_INDEX = CHEM_INDEX + 1;
const int TBL_INDEX = PIC_INDEX + 1;
const int GRN_INDEX = TBL_INDEX + 1;
const int EQN_INDEX = GRN_INDEX + 1;
@@ -122,6 +125,7 @@ int main(int argc, char **argv)
int safer_flag = 1;
int is_xhtml = 0;
int eflag = 0;
+ int need_pic = 0;
int opt;
const char *command_prefix = getenv("GROFF_COMMAND_PREFIX");
const char *encoding = getenv("GROFF_ENCODING");
@@ -135,7 +139,7 @@ int main(int argc, char **argv)
};
while ((opt = getopt_long(
argc, argv,
- "abcCd:D:eEf:F:gGhiI:lkK:L:m:M:n:No:pP:r:RsStT:UvVw:W:XzZ",
+ "abcCd:D:eEf:F:gGhiI:jkK:lL:m:M:n:No:pP:r:RsStT:UvVw:W:XzZ",
long_options, NULL))
!= EOF) {
char buf[3];
@@ -170,6 +174,10 @@ int main(int argc, char **argv)
case 't':
commands[TBL_INDEX].set_name(command_prefix, "tbl");
break;
+ case 'j':
+ commands[CHEM_INDEX].set_name(command_prefix, "chem");
+ need_pic = 1;
+ break;
case 'p':
commands[PIC_INDEX].set_name(command_prefix, "pic");
break;
@@ -178,6 +186,7 @@ int main(int argc, char **argv)
break;
case 'G':
commands[GRAP_INDEX].set_name(command_prefix, "grap");
+ need_pic = 1;
break;
case 'e':
eflag = 1;
@@ -206,7 +215,7 @@ int main(int argc, char **argv)
vflag = 1;
printf("GNU groff version %s\n", Version_string);
printf(
- "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+ "Copyright (C) 2013 Free Software Foundation, Inc.\n"
"GNU groff comes with ABSOLUTELY NO WARRANTY.\n"
"You may redistribute copies of groff and its subprograms\n"
"under the terms of the GNU General Public License.\n"
@@ -259,7 +268,6 @@ int main(int argc, char **argv)
if (strcmp(optarg, "html") == 0)
// force soelim to aid the html preprocessor
commands[SOELIM_INDEX].set_name(command_prefix, "soelim");
-
if (strcmp(optarg, "Xps") == 0) {
warning("-TXps option is obsolete: use -X -Tps instead");
device = "ps";
@@ -313,6 +321,8 @@ int main(int argc, char **argv)
break;
}
}
+ if (need_pic)
+ commands[PIC_INDEX].set_name(command_prefix, "pic");
if (encoding) {
commands[PRECONV_INDEX].set_name("preconv");
if (!Kflag && *encoding)
@@ -745,7 +755,7 @@ char **possible_command::get_argv()
void synopsis(FILE *stream)
{
fprintf(stream,
-"usage: %s [-abceghiklpstvzCENRSUVXZ] [-Fdir] [-mname] [-Tdev] [-ffam]\n"
+"usage: %s [-abceghijklpstvzCENRSUVXZ] [-Fdir] [-mname] [-Tdev] [-ffam]\n"
" [-wname] [-Wname] [-Mdir] [-dcs] [-rcn] [-nnum] [-olist] [-Parg]\n"
" [-Darg] [-Karg] [-Larg] [-Idir] [files...]\n",
program_name);
@@ -762,6 +772,7 @@ void help()
"-e\tpreprocess with eqn\n"
"-g\tpreprocess with grn\n"
"-G\tpreprocess with grap\n"
+"-j\tpreprocess with chem\n"
"-s\tpreprocess with soelim\n"
"-R\tpreprocess with refer\n"
"-Tdev\tuse device dev\n"
diff --git a/src/roff/groff/groff.man b/src/roff/groff/groff.man
index 38ebbb0..262ad2d 100644
--- a/src/roff/groff/groff.man
+++ b/src/roff/groff/groff.man
@@ -1,9 +1,9 @@
.ig
groff.man
-Copyright (C) 1989, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+Copyright (C) 1989, 2002-2009, 2011
Free Software Foundation, Inc.
-Rewritten in 2002 by Bernd Warken <bwarken@mayn.de>
+Rewritten in 2002 by Bernd Warken <groff-bernd.warken-72@web.de>
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -44,7 +44,7 @@ groff \- front-end for the groff document formatting system
.\" --------------------------------------------------------------------
.
.SY groff
-.OP \-abcegiklpstzCEGNRSUVXZ
+.OP \-abcegijklpstzCEGNRSUVXZ
.OP \-d cs
.OP \-D arg
.OP \-f fam
@@ -187,6 +187,9 @@ Preprocess with
Preprocess with
.BR grap .
.
+Implies
+.BR \-p .
+.
.
.TP
.B \-h
@@ -217,6 +220,15 @@ option.
.
.
.TP
+.B \-j
+Preprocess with
+.BR @g@chem .
+.
+Implies
+.BR \-p .
+.
+.
+.TP
.B \-k
Preprocess with
.BR preconv .
@@ -444,6 +456,11 @@ is
ps
PostScript output (postprocessor is
.BR grops ).
+.
+.TP
+pdf
+Portable Document Format (PDF) output (postprocessor is
+.BR gropdf ).
.RE
.RE
.
@@ -1094,6 +1111,13 @@ PostScript output; suitable for printers and previewers like
.BR gv (1).
.
.TP
+.B pdf
+PDF files; suitable for viewing with tools such as
+.BR evince (1)
+and
+.BR okular (1).
+.
+.TP
.B utf8
Text output using the Unicode (ISO 10646) character set with \%UTF-8
encoding; see
@@ -1183,6 +1207,10 @@ for HTML and XHTML formats,
.BR grops (@MAN1EXT@)
for PostScript.
.
+.TP
+.BR gropdf (@MAN1EXT@)
+for PDF.
+.
.P
Combined with the many existing free conversion tools this should
be sufficient to convert a
@@ -1713,7 +1741,7 @@ This is the only grap version supported by
.SH AUTHORS
.\" --------------------------------------------------------------------
.
-Copyright \(co 1989, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+Copyright \(co 2011
Free Software Foundation, Inc.
.
.P
@@ -1735,7 +1763,7 @@ James Clark
.UE .
.
It was rewritten, enhanced, and put under the FDL license by
-Bernd Warken.
+Bernd Warken <groff-bernd.warken-72@web.de>.
.
It is maintained by
.MT wl@gnu.org
@@ -1833,6 +1861,7 @@ Postprocessors for the output devices:
.BR \%grolj4 (@MAN1EXT@),
.BR \%lj4_font (@MAN5EXT@),
.BR \%grops (@MAN1EXT@),
+.BR \%gropdf (@MAN1EXT@),
.BR \%grotty (@MAN1EXT@).
.
.TP
diff --git a/src/roff/groff/pipeline.h b/src/roff/groff/pipeline.h
index 20e775a..2795b53 100644
--- a/src/roff/groff/pipeline.h
+++ b/src/roff/groff/pipeline.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2002, 2005, 2009
+/* Copyright (C) 1989-1992, 2000, 2002, 2005, 2009, 2011
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -24,7 +24,7 @@ extern "C" {
#endif
/* run_pipeline can handle at most this many commands */
-#define MAX_COMMANDS 13
+#define MAX_COMMANDS 14
/* Children exit with this status if execvp fails. */
#define EXEC_FAILED_EXIT_STATUS 0xff
diff --git a/src/roff/grog/grog.man b/src/roff/grog/grog.man
index 0cbd4c4..e0c1179 100644
--- a/src/roff/grog/grog.man
+++ b/src/roff/grog/grog.man
@@ -10,10 +10,10 @@ grog.1 - man page for grog (section 1)
Source file position: <groff_source_top>/src/roff/grog/grog.man
Installed position: $prefix/share/man/man1/grog.1
-Last Update: 2 Jun 2010
+Last Update: 22 Jan 2011
..
.de co
-Copyright (C) 1989-2000, 2001, 2002, 2003, 2006, 2007, 2009, 2010
+Copyright (C) 1989-2003, 2006, 2007, 2009-2012
Free Software Foundation, Inc.
.
Written by James Clark.
@@ -21,7 +21,7 @@ Maintained by
.MT wl@gnu.org
Werner Lemberg
.ME .
-Rewritten and put under GPL by Bernd Warken.
+Rewritten and put under GPL by Bernd Warken <groff-bernd.warken-72@web.de>.
.
.P
This file is part of
@@ -290,7 +290,7 @@ version, while
grog.sh
.ft R
is a shell script using
-BR awk (1).
+.BR awk (1).
During the run of
.BR make (1),
it is determined whether the system contains a suitable version of
@@ -466,50 +466,6 @@ was found by
this file does not use a macro package.
.
.
-.IP \(bu
-.B grog
-can also handle files using the
-.I chem
-language.
-.
-The example
-.
-.RS
-.IP
-.EX
-grog chAh_brackets.chem
-.EE
-.RE
-.
-.IP
-outputs
-.
-.RS
-.IP
-.EX
-chem chAh_brackets.chem | groff \-pe
-.EE
-.RE
-.
-.IP
-So
-.B chem
-is run first and
-.B groff
-is appended.
-.
-The option
-.B \-p
-for
-.B pic
-is implied automatically by
-.BR chem .
-Additionally, the file uses
-.I eqn
-with
-.BR \-e .
-.
-.
.\" --------------------------------------------------------------------
.SH "SEE ALSO"
.
@@ -517,6 +473,7 @@ with
.BR @g@troff (@MAN1EXT@),
.BR @g@tbl (@MAN1EXT@),
.BR @g@pic (@MAN1EXT@),
+.BR @g@chem (@MAN1EXT@),
.BR @g@eqn (@MAN1EXT@),
.BR @g@refer (@MAN1EXT@),
.BR @g@grn (@MAN1EXT@),
diff --git a/src/roff/grog/grog.pl b/src/roff/grog/grog.pl
index 24a4090..3f33d86 100644
--- a/src/roff/grog/grog.pl
+++ b/src/roff/grog/grog.pl
@@ -6,9 +6,9 @@
# Source file position: <groff-source>/src/roff/grog/grog.pl
# Installed position: <prefix>/bin/grog
-# Copyright (C) 1993, 2006, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1993, 2006, 2009, 2011-2012 Free Software Foundation, Inc.
# Written by James Clark, maintained by Werner Lemberg.
-# Rewritten and put under GPL by Bernd Warken.
+# Rewritten and put under GPL by Bernd Warken <groff-bernd.warken-72@web.de>.
# This file is part of `grog', which is part of `groff'.
@@ -26,7 +26,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
########################################################################
-my $Last_Update = '5 Jan 2009';
+my $Last_Update = '24 May 2012';
########################################################################
require v5.6;
@@ -128,30 +128,29 @@ sub process {
if (/^(.cstart)|(begin\s+chem)$/) {
$Groff{'chem'}++;
- $Groff{'pic'}++;
+ $Groff{'soelim'}++ if $level;
} elsif (/^\.TS$Sp/) {
$_ = <FILE>;
- if (!/^\./) {
+ if (!/^\./ || /^\.so/) {
$Groff{'tbl'}++;
$Groff{'soelim'}++ if $level;
}
} elsif (/^\.EQ$Sp/) {
$_ = <FILE>;
- if (!/^\./ || /^\.[0-9]/) {
+ if (!/^\./ || /^\.[0-9]/ || /^\.so/) {
$Groff{'eqn'}++;
$Groff{'soelim'}++ if $level;
}
} elsif (/^\.GS$Sp/) {
$_ = <FILE>;
- if (!/^\./) {
+ if (!/^\./ || /^\.so/) {
$Groff{'grn'}++;
$Groff{'soelim'}++ if $level;
}
} elsif (/^\.G1$Sp/) {
$_ = <FILE>;
- if (!/^\./) {
+ if (!/^\./ || /^\.so/) {
$Groff{'grap'}++;
- $Groff{'pic'}++;
$Groff{'soelim'}++ if $level;
}
# } elsif (/^\.PS\Sp([ 0-9.<].*)?$/) {
@@ -161,7 +160,7 @@ sub process {
# &process($1, $level);
# } else {
# $_ = <FILE>;
-# if (!/^\./ || /^\.ps/) {
+# if (!/^\./ || /^\.ps/ || /^\.so/) {
# $Groff{'pic'}++;
# $Groff{'soelim'}++ if $level;
# }
@@ -244,6 +243,22 @@ sub process {
s/^.so *//;
s/\\\".*//;
s/ .*$//;
+ # The next if-clause catches e.g.
+ #
+ # .EQ
+ # .so foo
+ # .EN
+ #
+ # However, the code is not fully correct since it is too generous.
+ # Theoretically, we should check for .so only within preprocessor
+ # blocks like .EQ/.EN or .TS/.TE; but it doesn't harm if we call
+ # soelim even if we don't need to.
+ if ( $Groff{'pic'} || $Groff{'tbl'} || $Groff{'eqn'} ||
+ $Groff{'grn'} || $Groff{'grap'} || $Groff{'refer'} ||
+ $Groff{'refer_open'} || $Groff{'refer_close'} ||
+ $Groff{'chem'} ) {
+ $Groff{'soelim'}++;
+ }
&process($_, $level + 1) unless /\\/ || $_ eq "";
}
}
@@ -286,12 +301,13 @@ sub version {
$Groff{'refer'} ||= $Groff{'refer_open'} && $Groff{'refer_close'};
if ( $Groff{'pic'} || $Groff{'tbl'} || $Groff{'eqn'} ||
- $Groff{'grn'} || $Groff{'grap'} || $Groff{'refer'} ) {
+ $Groff{'grn'} || $Groff{'grap'} || $Groff{'refer'} ||
+ $Groff{'chem'} ) {
my $s = "-";
$s .= "s" if $Groff{'soelim'};
$s .= "R" if $Groff{'refer'};
- # grap must be run before pic
$s .= "G" if $Groff{'grap'};
+ $s .= "j" if $Groff{'chem'};
$s .= "p" if $Groff{'pic'};
$s .= "g" if $Groff{'grn'};
$s .= "t" if $Groff{'tbl'};
@@ -331,13 +347,8 @@ sub version {
push(@Command, $s);
}
- if ($Groff{'chem'}) {
- my @chem = ('chem', @ARGV, '|', 'groff');
- unshift(@Command, @chem);
- } else {
- unshift @Command, 'groff';
- push(@Command, @ARGV);
- }
+ unshift @Command, 'groff';
+ push(@Command, @ARGV);
foreach (@Command) {
next unless /\s/;
diff --git a/src/roff/grog/grog.sh b/src/roff/grog/grog.sh
index 8f17078..38033ec 100644
--- a/src/roff/grog/grog.sh
+++ b/src/roff/grog/grog.sh
@@ -5,9 +5,9 @@
# Source file position: <groff-source>/src/roff/grog/grog.sh
# Installed position: <prefix>/bin/grog
-# Copyright (C) 1993, 2006, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1993, 2006, 2009, 2011-2012 Free Software Foundation, Inc.
# Written by James Clark, maintained by Werner Lemberg.
-# Rewritten by and put under GPL Bernd Warken.
+# Rewritten by and put under GPL Bernd Warken <groff-bernd.warken-72@web.de>.
# This file is part of `grog', which is part of `groff'.
@@ -25,7 +25,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
########################################################################
-Last_Update='5 Jan 2009'
+Last_Update='22 Jan 2011'
########################################################################
soelim=@g@soelim
@@ -159,18 +159,19 @@ eval sed "'s/[ ]*$//'" '--' "${filespec}" \
| @EGREP@ \
'^\.(cstart|P|PS|[PLI]P|[pnil]p|sh|Dd|Tp|Dp|De|Cx|Cl|Oo|.* Oo|Oc|.* Oc|NH|TL|TS|TE|EQ|TH|TL|NH|SH|\[|\]|R1|GS|G1|PH|SA|SO_START|SO_END)' \
| awk '
-/^\.SO_START$/ { so = 1 }
+/^\.SO_START$/ { so = 1
+ soelim = soelim||chem||eqn||grap||grn||pic||tbl||refer||(refer_start && !refer_end) }
/^\.SO_END$/ { so = 0 }
-/^\.cstart$/ { chem++ }
+/^\.cstart$/ { chem++; if (so > 0) soelim++ }
/^\.TS/ { tbl++; in_tbl = 1; if (so > 0) soelim++; }
/^\.TE/ { in_tbl = 0 }
/^\.PS([ 0-9.<].*)?$/ { pic++; if (so > 0) soelim++ }
/^\.EQ/ { eqn++; if (so > 0) soelim++ }
/^\.R1/ { refer++; if (so > 0) soelim++ }
-/^\.\[/ {refer_start++; if (so > 0) soelim++ }
-/^\.\]/ {refer_end++; if (so > 0) soelim++ }
+/^\.\[/ { refer_start++; if (so > 0) soelim++ }
+/^\.\]/ { refer_end++; if (so > 0) soelim++ }
/^\.GS/ { grn++; if (so > 0) soelim++ }
-/^\.G1/ { grap++; pic++; if (so > 0) soelim++ }
+/^\.G1/ { grap++; if (so > 0) soelim++ }
/^\.TH/ { if (in_tbl != 1) TH++ }
/^\.PP/ { PP++ }
/^\.TL/ { TL++ }
@@ -202,18 +203,15 @@ eval sed "'s/[ ]*$//'" '--' "${filespec}" \
/^\.(PRINTSTYLE|START)/ { mom++ }
END {
- if (chem > 0) {
- printf "chem %s | ", files
- pic++
- files = ""
- }
printf "groff"
refer = refer || (refer_start && refer_end)
- if (pic > 0 || tbl > 0 || grn > 0 || grap > 0 || eqn > 0 || refer > 0) {
+ if (pic > 0 || tbl > 0 || grn > 0 || grap > 0 ||
+ eqn > 0 || refer > 0 || chem > 0) {
printf " -"
if (soelim > 0) printf "s"
if (refer > 0) printf "R"
if (grn > 0) printf "g"
+ if (chem > 0) printf "j"
if (grap > 0) printf "G"
if (pic > 0) printf "p"
if (tbl > 0) printf "t"
diff --git a/src/roff/troff/env.cpp b/src/roff/troff/env.cpp
index 13672cc..6d722f5 100644
--- a/src/roff/troff/env.cpp
+++ b/src/roff/troff/env.cpp
@@ -1,6 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2009
+/* Copyright (C) 1989-1992, 2000-2006, 2009, 2011
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -3211,7 +3210,7 @@ const char *sptoa(int sp)
double factor = 10.0;
double val = s;
int decimal_point = 0;
- do {
+ do {
double v = ceil(s*factor);
if (v > INT_MAX)
break;
@@ -3314,8 +3313,8 @@ void environment::print_env()
? "on"
: margin_character_flags == MARGIN_CHARACTER_NEXT
? "next"
- : margin_character_flags == MARGIN_CHARACTER_ON
- | MARGIN_CHARACTER_NEXT
+ : margin_character_flags == (MARGIN_CHARACTER_ON
+ | MARGIN_CHARACTER_NEXT)
? "on, next"
: "none");
errprint(" margin character distance: %1u\n",
diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp
index 7a0f46c..b71f27e 100644
--- a/src/roff/troff/input.cpp
+++ b/src/roff/troff/input.cpp
@@ -1,6 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010
+/* Copyright (C) 1989-1992, 2000-2011
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -156,6 +155,9 @@ static symbol get_delim_name();
static void init_registers();
static void trapping_blank_line();
+// this is for gcc 2.95 with old versions of libstdc++
+#define input_iterator my_input_iterator
+
class input_iterator;
input_iterator *make_temp_iterator(const char *);
const char *input_char_description(int);
@@ -2356,6 +2358,10 @@ int token::delimiter(int err)
return 1;
}
case TOKEN_NODE:
+ // the user doesn't know what a node is
+ if (err)
+ error("missing argument or invalid starting delimiter");
+ return 0;
case TOKEN_SPACE:
case TOKEN_STRETCHABLE_SPACE:
case TOKEN_UNSTRETCHABLE_SPACE:
diff --git a/src/roff/troff/mtsm.cpp b/src/roff/troff/mtsm.cpp
index 79e2f78..f13a6be 100644
--- a/src/roff/troff/mtsm.cpp
+++ b/src/roff/troff/mtsm.cpp
@@ -1,5 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 2003, 2004, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2009, 2011 Free Software Foundation, Inc.
Written by Gaius Mulley (gaius@glam.ac.uk)
This file is part of groff.
@@ -479,21 +479,24 @@ void mtsm::flush(FILE *fp, statem *s, string tag_list)
void statem::display_state()
{
fprintf(stderr, " <state ");
- if (bool_values[MTSM_BR].is_known)
+ if (bool_values[MTSM_BR].is_known) {
if (bool_values[MTSM_BR].value)
fprintf(stderr, "[br]");
else
fprintf(stderr, "[!br]");
- if (bool_values[MTSM_EOL].is_known)
+ }
+ if (bool_values[MTSM_EOL].is_known) {
if (bool_values[MTSM_EOL].value)
fprintf(stderr, "[eol]");
else
fprintf(stderr, "[!eol]");
- if (int_values[MTSM_SP].is_known)
+ }
+ if (int_values[MTSM_SP].is_known) {
if (int_values[MTSM_SP].value)
fprintf(stderr, "[sp %d]", int_values[MTSM_SP].value);
else
fprintf(stderr, "[!sp]");
+ }
fprintf(stderr, ">");
fflush(stderr);
}
@@ -610,12 +613,12 @@ int state_set::is_in(int_value_state i)
int state_set::is_in(units_value_state u)
{
- return (unitsset & (1 << (int)u) != 0);
+ return (unitsset & (1 << (int)u)) != 0;
}
int state_set::is_in(string_value_state s)
{
- return (stringset & (1 << (int)s) != 0);
+ return (stringset & (1 << (int)s)) != 0;
}
void state_set::add(units_value_state, int n)
diff --git a/src/roff/troff/number.cpp b/src/roff/troff/number.cpp
index fc3f980..1f4c6ee 100644
--- a/src/roff/troff/number.cpp
+++ b/src/roff/troff/number.cpp
@@ -1,5 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 1989, 1990, 1991, 1992, 2001, 2002, 2004, 2009
+/* Copyright (C) 1989-1992, 2001, 2002, 2004, 2009, 2012
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -355,7 +355,7 @@ static int parse_expr(units *v, int scale_indicator,
case '*':
if (v2 < 0) {
if (*v > 0) {
- if (*v > -(unsigned)INT_MIN / -(unsigned)v2)
+ if ((unsigned)*v > -(unsigned)INT_MIN / -(unsigned)v2)
overflow = 1;
}
else if (-(unsigned)*v > INT_MAX / -(unsigned)v2)
diff --git a/src/roff/troff/troff.man b/src/roff/troff/troff.man
index f59b73b..4442c9d 100644
--- a/src/roff/troff/troff.man
+++ b/src/roff/troff/troff.man
@@ -10,7 +10,7 @@ Copyright (C) 1989, 2000, 2001, 2002, 2003, 2007, 2008, 2009
written by James Clark
modified by Werner Lemberg <wl@gnu.org>
- Bernd Warken <bwarken@mayn.de>
+ Bernd Warken <groff-bernd.warken-72@web.de>
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -607,7 +607,7 @@ This document was written by James Clark, with modifications from
Werner Lemberg
.ME
and
-.MT bwarken@mayn.de
+.MT groff-bernd.warken-72@web.de
Bernd Warken
.ME .
.
diff --git a/src/utils/afmtodit/afmtodit.man b/src/utils/afmtodit/afmtodit.man
index 47017e1..82d6f5d 100644
--- a/src/utils/afmtodit/afmtodit.man
+++ b/src/utils/afmtodit/afmtodit.man
@@ -1,6 +1,5 @@
.ig
-Copyright (C) 1989-2000, 2001, 2002, 2003, 2005, 2006, 2008, 2009,
- 2010
+Copyright (C) 1989-2003, 2005, 2006, 2008-2011
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -37,7 +36,7 @@ the original English.
.
.
.SH NAME
-afmtodit \- create font files for use with groff \-Tps
+afmtodit \- create font files for use with groff \-Tps and \-Tpdf
.
.
.SH SYNOPSIS
@@ -65,8 +64,10 @@ The whitespace between a command line option and its argument is optional.
.
.SH DESCRIPTION
.B afmtodit
-creates a font file for use with groff and
-.BR grops .
+creates a font file for use with groff,
+.BR grops ,
+and
+.BR gropdf .
.
.B afmtodit
is written in perl;
diff --git a/src/utils/indxbib/indxbib.man b/src/utils/indxbib/indxbib.man
index 250ad2d..9a9fc8a 100644
--- a/src/utils/indxbib/indxbib.man
+++ b/src/utils/indxbib/indxbib.man
@@ -43,9 +43,6 @@ the original English.
.OP \-t n
.RI [\ filename \|.\|.\|.\ ]
.ad \na
-.PP
-It is possible to have whitespace between a command line option and its
-parameter.
.SH DESCRIPTION
.B @g@indxbib
makes an inverted index for the bibliographic databases in
@@ -95,6 +92,9 @@ The value set by the
option is also stored in the index
and will be used in verifying records found using the index.
.SH OPTIONS
+.PP
+It is possible to have whitespace between a command line option and its
+parameter.
.TP
.B \-v
Print the version number.
diff --git a/src/utils/lookbib/lookbib.man b/src/utils/lookbib/lookbib.man
index 4705e61..73bf9d5 100644
--- a/src/utils/lookbib/lookbib.man
+++ b/src/utils/lookbib/lookbib.man
@@ -39,10 +39,6 @@ the original English.
]
.IR filename \|.\|.\|.
.
-.PP
-It is possible to have whitespace between a command line option and its
-parameter.
-.
.
.SH DESCRIPTION
.B @g@lookbib
@@ -66,6 +62,10 @@ each index can cover multiple databases.
.
.
.SH OPTIONS
+.PP
+It is possible to have whitespace between a command line option and its
+parameter.
+.
.TP
.B \-v
Print the version number.
diff --git a/src/utils/pfbtops/pfbtops.man b/src/utils/pfbtops/pfbtops.man
index 027732c..eae6a46 100644
--- a/src/utils/pfbtops/pfbtops.man
+++ b/src/utils/pfbtops/pfbtops.man
@@ -1,5 +1,5 @@
.ig
-Copyright (C) 1989-1995, 2001, 2003, 2004, 2009
+Copyright (C) 1989-1995, 2001, 2003, 2004, 2009, 2011
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -53,7 +53,9 @@ format.
.LP
The resulting ASCII format PostScript font can be used with groff.
It must first be listed in
-.BR @FONTDIR@/devps/download .
+.B @FONTDIR@/devps/download
+and
+.BR @FONTDIR@/devpdf/download .
.
.SH OPTIONS
.TP
@@ -62,7 +64,8 @@ Print the version number.
.
.
.SH "SEE ALSO"
-.BR grops (@MAN1EXT@)
+.BR grops (@MAN1EXT@),
+.BR gropdf (@MAN1EXT@)
.
.\" Local Variables:
.\" mode: nroff
diff --git a/src/utils/tfmtodit/tfmtodit.cpp b/src/utils/tfmtodit/tfmtodit.cpp
index 73e5c75..5f5c1d9 100644
--- a/src/utils/tfmtodit/tfmtodit.cpp
+++ b/src/utils/tfmtodit/tfmtodit.cpp
@@ -1,5 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 1989-1992, 2000, 2001, 2004, 2009
+/* Copyright (C) 1989-1992, 2000, 2001, 2004, 2009, 2011
Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.com)
@@ -66,10 +66,10 @@ extern "C" const char *Version_string;
struct char_info_word {
unsigned char width_index;
- char height_index;
- char depth_index;
- char italic_index;
- char tag;
+ unsigned char height_index;
+ unsigned char depth_index;
+ unsigned char italic_index;
+ unsigned char tag;
unsigned char remainder;
};
diff --git a/src/utils/tfmtodit/tfmtodit.man b/src/utils/tfmtodit/tfmtodit.man
index 0814f45..be0d406 100644
--- a/src/utils/tfmtodit/tfmtodit.man
+++ b/src/utils/tfmtodit/tfmtodit.man
@@ -47,9 +47,6 @@ tfmtodit \- create font files for use with groff \-Tdvi
.I font
.br
.ad \na
-.PP
-It is possible to have whitespace between a command line option and its
-parameter.
.SH DESCRIPTION
.B tfmtodit
creates a font file for use with
@@ -151,6 +148,9 @@ option should not be given for a font for which
.B math_fitting
is true.
.SH OPTIONS
+.PP
+It is possible to have whitespace between a command line option and its
+parameter.
.TP
.B \-v
Print the version number.
diff --git a/src/utils/xtotroff/xtotroff.man b/src/utils/xtotroff/xtotroff.man
index 532de0b..dcabae5 100644
--- a/src/utils/xtotroff/xtotroff.man
+++ b/src/utils/xtotroff/xtotroff.man
@@ -38,10 +38,6 @@ xtotroff \- convert X font metrics into GNU troff font metrics
]
.I FontMap
.
-.PP
-It is possible to have whitespace between a command line option and its
-parameter.
-.
.
.SH DESCRIPTION
.B xtotroff
@@ -79,6 +75,10 @@ aborts.
.
.
.SH OPTIONS
+.PP
+It is possible to have whitespace between a command line option and its
+parameter.
+.
.TP
.BI \-r resolution
Set the resolution for all font patterns in
diff --git a/test-groff.in b/test-groff.in
index 51e4010..b58d8be 100644
--- a/test-groff.in
+++ b/test-groff.in
@@ -1,6 +1,6 @@
#! /bin/sh
#
-# Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005, 2009
+# Copyright (C) 1989-2000, 2001-2005, 2009, 2011
# Free Software Foundation, Inc.
#
# This file is part of groff.
@@ -41,6 +41,7 @@ $builddir/devices/grotty$SEP\
$builddir/devices/grolj4$SEP\
$builddir/devices/grolbp$SEP\
$builddir/devices/grohtml$SEP\
+$builddir/devices/gropdf$SEP\
$builddir/devices/xditview
XENVIRONMENT=$srcdir/src/devices/xditview/GXditview.ad
diff --git a/tmac/Makefile.sub b/tmac/Makefile.sub
index 10c4cdd..535f7ea 100644
--- a/tmac/Makefile.sub
+++ b/tmac/Makefile.sub
@@ -1,5 +1,4 @@
-# Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009,
-# 2010
+# Copyright (C) 1989-2007, 2009-2012
# Free Software Foundation, Inc.
# Written by James Clark (jjc@jclark.com)
#
@@ -38,6 +37,7 @@ NORMALFILES=\
safer.tmac \
trace.tmac \
ps.tmac psold.tmac pspic.tmac psatk.tmac \
+ pdf.tmac \
dvi.tmac \
tty.tmac tty-char.tmac \
latin1.tmac latin2.tmac latin5.tmac latin9.tmac cp1047.tmac \
@@ -48,8 +48,9 @@ NORMALFILES=\
html.tmac html-end.tmac \
devtag.tmac \
europs.tmac \
- composite.tmac \
+ composite.tmac fallbacks.tmac \
eqnrc \
+ refer.tmac refer-me.tmac refer-ms.tmac \
troffrc troffrc-end \
trans.tmac \
hyphen.us hyphenex.us \
diff --git a/tmac/an-ext.tmac b/tmac/an-ext.tmac
index c3983ca..3816025 100644
--- a/tmac/an-ext.tmac
+++ b/tmac/an-ext.tmac
@@ -3,9 +3,9 @@
.\" Written by Eric S. Raymond <esr@thyrsus.com>
.\" Werner Lemberg <wl@gnu.org>
.\"
-.\" Version 2007-Feb-02
+.\" Version 2012-Mar-05
.\"
-.\" Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+.\" Copyright (C) 2007, 2009, 2012 Free Software Foundation, Inc.
.\" You may freely use, modify and/or distribute this file.
.\"
.\"
@@ -71,7 +71,8 @@
. ns
. \}
.
-. HP \w'\fB\\$1\fP\ 'u
+. nr mT \w'\fB\\$1\fP\ '
+. HP \\n(mTu
. B "\\$1"
..
.
diff --git a/tmac/an-old.tmac b/tmac/an-old.tmac
index a256fd3..f5ae741 100644
--- a/tmac/an-old.tmac
+++ b/tmac/an-old.tmac
@@ -1,7 +1,6 @@
.\" an-old.tmac
.\"
-.\" Copyright (C) 1989, 1990, 1991, 1992, 2001, 2002, 2003, 2004, 2005,
-.\" 2007, 2008, 2009
+.\" Copyright (C) 1989-1992, 2001-2005, 2007-2009, 2011
.\" Free Software Foundation, Inc.
.\" Written by James Clark (jjc@jclark.com)
.\"
@@ -142,10 +141,22 @@
. ds an-title "\\$1\"
. ds an-section "\\$2\"
. ds an-extra1 "\\$3\"
-. ie (\\n[.$] > 3) .ds an-extra2 "\\$4\"
-. el .ds an-extra2 \"Sun Release 4.0
-. ie (\\n[.$] > 4) .ds an-extra3 "\\$5\"
-. el .ds an-extra3 \"System Programmer's Manual
+. ie (\\n[.$] > 3) .ds an-extra2 "\\$4\"
+. el .ds an-extra2 \"Sun Release 4.0
+.
+. ie (\\n[.$] > 4) .ds an-extra3 "\\$5\"
+. el \{ .ie '\\$2'1' .ds an-extra3 General Commands Manual
+. el \{ .ie '\\$2'2' .ds an-extra3 System Calls Manual
+. el \{ .ie '\\$2'3' .ds an-extra3 Library Functions Manual
+. el \{ .ie '\\$2'3p' .ds an-extra3 Perl Programmers Reference Guide
+. el \{ .ie '\\$2'4' .ds an-extra3 Kernel Interfaces Manual
+. el \{ .ie '\\$2'5' .ds an-extra3 File Formats Manual
+. el \{ .ie '\\$2'6' .ds an-extra3 Games Manual
+. el \{ .ie '\\$2'7' .ds an-extra3 Miscellaneous Information Manual
+. el \{ .ie '\\$2'8' .ds an-extra3 System Manager's Manual
+. el \{ .ie '\\$2'9' .ds an-extra3 Kernel Developer's Manual
+. el .ds an-extra3
+. \}\}\}\}\}\}\}\}\}\}
. ds an-init
\\..
.
diff --git a/tmac/doc-common b/tmac/doc-common
index 26dcc56..6372a23 100644
--- a/tmac/doc-common
+++ b/tmac/doc-common
@@ -264,50 +264,72 @@
.ds doc-volume-as-algor algor
.ds doc-volume-as-amd64 amd64
.ds doc-volume-as-amiga amiga
+.ds doc-volume-as-amigappc amigappc
.ds doc-volume-as-arc arc
+.ds doc-volume-as-arm arm
.ds doc-volume-as-arm26 arm26
.ds doc-volume-as-arm32 arm32
+.ds doc-volume-as-armish armish
.ds doc-volume-as-atari atari
+.ds doc-volume-as-aviion aviion
+.ds doc-volume-as-beagle beagle
.ds doc-volume-as-bebox bebox
.ds doc-volume-as-cats cats
.ds doc-volume-as-cesfic cesfic
.ds doc-volume-as-cobalt cobalt
.ds doc-volume-as-dreamcast dreamcast
+.ds doc-volume-as-emips emips
.ds doc-volume-as-evbarm evbarm
.ds doc-volume-as-evbmips evbmips
.ds doc-volume-as-evbppc evbppc
.ds doc-volume-as-evbsh3 evbsh3
+.ds doc-volume-as-ews4800mips ews4800mips
.ds doc-volume-as-hp300 hp300
.ds doc-volume-as-hp700 hp700
.ds doc-volume-as-hpcarm hpcarm
.ds doc-volume-as-hpcmips hpcmips
.ds doc-volume-as-hpcsh hpcsh
+.ds doc-volume-as-hppa hppa
+.ds doc-volume-as-hppa64 hppa64
.ds doc-volume-as-i386 i386
+.ds doc-volume-as-ia64 ia64
+.ds doc-volume-as-ibmnws ibmnws
+.ds doc-volume-as-iyonix iyonix
+.ds doc-volume-as-landisk landisk
+.ds doc-volume-as-loongson loongson
.ds doc-volume-as-luna68k luna68k
+.ds doc-volume-as-luna88k luna88k
.ds doc-volume-as-m68k m68k
.ds doc-volume-as-mac68k mac68k
.ds doc-volume-as-macppc macppc
.ds doc-volume-as-mips mips
+.ds doc-volume-as-mips64 mips64
.ds doc-volume-as-mipsco mipsco
.ds doc-volume-as-mmeye mmeye
.ds doc-volume-as-mvme68k mvme68k
+.ds doc-volume-as-mvme88k mvme88k
.ds doc-volume-as-mvmeppc mvmeppc
.ds doc-volume-as-netwinder netwinder
.ds doc-volume-as-news68k news68k
.ds doc-volume-as-newsmips newsmips
.ds doc-volume-as-next68k next68k
.ds doc-volume-as-ofppc ofppc
+.ds doc-volume-as-palm palm
.ds doc-volume-as-pc532 pc532
.ds doc-volume-as-playstation2 playstation2
.ds doc-volume-as-pmax pmax
.ds doc-volume-as-pmppc pmppc
.ds doc-volume-as-powerpc powerpc
.ds doc-volume-as-prep prep
+.ds doc-volume-as-rs6000 rs6000
.ds doc-volume-as-sandpoint sandpoint
.ds doc-volume-as-sbmips sbmips
+.ds doc-volume-as-sgi sgi
.ds doc-volume-as-sgimips sgimips
.ds doc-volume-as-sh3 sh3
.ds doc-volume-as-shark shark
+.ds doc-volume-as-socppc socppc
+.ds doc-volume-as-solbourne solbourne
.ds doc-volume-as-sparc sparc
.ds doc-volume-as-sparc64 sparc64
.ds doc-volume-as-sun2 sun2
@@ -316,6 +338,8 @@
.ds doc-volume-as-vax vax
.ds doc-volume-as-x68k x68k
.ds doc-volume-as-x86_64 x86_64
+.ds doc-volume-as-xen xen
+.ds doc-volume-as-zaurus zaurus
.
.de Dt
. \" reset default arguments
@@ -451,12 +475,16 @@
.ds doc-operating-system-NetBSD-3.0 3.0
.ds doc-operating-system-NetBSD-3.0.1 3.0.1
.ds doc-operating-system-NetBSD-3.0.2 3.0.2
+.ds doc-operating-system-NetBSD-3.0.3 3.0.3
.ds doc-operating-system-NetBSD-3.1 3.1
+.ds doc-operating-system-NetBSD-3.1.1 3.1.1
.ds doc-operating-system-NetBSD-4.0 4.0
.ds doc-operating-system-NetBSD-4.0.1 4.0.1
.ds doc-operating-system-NetBSD-5.0 5.0
.ds doc-operating-system-NetBSD-5.0.1 5.0.1
.ds doc-operating-system-NetBSD-5.0.2 5.0.2
+.ds doc-operating-system-NetBSD-5.1 5.1
+.ds doc-operating-system-NetBSD-6.0 6.0
.
.ds doc-operating-system-OpenBSD-2.0 2.0
.ds doc-operating-system-OpenBSD-2.1 2.1
@@ -487,6 +515,8 @@
.ds doc-operating-system-OpenBSD-4.6 4.6
.ds doc-operating-system-OpenBSD-4.7 4.7
.ds doc-operating-system-OpenBSD-4.8 4.8
+.ds doc-operating-system-OpenBSD-4.9 4.9
+.ds doc-operating-system-OpenBSD-5.0 5.0
.
.ds doc-operating-system-FreeBSD-1.0 1.0
.ds doc-operating-system-FreeBSD-1.1 1.1
@@ -543,6 +573,8 @@
.ds doc-operating-system-FreeBSD-7.3 7.3
.ds doc-operating-system-FreeBSD-8.0 8.0
.ds doc-operating-system-FreeBSD-8.1 8.1
+.ds doc-operating-system-FreeBSD-8.2 8.2
+.ds doc-operating-system-FreeBSD-9.0 9.0
.
.ds doc-operating-system-Darwin-8.0.0 8.0.0
.ds doc-operating-system-Darwin-8.1.0 8.1.0
@@ -563,6 +595,16 @@
.ds doc-operating-system-Darwin-9.4.0 9.4.0
.ds doc-operating-system-Darwin-9.5.0 9.5.0
.ds doc-operating-system-Darwin-9.6.0 9.6.0
+.ds doc-operating-system-Darwin-9.7.0 9.7.0
+.ds doc-operating-system-Darwin-9.8.0 9.8.0
+.ds doc-operating-system-Darwin-10.1.0 10.1.0
+.ds doc-operating-system-Darwin-10.2.0 10.2.0
+.ds doc-operating-system-Darwin-10.3.0 10.3.0
+.ds doc-operating-system-Darwin-10.4.0 10.4.0
+.ds doc-operating-system-Darwin-10.5.0 10.5.0
+.ds doc-operating-system-Darwin-10.6.0 10.6.0
+.ds doc-operating-system-Darwin-10.7.0 10.7.0
+.ds doc-operating-system-Darwin-11.0.0 11.0.0
.
.ds doc-operating-system-DragonFly-1.0 1.0
.ds doc-operating-system-DragonFly-1.1 1.1
@@ -581,6 +623,11 @@
.ds doc-operating-system-DragonFly-2.4 2.4
.ds doc-operating-system-DragonFly-2.6 2.6
.ds doc-operating-system-DragonFly-2.8 2.8
+.ds doc-operating-system-DragonFly-2.9 2.9
+.ds doc-operating-system-DragonFly-2.9.1 2.9.1
+.ds doc-operating-system-DragonFly-2.10 2.10
+.ds doc-operating-system-DragonFly-2.10.1 2.10.1
+.ds doc-operating-system-DragonFly-2.11 2.11
.
.de Os
. ds doc-command-name
diff --git a/tmac/doc-syms b/tmac/doc-syms
index d2a070d..dfb09b3 100644
--- a/tmac/doc-syms
+++ b/tmac/doc-syms
@@ -605,6 +605,8 @@
.ds doc-str-St--isoC \*[doc-Tn-font-size]ISO/IEC\*[doc-str-St] 9899:1990
.as doc-str-St--isoC " (\*[Lq]\*[doc-Tn-font-size]ISO\~C\^90\*[doc-str-St]\*[Rq])
.als doc-str-St--isoC-90 doc-str-St--isoC
+.ds doc-str-St--isoC-2011 \*[doc-Tn-font-size]ISO/IEC\*[doc-str-St] 9899:2011
+.as doc-str-St--isoC-2011 " (\*[Lq]\*[doc-Tn-font-size]ISO\~C\^11\*[doc-str-St]\*[Rq])
.ds doc-str-St--isoC-99 \*[doc-Tn-font-size]ISO/IEC\*[doc-str-St] 9899:1999
.as doc-str-St--isoC-99 " (\*[Lq]\*[doc-Tn-font-size]ISO\~C\^99\*[doc-str-St]\*[Rq])
.ds doc-str-St--isoC-amd1 \*[doc-Tn-font-size]ISO/IEC\*[doc-str-St] 9899/AMD1:1995
@@ -617,6 +619,8 @@
.\" POSIX Part 1: System API
.ds doc-str-St--p1003.1 \*[doc-Tn-font-size]\%IEEE\*[doc-str-St] Std 1003.1
.as doc-str-St--p1003.1 " (\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
+.ds doc-str-St--p1003.1b \*[doc-Tn-font-size]\%IEEE\*[doc-str-St] Std 1003.1b
+.as doc-str-St--p1003.1b " (\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
.ds doc-str-St--p1003.1-88 \*[doc-Tn-font-size]\%IEEE\*[doc-str-St] Std 1003.1-1988
.as doc-str-St--p1003.1-88 " (\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
.ds doc-str-St--p1003.1-90 \*[doc-Tn-font-size]ISO/IEC\*[doc-str-St] 9945-1:1990
@@ -657,7 +661,7 @@
.as doc-str-St--susv3 " (\*[Lq]\*[doc-Tn-font-size]SUSv3\*[doc-str-St]\*[Rq])
.ds doc-str-St--svid4 System\~V Interface Definition, Fourth Edition
.as doc-str-St--svid4 " (\*[Lq]\*[doc-Tn-font-size]SVID\*[doc-str-St]\^4\*[Rq])
-.ds doc-str-St--xbd5 \*[doc-Tn-font-size]X/Open\*[doc-str-St] System Interface Definitions Issue\~5
+.ds doc-str-St--xbd5 \*[doc-Tn-font-size]X/Open\*[doc-str-St] Base Definitions Issue\~5
.as doc-str-St--xbd5 " (\*[Lq]\*[doc-Tn-font-size]XBD\*[doc-str-St]\^5\*[Rq])
.ds doc-str-St--xcu5 \*[doc-Tn-font-size]X/Open\*[doc-str-St] Commands and Utilities Issue\~5
.as doc-str-St--xcu5 " (\*[Lq]\*[doc-Tn-font-size]XCU\*[doc-str-St]\^5\*[Rq])
@@ -752,36 +756,74 @@
.\" NS
.\" NS width register `Lb' defined in doc-common
.
+.ds doc-str-Lb-libarchive Reading and Writing Streaming Archives Library (libarchive, \-larchive)
.ds doc-str-Lb-libarm ARM Architecture Library (libarm, \-larm)
.ds doc-str-Lb-libarm32 ARM32 Architecture Library (libarm32, \-larm32)
+.ds doc-str-Lb-libbluetooth Bluetooth Library (libbluetooth, \-lbluetooth)
+.ds doc-str-Lb-libbsm Basic Security Module Library (libbsm, \-lbsm)
.ds doc-str-Lb-libc Standard C\~Library (libc, \-lc)
+.ds doc-str-Lb-libc_r Reentrant C\~Library (libc_r, \-lc_r)
+.ds doc-str-Lb-libcalendar Calendar Arithmetic Library (libcalendar, \-lcalendar)
+.ds doc-str-Lb-libcam Common Access Method User Library (libcam, \-lcam)
.ds doc-str-Lb-libcdk Curses Development Kit Library (libcdk, \-lcdk)
+.ds doc-str-Lb-libcipher FreeSec Crypt Library (libcipher, \-lcipher)
.ds doc-str-Lb-libcompat Compatibility Library (libcompat, \-lcompat)
.ds doc-str-Lb-libcrypt Crypt Library (libcrypt, \-lcrypt)
.ds doc-str-Lb-libcurses Curses Library (libcurses, \-lcurses)
+.ds doc-str-Lb-libdevinfo Device and Resource Information Utility Library (libdevinfo, \-ldevinfo)
+.ds doc-str-Lb-libdevstat Device Statistics Library (libdevstat, \-ldevstat)
+.ds doc-str-Lb-libdisk Interface to Slice and Partition Labels Library (libdisk, \-ldisk)
+.ds doc-str-Lb-libdwarf DWARF Access Library (libdwarf, \-ldwarf)
.ds doc-str-Lb-libedit Command Line Editor Library (libedit, \-ledit)
+.ds doc-str-Lb-libelf ELF Access Library (libelf, \-lelf)
.ds doc-str-Lb-libevent Event Notification Library (libevent, \-levent)
+.ds doc-str-Lb-libfetch File Transfer Library for URLs (libfetch, \-lfetch)
.ds doc-str-Lb-libform Curses Form Library (libform, \-lform)
+.ds doc-str-Lb-libgeom Userland API Library for kernel GEOM subsystem (libgeom, \-lgeom)
+.ds doc-str-Lb-libgpib General-Purpose Instrument Bus (GPIB) library (libgpib, \-lgpib)
.ds doc-str-Lb-libi386 i386 Architecture Library (libi386, \-li386)
.ds doc-str-Lb-libintl Internationalized Message Handling Library (libintl, \-lintl)
.ds doc-str-Lb-libipsec IPsec Policy Control Library (libipsec, \-lipsec)
+.ds doc-str-Lb-libipx IPX Address Conversion Support Library (libipx, \-lipx)
+.ds doc-str-Lb-libiscsi iSCSI protocol library (libiscsi, \-liscsi)
+.ds doc-str-Lb-libjail Jail Library (libjail, \-ljail)
+.ds doc-str-Lb-libkiconv Kernel side iconv library (libkiconv, \-lkiconv)
+.ds doc-str-Lb-libkse N:M Threading Library (libkse, \-lkse)
.ds doc-str-Lb-libkvm Kernel Data Access Library (libkvm, \-lkvm)
.ds doc-str-Lb-libm Math Library (libm, \-lm)
.ds doc-str-Lb-libm68k m68k Architecture Library (libm68k, \-lm68k)
.ds doc-str-Lb-libmagic Magic Number Recognition Library (libmagic, \-lmagic)
+.ds doc-str-Lb-libmd Message Digest (MD4, MD5, etc.) Support Library (libmd, \-lmd)
+.ds doc-str-Lb-libmemstat Kernel Memory Allocator Statistics Library (libmemstat, \-lmemstat)
.ds doc-str-Lb-libmenu Curses Menu Library (libmenu, \-lmenu)
+.ds doc-str-Lb-libnetgraph Netgraph User Library (libnetgraph, \-lnetgraph)
+.ds doc-str-Lb-libnetpgp Netpgp signing, verification, encryption and decryption (libnetpgp, \-lnetpgp)
.ds doc-str-Lb-libossaudio OSS Audio Emulation Library (libossaudio, \-lossaudio)
.ds doc-str-Lb-libpam Pluggable Authentication Module Library (libpam, \-lpam)
.ds doc-str-Lb-libpcap Packet Capture Library (libpcap, \-lpcap)
.ds doc-str-Lb-libpci PCI Bus Access Library (libpci, \-lpci)
.ds doc-str-Lb-libpmc Performance Counters Library (libpmc, \-lpmc)
.ds doc-str-Lb-libposix \*[Px] \*[doc-str-Lb]Compatibility Library (libposix, \-lposix)
+.ds doc-str-Lb-libprop Property Container Object Library (libprop, \-lprop)
.ds doc-str-Lb-libpthread \*[Px] \*[doc-str-Lb]Threads Library (libpthread, \-lpthread)
+.ds doc-str-Lb-libpuffs puffs Convenience Library (libpuffs, \-lpuffs)
+.ds doc-str-Lb-librefuse File System in Userspace Convenience Library (librefuse, \-lrefuse)
.ds doc-str-Lb-libresolv DNS Resolver Library (libresolv, \-lresolv)
+.ds doc-str-Lb-librpcsec_gss RPC GSS-API Authentication Library (librpcsec_gss, \-lrpcsec_gss)
+.ds doc-str-Lb-librpcsvc RPC Service Library (librpcsvc, \-lrpcsvc)
.ds doc-str-Lb-librt \*[Px] \*[doc-str-Lb]Real-time Library (librt, \-lrt)
+.ds doc-str-Lb-libsdp Bluetooth Service Discovery Protocol User Library (libsdp, \-lsdp)
+.ds doc-str-Lb-libssp Buffer Overflow Protection Library (libssp, \-lssp)
+.ds doc-str-Lb-libSystem System Library (libSystem, \-lSystem)
.ds doc-str-Lb-libtermcap Termcap Access Library (libtermcap, \-ltermcap)
+.ds doc-str-Lb-libterminfo Terminal Information Library (libterminfo, \-lterminfo)
+.ds doc-str-Lb-libthr 1:1 Threading Library (libthr, \-lthr)
+.ds doc-str-Lb-libufs UFS File System Access Library (libufs, \-lufs)
+.ds doc-str-Lb-libugidfw File System Firewall Interface Library (libugidfw, \-lugidfw)
+.ds doc-str-Lb-libulog User Login Record Library (libulog, \-lulog)
.ds doc-str-Lb-libusbhid USB Human Interface Devices Library (libusbhid, \-lusbhid)
.ds doc-str-Lb-libutil System Utilities Library (libutil, \-lutil)
+.ds doc-str-Lb-libvgl Video Graphics Library (libvgl, \-lvgl)
.ds doc-str-Lb-libx86_64 x86_64 Architecture Library (libx86_64, \-lx86_64)
.ds doc-str-Lb-libz Compression Library (libz, \-lz)
.
diff --git a/tmac/doc.tmac b/tmac/doc.tmac
index 017835e..bbec7c5 100644
--- a/tmac/doc.tmac
+++ b/tmac/doc.tmac
@@ -438,7 +438,7 @@
. \" last argument
. if (\n[doc-reg-dfr1] == 4) \
. nop \|\-\c
-. nop \f[]\s[0]\c
+. nop \f[\n[doc-curr-font]]\s[\n[doc-curr-size]u]\c
. doc-print-and-reset
. \}
. el \{\
@@ -1197,8 +1197,14 @@
. if !\n[doc-arg-limit] \
. ds doc-macro-name Aq
.
-. ds doc-quote-left \[la]
-. ds doc-quote-right \[ra]
+. ie "\*[doc-macro-name]"An" \{\
+. ds doc-quote-left <
+. ds doc-quote-right >
+. \}
+. el \{\
+. ds doc-quote-left \[la]
+. ds doc-quote-right \[ra]
+. \}
.
. doc-enclose-string \$@
..
@@ -1527,7 +1533,10 @@
. if !\n[doc-arg-limit] \
. ds doc-macro-name Ao
.
-. ds doc-quote-left \[la]
+. ie "\*[doc-macro-name]"An" \
+. ds doc-quote-left <
+. el \
+. ds doc-quote-left \[la]
.
. doc-enclose-open \$@
..
@@ -1546,7 +1555,10 @@
. if !\n[doc-arg-limit] \
. ds doc-macro-name Ac
.
-. ds doc-quote-right \[ra]
+. ie "\*[doc-macro-name]"An" \
+. ds doc-quote-right >
+. el \
+. ds doc-quote-right \[ra]
.
. doc-enclose-close \$@
..
@@ -4256,7 +4268,7 @@
. if (\n[doc-arg-limit] > \n[doc-arg-ptr]) \{\
. nr doc-reg-Xr (\n[doc-arg-ptr] + 1)
. \" modify second argument if it is a string and
-. \" remove space inbetween
+. \" remove space in between
. if (\n[doc-type\n[doc-reg-Xr]] == 2) \{\
. ds doc-arg\n[doc-reg-Xr] \*[lp]\*[doc-arg\n[doc-reg-Xr]]\*[rp]
. ds doc-space\n[doc-arg-ptr]
@@ -5079,7 +5091,7 @@
.
.
.\" NS doc-build-func-string macro
-.\" NS collect function arguments and set hard spaces inbetween
+.\" NS collect function arguments and set hard spaces in between
.\" NS
.\" NS modifies:
.\" NS doc-func-arg
diff --git a/tmac/e.tmac b/tmac/e.tmac
index 8833994..636067f 100644
--- a/tmac/e.tmac
+++ b/tmac/e.tmac
@@ -253,7 +253,7 @@
. sp |\\n(tmu \" move to top of text
.ev
.mk _k \" for columned output
-.if \\n(?n .nm 1 \" restore line numbering if n1 mode
+.if \\n(?n=1 .nm 1 \" restore line numbering if n1 mode
.nr $c 1 \" set first column
.if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm
.ie \\n(?s \
@@ -297,9 +297,13 @@
.if \\n(?T \
\{\
. nr _i \\n(.i
+. if \\n(?n \
+. nm \\n(ln
. in 0
. |h\" \" output the table header
. in \\n(_iu
+. if \\n(?n \
+. nm
. rr _i
. mk #T \" for tbl commands
. ns
@@ -351,7 +355,11 @@
.in 0
.if \n@>2 .tm @o last printed text = \\n(nl placing @r trap at -\\n(_B
.wh -\\n(_Bu @r
+.if \\n(?n \
+. nm \\n(ln
.|f
+.if \\n(?n \
+. nm
.fi
.if \n@>2 .tm @o triggered @r (?o) = \\n(?o
.if \\n(?o \
@@ -394,9 +402,13 @@
. sz \\n(tp\" \" set header/footer type fonts, etc.
. @F \\n(tf
. lt \\n(_Lu \" make title span entire page
+. if \\n(?n \
+. nm \\n(ln
. nf
. \\$1
. br
+. if \\n(?n \
+. nm
.\}
..
.
@@ -499,23 +511,58 @@
.
.de bl \" *** contiguous blank lines
.br
+.@s \\$1
+.sp \\$1
+..
+.
+.de @s \" --- diversion-surviving space test
.ne \\$1
.rs
-.sp \\$1
+.if !'\\n(.z'' \!.@s \\$1
..
.
.de n1 \" *** line numbering 1
.nm 1
-.xl -\w'0000'u
+.ll -\w'0000'u
.nr ?n 1
..
.
.de n2 \" *** line numbering 2
-.nm \\$1
.ie \\n(.$ \
-. xl -\w'0000'u
+\{\
+. ie !`\\$2`c` \
+. po -\w'0000'u
+. el \
+. ll -\w'0000'u
+. ie \\B`\\$1` \
+\{\
+. ds |i \\$1
+. ds |j \\$1
+. do substring |i 0 0 \" pick off leading char and rest to check
+. do substring |j 1 \" for +N / -N
+. ie `\\*(|i`+` \
+. nr ln (\\n[_ln])+\\*(|j
+. el \
+. ie `\\*(|i`-` \
+. nr ln (\\n[_ln])-\\*(|j
+. el \
+. nr ln \\$1 \" unsigned N
+. nm \\n(ln
+. nr ?n 2
+. rm |i |j
+.\}
+. el \
+. tm Line \\n(.c -- Bad .n2 value
+.\}
.el \
-. xl \\n($lu
+\{\
+. nm
+. nr _ln \\n(ln
+. po +\w'0000'u
+. ll \\n($lu
+. nr ?n 0
+. nr ln 0
+.\}
..
.
.de pa \" *** new page
@@ -818,7 +865,7 @@
..
.
.
-.\" *** COLUMNNED OUTPUT ***
+.\" *** COLUMNED OUTPUT ***
.
.
.de 2c \" *** double columned output
@@ -830,7 +877,7 @@
.if \\n(.$>1 \
. nr $m \\$2
.if \\n(.$>0 \
-. nr $s \\$1n \" param 1: column seperation
+. nr $s \\$1n \" param 1: column separation
.nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
.xl \\n($lu
.mk _k
@@ -914,7 +961,11 @@
.ls 1
.in 0
.sp \\n(zsu
+.if \\n(?n \
+. nm \\n(ln
.\\$1
+.if \\n(?n \
+. nm
.ec
.br
.rm \\$1
@@ -942,15 +993,8 @@
.@)
.if (\\n(bt=0):(\\n(.t<\\n(bt) \
. ne \\n(dnu \" make it all on one page
-.ls 1
-.nf
-.|k
-.ec
-.fi
-.in 0
-.xl \\n($lu
-.ev
-.rm |k
+.@k |k
+.ev \" return from display environment
.sp \\n(bsu+\\n(.Lv-1v
..
.
@@ -991,7 +1035,9 @@
..
.
.de (c \" *** begin block centered text
+.br
.if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
+.if \\n(?n .nm
.di |c
..
.
@@ -1004,11 +1050,15 @@
.ls 1
.in (\\n(.lu-\\n(.iu-\\n(dlu)/2u
.if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl
+.if \\n(?n \
+. nm \\n(ln
.nf
.|c
.ec
.in
.ls
+.if \\n(?n \
+. nm
.ev
.rm |c
..
@@ -1025,10 +1075,14 @@
.in +\\n(qiu
.xl -\\n(qiu
.sz \\n(qp
+.if \\n(?n \
+. nm \\n(ln
..
.
.de )q \" *** end block quote
.br
+.if \\n(?n \
+. nm
.ev
.sp \\n(qsu+\\n(.Lv-1v
.nr ?k 0
@@ -1039,11 +1093,15 @@
.sp \\n(bsu
.@D 3 \\$1 \\$2
.@M
+.if \\n(?n \
+. nm \\n(ln
.if '\*(.T'html' .sp \\n(bsu
..
.
.de )l \" *** end list
.br
+.if \\n(?n \
+. nm
.ev
.sp \\n(bsu+\\n(.Lv-1v
.nr ?k 0
@@ -1102,7 +1160,7 @@
.de @q \" --- equation output
.nr _Q \\n(dnu
.ev
-.sp \\n(esu \" output rest of preceeding text
+.sp \\n(esu \" output rest of preceding text
.if !"\\n(.z"" \!.ne \\n(_Qu
.ne \\n(_Qu+\n(.Vu \" keep it on one page
.@C 2\" \" .ev 2 may be jumbled from header
@@ -1123,7 +1181,11 @@
. tl """\\*(|p"
. rt \\n(_qu
.\}
+.if \\n(?n \
+. nm \\n(ln
.|e
+.if \\n(?n \
+. nm
.sp |\\n(_qu+\\n(_Qu
.sp \\n(esu+\\n(.Lv-1v
.rr _q
@@ -1157,12 +1219,14 @@
.de TH \" *** end header part of table
.nr T. 0
.T# 0
+.if \\n(?n \!.nm
.di
.nr _T \\n(?T
.nr ?T 0
.ne \\n(dnu+1v
.nr ?T \\n(_T
.nr _i \\n(.i
+.if \\n(?n .nm \\n(ln
.in 0
.|h\" \" put in the initial header
.in \\n(_iu
@@ -1189,117 +1253,7 @@
.\"
.\" REFER
.\"
-.de ][ \" *** refer output
-.if \\$1>5 .tm Bad arg to []
-.[\\$1
-..
-.
-.de [0 \" --- other
-.(f
-.ip "\\*([F.\0"
-.if !"\\*([A"" \\*([A,
-.if !"\\*([T"" \\f2\\*([T\\f1\c
-.if !"\\*([T"" .if !"\\*([O"" ,\ \"
-.ie !"\\*([O"" \\*([O
-.el .if !"\\*([T"" \&.
-.if !"\\*([D"" \\*([D.
-.@p
-.)f
-..
-.
-.de [1 \" --- journal article
-.(f
-.ip "\\*([F.\0"
-\\*([A,
-.if !"\\*([T"" \\*(lq\\*([T,\\*(rq
-.if "\\*([V"" \\f2\\*([J\\f1,
-.if !"\\*([V"" \\f2\\*([J\\f1
-.if !"\\*([V"" \\f3\\*([V\\f1\c
-.if !"\\*([N"" (\\*([N)\c
-.if !"\\*([P"" \
-\{\
-. ie \\n([P>0 \ pp.\&
-. el \ p.\&
-\\*([P
-.\}
-.if !"\\*([I"" .if "\\*([R"" \\*([I,
-(\\*([D).
-.if !"\\*([O"" \\*([O
-.)f
-..
-.
-.de [2 \" --- book
-.(f
-.ip "\\*([F.\0"
-\\*([A, \\f2\\*([T,\\f1
-\\*([I\c
-.if !"\\*([C"" , \\*([C\c
- (\\*([D).
-.if !"\\*([G"" Gov't. ordering no. \\*([G
-.if !"\\*([O"" \\*([O
-.)f
-..
-.
-.de [3 \" --- article in book
-.(f
-.ip "\\*([F.\0"
-\\*([A, \\*(lq\\*([T,\\*(rq
-.if !"\\*([P"" pp. \\*([P
-in \\f2\\*([B\\f1, \c
-.if !"\\*([E"" ed. \\*([E, \c
-.if !"\\*([I"" \\*([I\c
-.if !"\\*([C"" , \\*([C\c
- (\\*([D).
-.if !"\\*([O"" \\*([O
-.)f
-..
-.
-.de [4 \" --- report
-.(f
-.ip "\\*([F.\0"
-\\*([A, \\*(lq\\*([T,\\*(rq
-\\*([R\c
-.if !"\\*([G"" \& (\\*([G)\c
-.if !"\\*([I"" , \\*([I\c
-.if !"\\*([C"" , \\*([C\c
- (\\*([D).
-.if !"\\*([O"" \\*([O
-.)f
-..
-.
-.de [5 \" --- tm style
-.(f
-.ip "\\*([F.\0"
-\\*([A, \\f2\\*([T\\f1,
-.ie \\n(TN \\*([M.
-.el Bell Laboratories internal memorandum (\\*([D).
-.)f
-..
-.
-.de ]<
-.$p References
-.lp
-.rm (f )f
-..
-.
-.de ]>
-.sp
-..
-.
-.de ]-
-.rm [V [P [A [T [N [C [B [O [R [I [E [D
-..
-.
-.ie \n(.V<1v \
-\{\
-. ds [. \s-2\v'-.4m'\f1
-. ds .] \v'.4m'\s+2\fP
-.\}
-.el \
-\{\
-. ds [. " [
-. ds .] ]
-.\}
+.mso refer-me.tmac
.
.\"
.\" IDEAL
@@ -1330,9 +1284,41 @@ in \\f2\\*([B\\f1, \c
.ne \\$1u
.nr g7 \\n(.u
.ls 1
+.if \\n(?n \
+\{\
+. de PS_nm_check && \" define macro to emit .nm at top diversion
+. if \n@>4 .tm -- PS: \\\\$1 \\\\$2 .z=\\\\n(.z PS_nm_cnt=\\\\n[PS_nm_cnt]
+. \" \" multiple .PS/.PE in a keep.
+. if `\\\\$2`init` \
+. do nr PS_nm_cnt \\\\n[PS_nm_cnt]+1
+. ie `\\\\n(.z`` \
+\{\
+. if `\\\\$1`suspend` \
+. nm
+. if `\\\\$1`resume` \
+\{\
+. nm \\\\n(ln
+. do nr PS_nm_cnt \\\\n[PS_nm_cnt]-1
+. do if !\\\\n[PS_nm_cnt] \
+\{\
+. do rm PS_nm_check
+. do rr PS_nm_cnt
+.\}
+.\}
+.\}
+.el \!.PS_nm_check \\\\$1
+.&&
+. mk _q \" emit a single numbered line for PS picture
+. rs
+\&\
+. br
+. rt \\n(_qu
+. PS_nm_check suspend init
+.\}
..
.
.de PE \" *** end picture
+.if \\n(?n .PS_nm_check resume
.ls
.in
.if \\n(g7 .fi
@@ -1490,6 +1476,7 @@ in \\f2\\*([B\\f1, \c
. nr _D \\n(dn
. nr _0 1v+\\n(nlu
. ev 2
+. nm
. da |f
. in 0
. xl \\n($lu-\\n(fuu
@@ -1530,6 +1517,7 @@ in \\f2\\*([B\\f1, \c
.el \
\{\
. ev 2
+. nm
. in 0
. xl \\n($lu-\\n(fuu
. @F \\n(ff
diff --git a/tmac/europs.tmac b/tmac/europs.tmac
index bbb54f6..25c27c5 100644
--- a/tmac/europs.tmac
+++ b/tmac/europs.tmac
@@ -2,37 +2,37 @@
.
.do char \[eu] \f[EURO]\N'0'
.
-.do fschar AB \[Eu] \f[EURO]\N'1'
-.do fschar ABI \[Eu] \f[EURO]\N'3'
-.do fschar AI \[Eu] \f[EURO]\N'2'
-.do fschar AR \[Eu] \f[EURO]\N'0'
-.do fschar BMB \[Eu] \f[EURO]\N'5'
-.do fschar BMBI \[Eu] \f[EURO]\N'7'
-.do fschar BMI \[Eu] \f[EURO]\N'6'
-.do fschar BMR \[Eu] \f[EURO]\N'4'
-.do fschar CB \[Eu] \f[EURO]\N'13'
-.do fschar CBI \[Eu] \f[EURO]\N'15'
-.do fschar CI \[Eu] \f[EURO]\N'14'
-.do fschar CR \[Eu] \f[EURO]\N'12'
-.do fschar HB \[Eu] \f[EURO]\N'9'
-.do fschar HBI \[Eu] \f[EURO]\N'11'
-.do fschar HI \[Eu] \f[EURO]\N'10'
-.do fschar HR \[Eu] \f[EURO]\N'8'
-.do fschar HNB \[Eu] \f[EURO]\N'9'
-.do fschar HNBI \[Eu] \f[EURO]\N'11'
-.do fschar HNI \[Eu] \f[EURO]\N'10'
-.do fschar HNR \[Eu] \f[EURO]\N'8'
-.do fschar NB \[Eu] \f[EURO]\N'5'
-.do fschar NBI \[Eu] \f[EURO]\N'7'
-.do fschar NI \[Eu] \f[EURO]\N'6'
-.do fschar NR \[Eu] \f[EURO]\N'4'
-.do fschar PB \[Eu] \f[EURO]\N'5'
-.do fschar PBI \[Eu] \f[EURO]\N'7'
-.do fschar PI \[Eu] \f[EURO]\N'6'
-.do fschar PR \[Eu] \f[EURO]\N'4'
-.do fschar TB \[Eu] \f[EURO]\N'5'
-.do fschar TBI \[Eu] \f[EURO]\N'7'
-.do fschar TI \[Eu] \f[EURO]\N'6'
-.do fschar TR \[Eu] \f[EURO]\N'4'
+.do if F AB .do fschar AB \[Eu] \f[EURO]\N'1'
+.do if F ABI .do fschar ABI \[Eu] \f[EURO]\N'3'
+.do if F AI .do fschar AI \[Eu] \f[EURO]\N'2'
+.do if F AR .do fschar AR \[Eu] \f[EURO]\N'0'
+.do if F BMB .do fschar BMB \[Eu] \f[EURO]\N'5'
+.do if F BMBI .do fschar BMBI \[Eu] \f[EURO]\N'7'
+.do if F BMI .do fschar BMI \[Eu] \f[EURO]\N'6'
+.do if F BMR .do fschar BMR \[Eu] \f[EURO]\N'4'
+.do if F CB .do fschar CB \[Eu] \f[EURO]\N'13'
+.do if F CBI .do fschar CBI \[Eu] \f[EURO]\N'15'
+.do if F CI .do fschar CI \[Eu] \f[EURO]\N'14'
+.do if F CR .do fschar CR \[Eu] \f[EURO]\N'12'
+.do if F HB .do fschar HB \[Eu] \f[EURO]\N'9'
+.do if F HBI .do fschar HBI \[Eu] \f[EURO]\N'11'
+.do if F HI .do fschar HI \[Eu] \f[EURO]\N'10'
+.do if F HR .do fschar HR \[Eu] \f[EURO]\N'8'
+.do if F HNB .do fschar HNB \[Eu] \f[EURO]\N'9'
+.do if F HNBI .do fschar HNBI \[Eu] \f[EURO]\N'11'
+.do if F HNI .do fschar HNI \[Eu] \f[EURO]\N'10'
+.do if F HNR .do fschar HNR \[Eu] \f[EURO]\N'8'
+.do if F NB .do fschar NB \[Eu] \f[EURO]\N'5'
+.do if F NBI .do fschar NBI \[Eu] \f[EURO]\N'7'
+.do if F NI .do fschar NI \[Eu] \f[EURO]\N'6'
+.do if F NR .do fschar NR \[Eu] \f[EURO]\N'4'
+.do if F PB .do fschar PB \[Eu] \f[EURO]\N'5'
+.do if F PBI .do fschar PBI \[Eu] \f[EURO]\N'7'
+.do if F PI .do fschar PI \[Eu] \f[EURO]\N'6'
+.do if F PR .do fschar PR \[Eu] \f[EURO]\N'4'
+.do if F TB .do fschar TB \[Eu] \f[EURO]\N'5'
+.do if F TBI .do fschar TBI \[Eu] \f[EURO]\N'7'
+.do if F TI .do fschar TI \[Eu] \f[EURO]\N'6'
+.do if F TR .do fschar TR \[Eu] \f[EURO]\N'4'
.
.\" EOF
diff --git a/tmac/fallbacks.tmac b/tmac/fallbacks.tmac
new file mode 100644
index 0000000..56859b1
--- /dev/null
+++ b/tmac/fallbacks.tmac
@@ -0,0 +1,61 @@
+.\" fallbacks.tmac
+.\"
+.\" This file contains generic fallback characters.
+.
+.
+.\" fall back to GREEK CAPITAL LETTER DELTA for INCREMENT
+.fchar \[u2206] \[u0394]
+.
+.
+.\" NB: as per http://unicode.org/Public/UNIDATA/NamesList.txt
+.\"
+.\" #!/usr/bin/perl
+.\" ## Ivan Shmakov, 2012.
+.\" ## This code is in the public-domain.
+.\" my $u;
+.\" while (<>) {
+.\" $u = oct ("0x" . $1)
+.\" if (/^([[:xdigit:]]{4})/);
+.\" next unless (defined ($u) && $u >= 0x2160 && $u <= 0x217F);
+.\" if (/^\s+#\s+([[:xdigit:][:blank:]]+)(\s.*)?$/) {
+.\" ## NB: may make sense to map to \[uXXXX]'s instead
+.\" printf (".fchar \\[u%04x] %s\n", $u,
+.\" pack ("U*", map { oct ("0x" . $_); } split (/ /, $1)));
+.\" $u = undef;
+.\" }
+.\" }
+.
+.fchar \[u2160] I
+.fchar \[u2161] II
+.fchar \[u2162] III
+.fchar \[u2163] IV
+.fchar \[u2164] V
+.fchar \[u2165] VI
+.fchar \[u2166] VII
+.fchar \[u2167] VIII
+.fchar \[u2168] IX
+.fchar \[u2169] X
+.fchar \[u216a] XI
+.fchar \[u216b] XII
+.fchar \[u216c] L
+.fchar \[u216d] C
+.fchar \[u216e] D
+.fchar \[u216f] M
+.fchar \[u2170] i
+.fchar \[u2171] ii
+.fchar \[u2172] iii
+.fchar \[u2173] iv
+.fchar \[u2174] v
+.fchar \[u2175] vi
+.fchar \[u2176] vii
+.fchar \[u2177] viii
+.fchar \[u2178] ix
+.fchar \[u2179] x
+.fchar \[u217a] xi
+.fchar \[u217b] xii
+.fchar \[u217c] l
+.fchar \[u217d] c
+.fchar \[u217e] d
+.fchar \[u217f] m
+.
+.\" EOF
diff --git a/tmac/groff_man.man b/tmac/groff_man.man
index 29503d3..e885294 100644
--- a/tmac/groff_man.man
+++ b/tmac/groff_man.man
@@ -1,5 +1,5 @@
.ig
-Copyright (C) 1999-2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
+Copyright (C) 1999-2005, 2007-2009, 2011
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
@@ -518,7 +518,7 @@ configuration-file examples.
.
The
.B EE
-macro restores the previous font.
+macro restores filling and restores the previous font.
.
.IP
These macros are defined on many (but not all) legacy Unix systems
@@ -880,7 +880,7 @@ to express are likely to be lost.
.
If you feel tempted to use it, you should probably be composing a
table using
-.BR @g@tbl (@MAN1DIR@)
+.BR @g@tbl (@MAN1EXT@)
markup instead.
.
.TP
@@ -1101,6 +1101,15 @@ portability to legacy Unix systems are encouraged to copy these
definitions into their pages, and maintainers of troff
or its workalikes are encouraged to re-use them.
.
+.IP
+Note that the definitions for these macros are read after the call of
+.BR TH ,
+so they will replace macros of the same names given at the beginning of
+your file.
+If you must use your own definitions for these macros, they must be
+given after calling
+.BR TH .
+.
.TP
.B man.local
Local changes and customizations should be put into this file.
diff --git a/tmac/groff_mdoc.man b/tmac/groff_mdoc.man
index 309bf1b..43c61d3 100644
--- a/tmac/groff_mdoc.man
+++ b/tmac/groff_mdoc.man
@@ -1,3 +1,4 @@
+.\" t
.\" groff_mdoc.man
.\"
.\" A complete reference of the mdoc macro package for GNU troff.
@@ -613,10 +614,10 @@ These commands identify the page and are discussed below in
The remaining items in the template are section headers
.Pf ( Li .Sh ) ;
of which
-.Sx NAME ,
-.Sx SYNOPSIS ,
+.Em NAME ,
+.Em SYNOPSIS ,
and
-.Sx DESCRIPTION
+.Em DESCRIPTION
are mandatory.
The headers are discussed in
.Sx "PAGE STRUCTURE DOMAIN" ,
@@ -723,34 +724,36 @@ Under
.Tn \*[operating-system] ,
the following sections are defined:
.Pp
-.Bl -column LOCAL -offset indent -compact
-.It Li 1 Ta "\*[volume-operating-system] \*[volume-ds-1]"
-.It Li 2 Ta "\*[volume-operating-system] \*[volume-ds-2]"
-.It Li 3 Ta "\*[volume-operating-system] \*[volume-ds-3]"
-.It Li 4 Ta "\*[volume-operating-system] \*[volume-ds-4]"
-.It Li 5 Ta "\*[volume-operating-system] \*[volume-ds-5]"
-.It Li 6 Ta "\*[volume-operating-system] \*[volume-ds-6]"
-.It Li 7 Ta "\*[volume-operating-system] \*[volume-ds-7]"
-.It Li 8 Ta "\*[volume-operating-system] \*[volume-ds-8]"
-.It Li 9 Ta "\*[volume-operating-system] \*[volume-ds-9]"
-.El
+.TS
+l l l.
+1 \*[volume-operating-system] \*[volume-ds-1]
+2 \*[volume-operating-system] \*[volume-ds-2]
+3 \*[volume-operating-system] \*[volume-ds-3]
+4 \*[volume-operating-system] \*[volume-ds-4]
+5 \*[volume-operating-system] \*[volume-ds-5]
+6 \*[volume-operating-system] \*[volume-ds-6]
+7 \*[volume-operating-system] \*[volume-ds-7]
+8 \*[volume-operating-system] \*[volume-ds-8]
+9 \*[volume-operating-system] \*[volume-ds-9]
+.TE
.Pp
.
A volume name may be arbitrary or one of the following:
.
.Pp
-.Bl -column LOCAL -offset indent -compact
-.It Li USD Ta "\*[volume-ds-USD]"
-.It Li PS1 Ta "\*[volume-ds-PS1]"
-.It Li AMD Ta "\*[volume-ds-AMD]"
-.It Li SMM Ta "\*[volume-ds-SMM]"
-.It Li URM Ta "\*[volume-ds-URM]"
-.It Li PRM Ta "\*[volume-ds-PRM]"
-.It Li KM Ta "\*[volume-ds-KM]"
-.It Li IND Ta "\*[volume-ds-IND]"
-.It Li LOCAL Ta "\*[volume-ds-LOCAL]"
-.It Li CON Ta "\*[volume-ds-CON]"
-.El
+.TS
+l l.
+USD \*[volume-ds-USD]
+PS1 \*[volume-ds-PS1]
+AMD \*[volume-ds-AMD]
+SMM \*[volume-ds-SMM]
+URM \*[volume-ds-URM]
+PRM \*[volume-ds-PRM]
+KM \*[volume-ds-KM]
+IND \*[volume-ds-IND]
+LOCAL \*[volume-ds-LOCAL]
+CON \*[volume-ds-CON]
+.TE
.Pp
.
For compatibility,
@@ -769,13 +772,18 @@ By default, the following architecture keywords are defined:
.
\# we use `No' to avoid hyphenation
.Bd -ragged -offset indent
-.No alpha , acorn26 , acorn32 , algor , amd64 , amiga , arc , arm26 ,
-.No arm32 , atari , bebox , cats , cesfic , cobalt , dreamcast , evbarm ,
-.No evbmips , evbppc , evbsh3 , hp300 , hp700 , hpcmips , i386 , luna68k ,
-.No m68k , mac68k , macppc , mips , mmeye , mvme68k , mvmeppc , netwinder ,
-.No news68k , newsmips , next68k , ofppc , pc532 , pmax , pmppc , powerpc ,
-.No prep , sandpoint , sgimips , sh3 , shark , sparc , sparc64 , sun3 ,
-.No tahoe , vax , x68k , x86_64
+.No acorn26 , acorn32 , algor , alpha , amd64 , amiga , amigappc ,
+.No arc , arm , arm26 , arm32 , armish , atari , aviion ,
+.No beagle , bebox , cats , cesfic , cobalt , dreamcast ,
+.No emips , evbarm , evbmips , evbppc , evbsh3 , ews4800mips ,
+.No hp300 , hp700 , hpcarm , hpcmips , hpcsh , hppa , hppa64 ,
+.No i386 , ia64 , ibmnws , iyonix , landisk , loongson , luna68k , luna88k ,
+.No m68k , mac68k , macppc , mips , mips64 , mipsco , mmeye ,
+.No mvme68k , mvme88k , mvmeppc , netwinder , news68k , newsmips , next68k ,
+.No ofppc , palm , pc532 , playstation2 , pmax , pmppc , powerpc , prep ,
+.No rs6000 , sandpoint , sbmips , sgi , sgimips , sh3 , shark ,
+.No socppc , solbourne , sparc , sparc64 , sun2 , sun3 ,
+.No tahoe , vax , x68k , x86_64 , xen , zaurus
.Ed
.Pp
.
@@ -864,23 +872,25 @@ the release ID.
.It NetBSD
0.8, 0.8a, 0.9, 0.9a, 1.0, 1.0a, 1.1, 1.2, 1.2a, 1.2b, 1.2c, 1.2d, 1.2e,
1.3, 1.3a, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.5, 1.5.1, 1.5.2, 1.5.3, 1.6, 1.6.1,
-1.6.2, 1.6.3, 2.0, 2.0.1, 2.0.2, 2.0.3, 2.1, 3.0, 3.0.1, 3.0.2, 3.1, 4.0,
-4.0.1, 5.0, 5.0.1, 5.0.2
+1.6.2, 1.6.3, 2.0, 2.0.1, 2.0.2, 2.0.3, 2.1, 3.0, 3.0.1, 3.0.2, 3.0.3,
+3.1, 3.1.1, 4.0, 4.0.1, 5.0, 5.0.1, 5.0.2, 5.1, 6.0
.It FreeBSD
1.0, 1.1, 1.1.5, 1.1.5.1, 2.0, 2.0.5, 2.1, 2.1.5, 2.1.6, 2.1.7, 2.2, 2.2.1,
2.2.2, 2.2.5, 2.2.6, 2.2.7, 2.2.8, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 4.0, 4.1,
4.1.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.6.2, 4.7, 4.8, 4.9, 4.10, 4.11, 5.0, 5.1,
5.2, 5.2.1, 5.3, 5.4, 5.5, 6.0, 6.1, 6.2, 6.3, 6.4, 7.0, 7.1, 7.2, 7.3, 8.0,
-8.1
+8.1, 8.2, 9.0
.It OpenBSD
2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4,
-3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8
+3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9,
+5.0
.It DragonFly
1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.8, 1.8.1, 1.10, 1.12, 1.12.2, 2.0, 2.2,
-2.4, 2.6, 2.8
+2.4, 2.6, 2.8, 2.9, 2.9.1, 2.10, 2.10.1, 2.11
.It Darwin
8.0.0, 8.1.0, 8.2.0, 8.3.0, 8.4.0, 8.5.0, 8.6.0, 8.7.0, 8.8.0, 8.9.0,
-8.10.0, 8.11.0, 9.0.0, 9.1.0, 9.2.0, 9.3.0, 9.4.0, 9.5.0, 9.6.0
+8.10.0, 8.11.0, 9.0.0, 9.1.0, 9.2.0, 9.3.0, 9.4.0, 9.5.0, 9.6.0, 9.7.0,
+9.8.0, 10.1.0, 10.2.0, 10.3.0, 10.4.0, 10.5.0, 10.6.0, 10.7.0, 11.0.0
.El
.Ed
.Pp
@@ -1201,7 +1211,7 @@ documented, or the name of the author of the actual manual page.
The default width is 12n.
.Pp
In the
-.Sx AUTHORS
+.Em AUTHORS
section, the
.Ql .An
command causes a line break allowing each new name to appear on its own
@@ -1673,33 +1683,73 @@ Available arguments to
and their results are:
.
.Pp
-.Bl -tag -width ".Li libossaudio" -compact -offset indent
+.Bl -tag -width ".Li librpcsec_gss" -compact -offset indent
+.It Li libarchive
+.Lb libarchive
.It Li libarm
.Lb libarm
.It Li libarm32
.Lb libarm32
+.It Li libbluetooth
+.Lb libbluetooth
+.It Li libbsm
+.Lb libbsm
.It Li libc
.Lb libc
+.It Li libc_r
+.Lb libc_r
+.It Li libcalendar
+.Lb libcalendar
+.It Li libcam
+.Lb libcam
.It Li libcdk
.Lb libcdk
+.It Li libcipher
+.Lb libcipher
.It Li libcompat
.Lb libcompat
.It Li libcrypt
.Lb libcrypt
.It Li libcurses
.Lb libcurses
+.It Li libdevinfo
+.Lb libdevinfo
+.It Li libdevstat
+.Lb libdevstat
+.It Li libdisk
+.Lb libdisk
+.It Li libdwarf
+.Lb libdwarf
.It Li libedit
.Lb libedit
+.It Li libelf
+.Lb libelf
.It Li libevent
.Lb libevent
+.It Li libfetch
+.Lb libfetch
.It Li libform
.Lb libform
+.It Li libgeom
+.Lb libgeom
+.It Li libgpib
+.Lb libgpib
.It Li libi386
.Lb libi386
.It Li libintl
.Lb libintl
.It Li libipsec
.Lb libipsec
+.It Li libipx
+.Lb libipx
+.It Li libiscsi
+.Lb libiscsi
+.It Li libjail
+.Lb libjail
+.It Li libkiconv
+.Lb libkiconv
+.It Li libkse
+.Lb libkse
.It Li libkvm
.Lb libkvm
.It Li libm
@@ -1708,8 +1758,16 @@ and their results are:
.Lb libm68k
.It Li libmagic
.Lb libmagic
+.It Li libmd
+.Lb libmd
+.It Li libmemstat
+.Lb libmemstat
.It Li libmenu
.Lb libmenu
+.It Li libnetgraph
+.Lb libnetgraph
+.It Li libnetpgp
+.Lb libnetpgp
.It Li libossaudio
.Lb libossaudio
.It Li libpam
@@ -1722,18 +1780,46 @@ and their results are:
.Lb libpmc
.It Li libposix
.Lb libposix
+.It Li libprop
+.Lb libprop
.It Li libpthread
.Lb libpthread
+.It Li libpuffs
+.Lb libpuffs
+.It Li librefuse
+.Lb librefuse
.It Li libresolv
.Lb libresolv
+.It Li librpcsec_gss
+.Lb librpcsec_gss
+.It Li librpcsvc
+.Lb librpcsvc
.It Li librt
.Lb librt
+.It Li libsdp
+.Lb libsdp
+.It Li libssp
+.Lb libssp
+.It Li libSystem
+.Lb libSystem
.It Li libtermcap
.Lb libtermcap
+.It Li libterminfo
+.Lb libterminfo
+.It Li libthr
+.Lb libthr
+.It Li libufs
+.Lb libufs
+.It Li libugidfw
+.Lb libugidfw
+.It Li libulog
+.Lb libulog
.It Li libusbhid
.Lb libusbhid
.It Li libutil
.Lb libutil
+.It Li libvgl
+.Lb libvgl
.It Li libx86_64
.Lb libx86_64
.It Li libz
@@ -1751,7 +1837,7 @@ then denotes the keyword to be used with the
macro.
.Pp
In the
-.Sx LIBRARY
+.Em LIBRARY
section an
.Ql .Lb
command causes a line break before and after its arguments are printed.
@@ -1799,7 +1885,7 @@ section.
Note: A section two or three document function name is addressed with the
.Ql .Nm
in the
-.Sx NAME
+.Em NAME
section, and with
.Ql .Fn
in the
@@ -1953,6 +2039,8 @@ are:
.St -isoC-90
.It Li \-isoC\-99
.St -isoC-99
+.It Li \-isoC\-2011
+.St -isoC-2011
.El
.Pp
.
@@ -2313,20 +2401,20 @@ respectively.
.if t \
. ne 10
.
-.Bd -filled -offset 4n
-.Bl -column "quote" "close" "open" "Angle Bracket Enclosure" "`string' or string"
-.Em Quote Ta Em Open Ta Em Close Ta Em Function Ta Em Result
-.No .Aq Ta .Ao Ta .Ac Ta "Angle Bracket Enclosure" Ta Ao string Ac
-.No .Bq Ta .Bo Ta .Bc Ta "Bracket Enclosure" Ta Bo string Bc
-.No .Brq Ta .Bro Ta .Brc Ta "Brace Enclosure" Ta Bro string Brc
-.No .Dq Ta .Do Ta .Dc Ta "Double Quote" Ta Do string Dc
-.No .Eq Ta .Eo Ta .Ec Ta "Enclose String (in XX)" Ta XXstringXX
-.No .Pq Ta .Po Ta .Pc Ta "Parenthesis Enclosure" Ta Po string Pc
-.No .Ql Ta Ta Ta "Quoted Literal" Ta So string Sc or Li string
-.No .Qq Ta .Qo Ta .Qc Ta "Straight Double Quote" Ta Qo string Qc
-.No .Sq Ta .So Ta .Sc Ta "Single Quote" Ta So string Sc
-.El
-.Ed
+.TS
+lb lb lb lb lb
+l l l l l.
+Quote Open Close Function Result
+\&.Aq .Ao .Ac Angle Bracket Enclosure <string>
+\&.Bq .Bo .Bc Bracket Enclosure [string]
+\&.Brq .Bro .Brc Brace Enclosure {string}
+\&.Dq .Do .Dc Double Quote "string"
+\&.Eq .Eo .Ec Enclose String (in XX) XXstring
+\&.Pq .Po .Pc Parenthesis Enclosure (string)
+\&.Ql Quoted Literal \*[Lq]string\*[Rq] or string
+\&.Qq .Qo .Qc Straight Double Quote "string"
+\&.Sq .So .Sc Single Quote 'string'
+.TE
.Pp
All macros ending with
.Sq q
@@ -2754,7 +2842,7 @@ macro is mandatory.
If not specified, headers, footers and page layout defaults will not be set
and things will be rather unpleasant.
The
-.Sx NAME
+.Em NAME
section consists of at least three items.
The first is the
.Ql .Nm
@@ -2864,7 +2952,7 @@ They are listed in the order in which they would be used.
.Bl -tag -width ".Li .Sh\ COMPATIBILITY"
.It Li ".Sh ENVIRONMENT"
The
-.Sx ENVIRONMENT
+.Em ENVIRONMENT
section should reveal any related environment variables and clues to their
behavior and/or usage.
.
@@ -2879,7 +2967,7 @@ section.
.It Li ".Sh EXAMPLES"
There are several ways to create examples.
See the
-.Sx EXAMPLES
+.Em EXAMPLES
section below for details.
.
.It Li ".Sh DIAGNOSTICS"
@@ -2934,7 +3022,7 @@ or
this should be noted here.
If the command does not adhere to any standard, its history should be noted
in the
-.Sx HISTORY
+.Em HISTORY
section.
.
.It Li ".Sh HISTORY"
@@ -3960,28 +4048,30 @@ It is neither callable nor parsed and takes no arguments.
.
The following strings are predefined:
.Pp
-.Bl -column String infinity "Troff " "straight double quote" -offset indent
-.It Sy String Ta Sy Nroff Ta Sy Troff Ta Sy Meaning
-.It Li <= Ta <= Ta \*[<=] Ta "less equal"
-.It Li >= Ta >= Ta \*[>=] Ta "greater equal"
-.It Li Rq Ta '' Ta \*[Rq] Ta "right double quote"
-.It Li Lq Ta `` Ta \*[Lq] Ta "left double quote"
-.It Li ua Ta ^ Ta \*[ua] Ta "upwards arrow"
-.It Li aa Ta \' Ta \*[aa] Ta "acute accent"
-.It Li ga Ta \` Ta \*[ga] Ta "grave accent"
-.It Li q Ta \&" Ta \*[q] Ta "straight double quote"
-.It Li Pi Ta pi Ta \*[Pi] Ta "greek pi"
-.It Li Ne Ta != Ta \*[Ne] Ta "not equal"
-.It Li Le Ta <= Ta \*[Le] Ta "less equal"
-.It Li Ge Ta >= Ta \*[Ge] Ta "greater equal"
-.It Li Lt Ta < Ta \*[Lt] Ta "less than"
-.It Li Gt Ta > Ta \*[Gt] Ta "greater than"
-.It Li Pm Ta +\- Ta \*[Pm] Ta "plus minus"
-.It Li If Ta infinity Ta \*[If] Ta "infinity"
-.It Li Am Ta \*[Am] Ta \*[Am] Ta "ampersand"
-.It Li Na Ta \*[Na] Ta \*[Na] Ta "not a number"
-.It Li Ba Ta \*[Ba] Ta \*[Ba] Ta "vertical bar"
-.El
+.TS
+lb lb lb lb
+l l l l.
+String Nroff Troff Meaning
+<= <= \*[<=] less equal
+>= >= \*[>=] greater equal
+Rq '' \*[Rq] right double quote
+Lq `` \*[Lq] left double quote
+ua ^ \*[ua] upwards arrow
+aa \' \*[aa] acute accent
+ga \` \*[ga] grave accent
+q \&" \*[q] straight double quote
+Pi pi \*[Pi] greek pi
+Ne != \*[Ne] not equal
+Le <= \*[Le] less equal
+Ge >= \*[Ge] greater equal
+Lt < \*[Lt] less than
+Gt > \*[Gt] greater than
+Pm +\- \*[Pm] plus minus
+If infinity \*[If] infinity
+Am \*[Am] \*[Am] ampersand
+Na \*[Na] \*[Na] not a number
+Ba \*[Ba] \*[Ba] vertical bar
+.TE
.Pp
The names of the columns
.Sy Nroff
@@ -4127,7 +4217,7 @@ Section 3f has not been added to the header routines.
.Pp
.Ql \&.Nm
font should be changed in
-.Sx NAME
+.Em NAME
section.
.Pp
.Ql \&.Fn
diff --git a/tmac/groff_me.man b/tmac/groff_me.man
index 91d2043..fa70097 100644
--- a/tmac/groff_me.man
+++ b/tmac/groff_me.man
@@ -1,3 +1,4 @@
+.\" t
.\" Copyright (c) 1980 The Regents of the University of California.
.\" All rights reserved.
.\"
@@ -16,8 +17,10 @@
.\" @(#)me.7 6.4 (Berkeley) 4/13/90
.\"
.\" Modified for groff by jjc@jclark.com
+.\" Changed to use TBL and eliminate low-level troff hackery by ESR
+.\" (this enables it to be lifted to structural markup).
.hc %
-.TH GROFF_ME @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
+.TH GROFF_ME @MAN7EXT@ "@MDATE@" "@VERSION@"
.UC 3
.SH NAME
groff_me \- troff macros for formatting papers
@@ -36,7 +39,7 @@ This version can be used with both GNU troff and Unix troff.
This package of
.I troff
macro definitions provides a canned formatting
-facility for tech%nical papers in various formats.
+facility for technical papers in various formats.
.PP
The macro requests are defined below.
Many
@@ -44,17 +47,16 @@ Many
requests are unsafe in conjunction with
this package, however, these requests may be used with
impunity after the first .pp:
-.nf
-.IP
-.ta \w'.sz +n 'u
+.TS
+l l.
\&.bp begin new page
\&.br break output line here
\&.sp n insert n spacing lines
\&.ls n (line spacing) n=1 single, n=2 double space
\&.na no alignment of right margin
-\&.ce n center next n lines
+\&.ce n center next n lines
\&.ul n underline next n lines
-.fi
+.TE
.PP
Output of the
.I pic,
@@ -65,12 +67,12 @@ and
preprocessors
is acceptable as input.
.SH FILES
-@MACRODIR@/me.tmac (a wrapper file for e.tmac)
+/usr/share/groff/1.21/tmac/me.tmac (a wrapper file for e.tmac)
.br
-@MACRODIR@/e.tmac
+/usr/share/groff/1.21/tmac/e.tmac
.SH "SEE ALSO"
-.BR groff (@MAN1EXT@),
-.BR @g@troff (@MAN1EXT@)
+.BR groff (1),
+.BR troff (1)
.br
\-me Reference Manual, Eric P. Allman
.br
@@ -82,51 +84,28 @@ see
.I "The \-me Reference Manual"
for interesting details.
.PP
-.ta \w'.eh \'x\'y\'z\' 'u +\w'Initial 'u +\w'Cause 'u
-.br
-.di x
- \ka
-.br
-.di
-.na
-.in \nau
-.ti 0
-Request Initial Cause Explanation
-.ti 0
+.TS
+expand;
+l l l l.
+Request Initial Causes Explanation
Value Break
-.br
-.in \nau
-.ti 0
-\&.(c - yes Begin centered block
-.ti 0
-\&.(d - no Begin delayed text
-.ti 0
-\&.(f - no Begin footnote
-.ti 0
-\&.(l - yes Begin list
-.ti 0
-\&.(q - yes Begin major quote
-.ti 0
-\&.(x \fIx\fR - no Begin indexed item in index
-.I x
-.ti 0
-\&.(z - no Begin floating keep
-.ti 0
-\&.)c - yes End centered block
-.ti 0
-\&.)d - yes End delayed text
-.ti 0
-\&.)f - yes End footnote
-.ti 0
-\&.)l - yes End list
-.ti 0
-\&.)q - yes End major quote
-.ti 0
-\&.)x - yes End index item
-.ti 0
-\&.)z - yes End floating keep
-.ti 0
-\&.++ \fIm H\fR - no Define paper section.
+_
+\&.(c \- yes Begin centered block
+\&.(d \- no Begin delayed text
+\&.(f \- no Begin footnote
+\&.(l \- yes Begin list
+\&.(q \- yes Begin major quote
+\&.(x \fIx\fR \- no Begin indexed item in index
+\&.(z \- no Begin floating keep
+\&.)c \- yes End centered block
+\&.)d \- yes End delayed text
+\&.)f \- yes End footnote
+\&.)l \- yes End list
+\&.)q \- yes End major quote
+\&.)x \- yes End index item
+\&.)z \- yes End floating keep
+\&.++ \fIm H\fR \- no T{
+Define paper section.
.I m
defines the part of the paper, and can be
.B C
@@ -142,23 +121,24 @@ defines the part of the paper, and can be
or
.B RA
(appendix renumbered from page one).
-.ti 0
-\&.+c \fIT\fR - yes Begin chapter (or appendix, etc., as
+T}
+\&.+c \fIT\fR \- yes T{
+Begin chapter (or appendix, etc., as
set by .++).
.I T
is the chapter title.
-.ti 0
+T}
\&.1c 1 yes One column format on a new page.
-.ti 0
\&.2c 1 yes Two column format.
-.ti 0
-\&.EN - yes Space after equation
+\&.EN \- yes T{
+Space after equation
produced by
.I eqn
or
.IR neqn .
-.ti 0
-\&.EQ \fIx y\fR - yes Precede equation; break out and
+T}
+\&.EQ \fIx y\fR \- yes T{
+Precede equation; break out and
add space.
Equation number is
.IR y .
@@ -170,113 +150,102 @@ to indent equation (default),
to left-adjust the equation, or
.I C
to center the equation.
-.ti 0
-\&.GE - yes End \fIgremlin\fP picture.
-.ti 0
-\&.GS - yes Begin \fIgremlin\fP picture.
-.ti 0
-\&.PE - yes End \fIpic\fP picture.
-.ti 0
-\&.PS - yes Begin \fIpic\fP picture.
-.ti 0
-\&.TE - yes End table.
-.ti 0
-\&.TH - yes End heading section of table.
-.ti 0
-\&.TS \fIx\fR - yes Begin table; if \fIx\fR is
+T}
+\&.GE \- yes End \fIgremlin\fP picture.
+\&.GS \- yes Begin \fIgremlin\fP picture.
+\&.PE \- yes End \fIpic\fP picture.
+\&.PS \- yes Begin \fIpic\fP picture.
+\&.TE \- yes End table.
+\&.TH \- yes End heading section of table.
+\&.TS \fIx\fR \- yes T{
+Begin table; if \fIx\fR is
.I H
table has repeated heading.
-.ti 0
-\&.b \fIx\fR no no Print
+T}
+\&.b \fIx\fR no no T{
+Print
.I x
in boldface; if no argument switch to boldface.
-.ti 0
-\&.ba \fI+n\fR 0 yes Augments the base indent by
+T}
+\&.ba \fI+n\fR 0 yes T{
+Augments the base indent by
.I n.
This indent is used to set the indent on regular text
(like paragraphs).
-.ti 0
+T}
\&.bc no yes Begin new column
-.ti 0
-\&.bi \fIx\fR no no Print
+\&.bi \fIx\fR no no T{
+Print
.I x
in bold italics (nofill only)
-.ti 0
-\&.bu - yes Begin bulleted paragraph
-.ti 0
+T}
+\&.bu \- yes Begin bulleted paragraph
\&.bx \fIx\fR no no Print \fIx\fR in a box (nofill only).
-.ti 0
\&.ef \fI\'x\'y\'z\'\fR \'\'\'\' no Set even footer to x y z
-.ti 0
\&.eh \fI\'x\'y\'z\'\fR \'\'\'\' no Set even header to x y z
-.ti 0
\&.fo \fI\'x\'y\'z\'\fR \'\'\'\' no Set footer to x y z
-.ti 0
-\&.hx - no Suppress headers and footers on next page.
-.ti 0
+\&.hx \- no Suppress headers and footers on next page.
\&.he \fI\'x\'y\'z\'\fR \'\'\'\' no Set header to x y z
-.ti 0
-\&.hl - yes Draw a horizontal line
-.ti 0
-\&.i \fIx\fR no no Italicize
+\&.hl \- yes Draw a horizontal line
+\&.i \fIx\fR no no T{
+Italicize
.I x;
if
.I x
missing, italic text follows.
-.ti 0
-\&.ip \fIx y\fR no yes Start indented paragraph,
+T}
+\&.ip \fIx y\fR no yes T{
+Start indented paragraph,
with hanging tag
.IR x .
Indentation is
.I y
ens (default 5).
-.ti 0
+T}
\&.lp yes yes Start left-blocked paragraph.
-.ti 0
\&.np 1 yes Start numbered paragraph.
-.ti 0
\&.of \fI\'x\'y\'z\'\fR \'\'\'\' no Set odd footer to x y z
-.ti 0
\&.oh \fI\'x\'y\'z\'\fR \'\'\'\' no Set odd header to x y z
-.ti 0
-\&.pd - yes Print delayed text.
-.ti 0
-\&.pp no yes Begin paragraph.
+\&.pd \- yes Print delayed text.
+\&.pp no yes T{
+Begin paragraph.
First line indented.
-.ti 0
+T}
\&.r yes no Roman text follows.
-.ti 0
-\&.re - no Reset tabs to default values.
-.ti 0
-\&.sh \fIn x\fR - yes Section head follows,
+\&.re \- no Reset tabs to default values.
+\&.sh \fIn x\fR \- yes T{
+Section head follows,
font automatically bold.
.I n
is level of section,
.I x
is title of section.
-.ti 0
-\&.sk no no Leave the next page blank.
+T}
+\&.sk no no T{
+Leave the next page blank.
Only one page is remembered ahead.
-.ti 0
-\&.sm \fIx\fR - no Set
+T}
+\&.sm \fIx\fR \- no T{
+Set
.I x
in a smaller pointsize.
-.ti 0
-\&.sz \fI+n\fR 10p no Augment the point size by
+T}
+\&.sz \fI+n\fR 10p no T{
+Augment the point size by
.I n
points.
-.ti 0
+T}
\&.tp no yes Begin title page.
-.ti 0
-\&.u \fIx\fR - no Underline argument (even in \fItroff\fR).
+\&.u \fIx\fR \- no T{
+Underline argument (even in \fItroff\fR).
(Nofill only).
-.ti 0
-\&.uh - yes Like .sh but unnumbered.
-.ti 0
-\&.xp \fIx\fR - no Print index
-.I x.
-.ad
+T}
+\&.uh \- yes Like .sh but unnumbered.
+\&.xp \fIx\fR \- no Print index.
+.TE
+
.
.\" Local Variables:
.\" mode: nroff
+.\" tab-with: 20
.\" End:
diff --git a/tmac/groff_ms.man b/tmac/groff_ms.man
index 288cc7f..b175176 100644
--- a/tmac/groff_ms.man
+++ b/tmac/groff_ms.man
@@ -1,7 +1,6 @@
'\" t
.ig
-Copyright (C) 1989-1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009,
- 2010
+Copyright (C) 1989-1995, 2001-2007, 2009-2011
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -399,7 +398,7 @@ when a section heading
(see subsection
.I Headings
below)
-preceeds any of these paragraph types,
+precedes any of these paragraph types,
the
.B HORPHANS
document control register specifies the
@@ -610,7 +609,7 @@ given the same settings for
.B GROWPS
and
.BR PSINCR ,
-as used in the preceeding
+as used in the preceding
.B .NH
example,
the sequence:
diff --git a/tmac/groff_trace.man b/tmac/groff_trace.man
index c3631b3..0c78037 100644
--- a/tmac/groff_trace.man
+++ b/tmac/groff_trace.man
@@ -10,7 +10,7 @@ This file is part of groff, the GNU roff type-setting system.
Copyright (C) 2002, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
-written by Bernd Warken.
+written by Bernd Warken <groff-bernd.warken-72@web.de>.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -287,7 +287,7 @@ This document is part of
.IR groff ,
the GNU roff distribution.
.
-It was written by Bernd Warken.
+It was written by Bernd Warken <groff-bernd.warken-72@web.de>.
.
.
.\" --------------------------------------------------------------------
diff --git a/tmac/groff_www.man b/tmac/groff_www.man
index f17d8ab..5616dd1 100644
--- a/tmac/groff_www.man
+++ b/tmac/groff_www.man
@@ -1,5 +1,5 @@
.TH GROFF_WWW @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
-.\" Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009
+.\" Copyright (C) 2000-2006, 2008, 2009, 2011
.\" Free Software Foundation, Inc.
.\" Written by Gaius Mulley (gaius@glam.ac.uk)
.\"
@@ -473,7 +473,7 @@ macro is defined as
.nf
.ft B
\&.de BGIMG
-\&. HTML <body background=\[rs]$1>
+\&. HTML <body background=\[rs]\[rs]$1>
\&..
.ft P
.fi
diff --git a/tmac/pdf.tmac b/tmac/pdf.tmac
new file mode 100644
index 0000000..04d1c52
--- /dev/null
+++ b/tmac/pdf.tmac
@@ -0,0 +1,798 @@
+.ig
+
+pdf.tmac
+
+ Copyright (C) 2011-2013 Free Software Foundation, Inc.
+ Written by Deri James <deri@chuzzlewit.myzen.co.uk>
+
+This file is part of groff.
+
+groff is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+groff is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Author's Note
+=============
+
+Much of the code in this macro has come from the excellent original work by
+Keith Marshall (see attribution in the pdfmark.tmac file). I, however,
+am solely responsible for any bugs I may have introduced into this file.
+..
+.mso ps.tmac
+.
+.de pdf:SS
+. char \\$1 \\S'16'\\$1\\S'0'
+..
+.pdf:SS \[+h]
+.pdf:SS \[ts]
+.pdf:SS \[*a]
+.pdf:SS \[*b]
+.pdf:SS \[*x]
+.pdf:SS \[*d]
+.pdf:SS \[*e]
+.pdf:SS \[*f]
+.pdf:SS \[*g]
+.pdf:SS \[*y]
+.pdf:SS \[*i]
+.pdf:SS \[+f]
+.pdf:SS \[*k]
+.pdf:SS \[*l]
+.pdf:SS \[*m]
+.pdf:SS \[*n]
+.pdf:SS \[*o]
+.pdf:SS \[*p]
+.pdf:SS \[*h]
+.pdf:SS \[*r]
+.pdf:SS \[*s]
+.pdf:SS \[*t]
+.pdf:SS \[*u]
+.pdf:SS \[+p]
+.pdf:SS \[*w]
+.pdf:SS \[*c]
+.pdf:SS \[*q]
+.pdf:SS \[*z]
+.char \[lh] \X'pdf: xrev'\[rh]\X'pdf: xrev'
+.nr pdf:bm.nl 1
+.de pdfmark
+. nop \!x X ps:exec [\\$* pdfmark
+..
+.de pdf:warn
+. tm \\n(.F:\\n(.c: macro warning: \\$*
+..
+.de pdf:error
+. tm \\n(.F:\\n(.c: macro error: \\$*
+..
+.de pdfinfo
+.\" -------------------------------------------------------------------
+.\" Usage:
+.\" .pdfinfo /FieldName field content ...
+.\" Examples:
+.\" .pdfinfo /Title A PDF Document
+.\" .pdfinfo /Author Keith Marshall
+.\" -------------------------------------------------------------------
+.\"
+.ds pdf:meta.field \\$1
+.shift
+.ie '\\n(.z'' .pdfmark \\*[pdf:meta.field] (\\$*) /DOCINFO
+.el \!.pdfmark \\*[pdf:meta.field] (\\$*) /DOCINFO
+.rm pdf:meta.field
+..
+.de pdfview
+.\" -------------------------------------------------------------------
+.\" Usage:
+.\" .pdfview view parameters ...
+.\" Examples:
+.\" .pdfview /PageMode /UseOutlines
+.\" .pdfview /Page 2 /View [/FitH \n(.p u]
+.\" -------------------------------------------------------------------
+.\"
+.ie '\\n(.z'' .pdfmark \\$* /DOCVIEW
+.el \!.pdfmark \\$* /DOCVIEW
+..
+.\" =====================================================================
+.\" Module PDFNOTE: Insert "Sticky Note" Style Comments in a PDF Document
+.\" =====================================================================
+.\"
+.\" "PDFNOTE.WIDTH" and "PDFNOTE.HEIGHT" set the preferred size for
+.\" display of the "sticky note" pane, when opened. Acrobat Reader
+.\" seems not to honour these -- perhaps GhostScript doesn't encode
+.\" them correctly! Anyway, let's set some suitable default values,
+.\" in case the user has a set up which does work as advertised.
+.\"
+.nr PDFNOTE.WIDTH 3.5i
+.nr PDFNOTE.HEIGHT 2.0i
+.\"
+.\" "pdf:bbox" defines the expression used to set the size and location
+.\" of the bounding rectangle for display of notes and link "hot-spots".
+.\" This is defined, such that a note is placed at troff's current text
+.\" position on the current page, with its displayed image size defined
+.\" by the "PDFNOTE.WIDTH" and "PDFNOTE.HEIGHT" registers, while the
+.\" bounds for a link "hot-spot" are matched to the text region which
+.\" defines the "hot-spot".
+.\"
+.ds pdf:bbox \\n[pdf:llx] u \\n[pdf:lly] u \\n[pdf:urx] u \\n[pdf:ury] u
+.\"
+.\" Getting line breaks into the text of a PDFNOTE is tricky -- we need
+.\" to get a "\n" into the Postscript stream, but three levels of "\" are
+.\" swallowed, when we invoke "pdfnote". The following definition of "PDFLB",
+.\" (for LineBreak), is rather ugly, but does allow us to use
+.\"
+.\" .pdfnote Some text.\*[PDFLB]Some more text, on a new line.
+.\"
+.ds PDFLB \\\\\\\\\\\\\\\\n
+.\"
+.de pdfnote
+.\" ----------------------------------------------------------------------
+.\" Usage:
+.\" .pdfnote [-T "Text for Title"] Text of note ...
+.\" ----------------------------------------------------------------------
+.\"
+.\" First, compute the bounding rectangle,
+.\" for this PDFNOTE instance
+.\"
+. mk pdf:ury
+. nr pdf:llx \\n(.k+\\n(.o+\\n[.in]
+. nr pdf:lly \\n[pdf:ury]-\\n[PDFNOTE.HEIGHT]
+. nr pdf:urx \\n[pdf:llx]+\\n[PDFNOTE.WIDTH]
+. ds pdf:note.instance /Rect [\\*[pdf:bbox]]
+.\"
+.\" Parse any specified (recognisable) PDFNOTE options
+.\"
+. while dpdf:note\\$1 \{\
+. pdf:note\\$1 \\$@
+. shift \\n[pdf:note.argc]
+. \}
+.\"
+.\" Emit the note, and clean up
+.\"
+. pdfmark \\*[pdf:note.instance] /Subtype /Text /Contents (\\$*) /ANN
+. rm pdf:note.instance
+. rr pdf:note.argc
+..
+.de pdf:note-T
+.nr pdf:note.argc 2
+.as pdf:note.instance " /Title (\\$2)
+..
+.\" =====================================================================
+.\" Module PDFBOOKMARK: Add an Outline Reference in the PDF Bookmark Pane
+.\" =====================================================================
+.\"
+.\" "PDFBOOKMARK.VIEW" controls how the document will be displayed,
+.\" when the user selects a bookmark. This default setting will fit
+.\" the page width to the viewing window, with the bookmarked entry
+.\" located at the top of the viewable area.
+.\"
+.ds PDFBOOKMARK.VIEW /FitH \\n[PDFPAGE.Y] u
+.\"
+.\" "PDFOUTLINE.FOLDLEVEL" controls how the document outline will be
+.\" displayed. It is a number, defining the maximum heading level
+.\" which will be visible, without outline expansion by the user, in
+.\" the initial view of the document outline. Assuming that no sane
+.\" document will ever extend to 10,000 levels of nested headings,
+.\" this initial default value causes outlines to be fully expanded.
+.\"
+.nr PDFOUTLINE.FOLDLEVEL 10000
+.\"
+.\" The actual job of creating an outline reference
+.\" is performed by the "pdfbookmark" macro.
+.\"
+.de pdfbookmark
+.\" ------------------------------------------------------------------
+.\" Usage:
+.\" .pdfbookmark [-T tag] level "Text of Outline Entry"
+.\"
+.\" $1 = nesting level for bookmark (1 is top level)
+.\" $2 = text for bookmark, (in PDF viewer bookmarks list)
+.\" ------------------------------------------------------------------
+.\"
+.ie '\\n(.z'' \{\
+.\"
+.\" When we are at the top diversion level, i.e. actually emitting text
+.\" to the output device stream, then we compute the location of, and
+.\" plant this bookmark immediately.
+.\"
+. \" Make the bookmark name "untagged" by default,
+. \" then parse any specified options, to set a "tag", if required
+. \"
+. ds pdf:href-T
+. while dpdf:href.opt\\$1 \{\
+. pdf:href.opt\\$1 \\$@
+. shift \\n[pdf:href.argc]
+. \}
+. rr pdf:href.argc
+. \"
+. \" If we found "--" to mark the end of the options, discard it
+. \"
+. if '\\$1'--' .shift
+. \"
+. nr pdf:bm.lev 0+\\$1
+. if \\n[pdf:bm.lev]==0 .nr pdf:bm.lev 1
+. if \\n[pdf:bm.lev]-1==\\n[PDFOUTLINE.FOLDLEVEL] .nr pdf:bm.lev \\n[pdf:bm.lev]*-1
+. nr pdf:bm.abslev 0+\\n[pdf:bm.lev]
+. if \\n[pdf:bm.lev]<0 .nr pdf:bm.abslev 0+\\n[pdf:bm.abslev]*-1
+. if \\n[pdf:bm.abslev]>\\n[pdf:bm.nl] .nr pdf:bm.nl \\n[pdf:bm.nl]+1
+. ie \\n[pdf:bm.abslev]>\\n[pdf:bm.nl] \{\
+. pdf:warn adjusted level \\n[pdf:bm.abslev] bookmark; should be <= \\n[pdf:bm.nl]
+. nr pdf:bm.abslev 0+\\n[pdf:bm.nl]
+. if \\n[pdf:bm.abslev]-1==\\n[PDFOUTLINE.FOLDLEVEL] .nr pdf:bm.lev \\n[pdf:bm.abslev]*-1
+. \}
+. el .nr pdf:bm.nl \\n[pdf:bm.abslev]
+. if \\n[pdf:bm.lev]<0 .nr pdf:bm.abslev \\n[pdf:bm.abslev]*-1
+. nr pdf:bm.lev 0+\\n[pdf:bm.abslev]
+. rr pdf:bm.abslev
+. shift
+. \"
+. \" Increment the bookmark serialisation index
+. \" in order to generate a uniquely serialised bookmark name,
+. \" ( which we return in the string "PDFBOOKMARK.NAME" ),
+. \"
+. nr pdf:bm.nr +1
+. ie '\\*[pdf:href-T]'' .ds PDFBOOKMARK.NAME pdf:bm\\n[pdf:bm.nr]
+. el .ds PDFBOOKMARK.NAME \\*[pdf:href-T]
+. pdf:href.sety
+. ds pdf:cleaned \\$*
+. ev pdfcln
+. tr \[em]-
+. nf
+. box pdf:clean
+. nop \\$*
+. fl
+. box
+. chop pdf:clean
+. asciify pdf:clean
+. length pdf:clean:len \\*[pdf:clean]
+. ds pdf:cleaned \\*[pdf:clean]
+. rm pdf:clean
+. ev
+. tr \[em]\[em]
+. ds pdf:look(\\*[PDFBOOKMARK.NAME]) \\*[pdf:cleaned]
+. if dPDF.EXPORT .tm .ds pdf:look(\\*[PDFBOOKMARK.NAME]) \\*[pdf:cleaned]
+. pdfmark /Dest /\\*[PDFBOOKMARK.NAME] /View [\\*[PDFBOOKMARK.VIEW]] /DEST
+. nop \!x X ps:exec [/Dest /\\*[PDFBOOKMARK.NAME] /Title (\\*[pdf:cleaned]) /Level \\n[pdf:bm.lev] /OUT pdfmark
+.\". pdfmark /Dest /\\*[PDFBOOKMARK.NAME] /Title "(\\*[pdf:cleaned])" /Level \\n[pdf:bm.lev] /OUT
+. pdf:href.options.clear
+. rr PDFPAGE.Y
+. rm pdf:cleaned
+. rm pdf:clean
+. \}
+. \}
+.el \{\
+.\"
+.\" But when we are collecting a diversion which will be written out later,
+.\" then we must defer bookmark placement, until we emit the diversion.
+.\" (don't rely on $0 == pdfbookmark here; it may be a volatile alias).
+.\"
+. nop \!.pdfbookmark \\$@
+. \}
+..
+.
+.de pdfclean
+. ie '\\n(.z'' \{\
+. ds pdfcleaned \\$*
+. ev pdfcln
+. tr \[em]-
+. nf
+. box pdf:clean
+. nop \\*[\\*[pdfcleaned]]
+. fl
+. box
+. chop pdf:clean
+. asciify pdf:clean
+. ev
+. ds \\*[pdfcleaned] "\\*[pdf:clean]
+. rm pdf:clean
+. tr \[em]\[em]
+. el .nop \!.pdfclean \\$@
+..
+.\"
+.\" =============================================================
+.\" Module PDFHREF: Create Hypertext References in a PDF Document
+.\" =============================================================
+.\"
+.\" "PDFHREF.VIEW" controls how the document will be displayed,
+.\" when the user follows a link to a named reference.
+.\"
+.ds PDFHREF.VIEW /FitH \\n[PDFPAGE.Y] u
+.\"
+.\" This default setting will fit the page width to the viewing
+.\" window, with the bookmarked entry located close to the top
+.\" of the viewable area. "PDFHREF.VIEW.LEADING" controls the
+.\" actual distance below the top of the viewing window, where
+.\" the reference will be positioned; 5 points is a reasonable
+.\" default offset.
+.\"
+.nr PDFHREF.VIEW.LEADING 5.0p
+.\"
+.\" Yuk!!!
+.\" PDF view co-ordinates are mapped from the bottom left corner,
+.\" of the page, whereas page printing co-ordinates are mapped
+.\" conventionally, from top left.
+.\"
+.\" Macro "pdf:href.sety" transforms the vertical position of the
+.\" last printed baseline, from the printing co-ordinate domain to
+.\" the PDF view domain.
+.\"
+.de pdf:href.sety
+.\" ----------------------------------------------------------------
+.\" Usage:
+.\" .pdf:href.sety
+.\" ----------------------------------------------------------------
+.\"
+.\" This computation yields the vertical view co-ordinate
+.\" in groff's basic units; don't forget to append grops' "u"
+.\" conversion operator, when writing the pdfmark!
+.\"
+.nr PDFPAGE.Y (\\n[PDFHREF.VIEW.LEADING]-\\n(nl)
+..
+.\" When we create a link "hot-spot" ...
+.\" "PDFHREF.LEADING" sets the distance above the top of the glyph
+.\" bounding boxes, in each line of link text, over which the link
+.\" hot-spot will extend, while "PDFHREF.HEIGHT" sets the hot-spot
+.\" height, PER LINE of text occupied by the reference.
+.\"
+.\" Since most fonts specify some leading space within the bounding
+.\" boxes of their glyphs, a better appearance may be achieved when
+.\" NEGATIVE leading is specified for link hot-spots; indeed, when
+.\" the default 10pt Times font is used, -1.0 point seems to be a
+.\" reasonable default value for "PDFHREF.LEADING" -- it may be
+.\" changed, if desired.
+.\"
+.\" "PDFHREF.HEIGHT" is initially set as one vertical spacing unit;
+.\" note that it is defined as a string, so it will adapt to changes
+.\" in the vertical spacing. Changing it is NOT RECOMMENDED.
+.\"
+.nr PDFHREF.LEADING 2.0p
+.ds PDFHREF.HEIGHT 1.0v
+.\"
+.\" PDF readers generally place a rectangular border around link
+.\" "hot-spots". Within text, this looks rather ugly, so we set
+.\" "PDFHREF.BORDER" to suppress it -- the three zeroes represent
+.\" the border parameters in the "/Border [0 0 0]" PDFMARK string,
+.\" and may be changed to any valid form, as defined in Adobe's
+.\" PDFMARK Reference Manual.
+.\"
+.ds PDFHREF.BORDER 0 0 0
+.\"
+.\" "PDFHREF.COLOUR" (note British spelling) defines the colour to
+.\" be used for display of link "hot-spots". This will apply both
+.\" to borders, if used, and, by default to text; however, actual
+.\" text colour is set by "PDFHREF.TEXT.COLOUR", which may be reset
+.\" independently of "PDFHREF.COLOUR", to achieve contrasting text
+.\" and border colours.
+.\"
+.\" "PDFHREF.COLOUR" must be set to a sequence of three values,
+.\" each in the range 0.0 .. 1.0, representing the red, green, and
+.\" blue components of the colour specification in the RGB colour
+.\" domain, which is shared by "groff" and the PDF readers.
+.\"
+.ds PDFHREF.COLOUR 0.35 0.00 0.60
+.defcolor pdf:href.colour rgb \*[PDFHREF.COLOUR]
+.\"
+.\" "PDFHREF.TEXT.COLOUR", on the other hand, is simply defined
+.\" using any "groff" colour name -- this default maps it to the
+.\" same colour value as "PDFHREF.COLOUR".
+.\"
+.ds PDFHREF.TEXT.COLOUR pdf:href.colour
+.\"
+.\" Accommodate users who prefer the American spelling, COLOR, to
+.\" the British spelling, COLOUR.
+.\"
+.als PDFHREF.COLOR PDFHREF.COLOUR
+.als PDFHREF.TEXT.COLOR PDFHREF.TEXT.COLOUR
+.\"
+.\" All PDF "Hypertext" reference capabilities are accessed
+.\" through the "pdfhref" macro
+.\"
+.de pdfhref
+.\" -----------------------------------------------------------------
+.\" Usage:
+.\" .pdfhref <subcommand [options ...] [parameters ...]> ...
+.\" -----------------------------------------------------------------
+.\"
+.\"
+.\" Loop over all subcommands specified in the argument list
+.\"
+. while \\n(.$ \{\
+. \"
+. \" Initially, assume each subcommand will complete successfully
+. \"
+. nr pdf:href.ok 1
+. \"
+. \" Initialise -E and -X flags in the OFF state
+. \"
+. nr pdf:href-E 0
+. nr pdf:href-X 0
+. \"
+. \" Handle the case where subcommand is specified as "-class",
+. \" setting up appropriate macro aliases for subcommand handlers.
+. \"
+. if dpdf*href\\$1 .als pdf*href pdf*href\\$1
+. if dpdf*href\\$1.link .als pdf*href.link pdf*href\\$1.link
+. if dpdf*href\\$1.file .als pdf*href.file pdf*href\\$1.file
+. \"
+. \" Repeat macro alias setup
+. \" for the case where the subcommand is specified as "class",
+. \" (without a leading hyphen)
+. \"
+. if dpdf*href-\\$1 .als pdf*href pdf*href-\\$1
+. if dpdf*href-\\$1.link .als pdf*href.link pdf*href-\\$1.link
+. if dpdf*href-\\$1.file .als pdf*href.file pdf*href-\\$1.file
+. \"
+. \" Process one subcommand ...
+. \"
+. ds pdf*href.class \\$1
+. ie dpdf*href \{\
+. \"
+. \" Subcommand "class" is recognised ...
+. \" discard the "class" code from the argument list,
+. \" set the initial argument count to swallow all arguments,
+. \" and invoke the selected subcommand handler.
+. \"
+. shift
+. nr pdf:argc \\n(.$
+. pdf*href \\$@
+. \"
+. \" When done,
+. \" discard all arguments actually consumed by the handler,
+. \" before proceeding to the next subcommand (if any).
+. \"
+. shift \\n[pdf:argc]
+. \}
+. el \{\
+. \"
+. \" Subcommand "class" is not recognised ...
+. \" issue a warning, and discard the entire argument list,
+. \" so aborting this "pdfhref" invocation
+. \"
+. pdf:warn \\$0: undefined reference class '\\$1' ignored
+. shift \\n(.$
+. \}
+. \"
+. \" Clean up temporary reference data,
+. \" to ensure it doesn't propagate to any future reference
+. \"
+. rm pdf*href pdf:href.link pdf:href.files
+. rr pdf:href-E
+. pdf:href.options.clear
+. \}
+. rr pdf:href.ok
+..
+.\"
+.\" Macros "pdf:href.flag" and "pdf:href.option"
+.\" provide a generic mechanism for switching on flag type options,
+.\" and for decoding options with arguments, respectively
+.\"
+.de pdf:href.flag
+.\" ----------------------------------------------------------------------
+.\" ----------------------------------------------------------------------
+.nr pdf:href\\$1 1
+.nr pdf:href.argc 1
+..
+.de pdf:href.option
+.\" ----------------------------------------------------------------------
+.\" ----------------------------------------------------------------------
+.ds pdf:href\\$1 \\$2
+.nr pdf:href.argc 2
+..
+.\"
+.\" Valid PDFHREF options are simply declared
+.\" by aliasing option handlers to "pdf:href.option",
+.\" or to "pdf:href.flag", as appropriate
+.\"
+.als pdf:href.opt-A pdf:href.option \" affixed text
+.als pdf:href.opt-D pdf:href.option \" destination name
+.als pdf:href.opt-E pdf:href.flag \" echo link descriptor
+.als pdf:href.opt-F pdf:href.option \" remote file specifier
+.als pdf:href.opt-N pdf:href.option \" reference name
+.als pdf:href.opt-P pdf:href.option \" prefixed text
+.als pdf:href.opt-T pdf:href.option \" bookmark "tag"
+.als pdf:href.opt-X pdf:href.flag \" cross reference
+.\"
+.\" For references to another document file
+.\" we also need to support OS dependent file name specifiers
+.\"
+.als pdf:href.opt-DF pdf:href.option \" /DOSFile specifier
+.als pdf:href.opt-MF pdf:href.option \" /MacFile specifier
+.als pdf:href.opt-UF pdf:href.option \" /UnixFile specifier
+.als pdf:href.opt-WF pdf:href.option \" /WinFile specifier
+.\"
+.\" Macro "pdf:href.options.clear" ensures that ALL option
+.\" argument strings are deleted, after "pdfhref" has completed
+.\" all processing which depends on them
+.\"
+.de pdf:href.options.clear
+.\" -----------------------------------------------------------------
+.\" Usage:
+.\" .pdf:href.options.clear [option ...]
+.\" -----------------------------------------------------------------
+.\"
+.\" When an option list is specified ...
+.\"
+.ie \\n(.$ \{\
+. \"
+. \" then loop through the list,
+. \" deleting each specified option argument string in turn
+. \"
+. while \\n(.$ \{\
+. if dpdf:href-\\$1 .rm pdf:href-\\$1
+. shift
+. \}
+. \}
+.\"
+.\" ... but when no list is specified,
+.\" then recurse, to clear all known option argument strings
+.\"
+.el .pdf:href.options.clear A D F N P T DF MF UF WF
+..
+.\"
+.\" Macro "pdf*href-M" is the handler invoked by "pdfhref", when
+.\" called with the "M" reference class specifier, to create a
+.\" named cross reference mark, and to emit a cross reference
+.\" data record, as specified by "PDFHREF.INFO".
+.\"
+.de pdf*href-M
+.\" -----------------------------------------------------------------
+.\" Usage:
+.\" .pdfhref M [-N name | -D name] [-E] descriptive text ...
+.\" -----------------------------------------------------------------
+.\"
+.\" Initially, declare the -D and -N string options as empty,
+.\" so we avoid warning messages when we try to use them, and find
+.\" that they are undefined.
+.\"
+.ds pdf:href-D
+.ds pdf:href-N
+.\"
+.\" Parse, interpret, and strip any specified options from the
+.\" argument list. (Note that only options with a declared handler
+.\" will be processed; there is no provision for detecting invalid
+.\" options -- anything which is not recognised is assumed to start
+.\" the "descriptive text" component of the argument list).
+.\"
+.while dpdf:href.opt\\$1 \{\
+. pdf:href.opt\\$1 \\$@
+. shift \\n[pdf:href.argc]
+. \}
+.\"
+.\" If we found "--", to mark the end of the options,
+.\" then we should discard it.
+.\"
+.if '\\$1'--' .shift
+.\"
+.\" All PDF reference markers MUST be named. The name may have been
+.\" supplied using the "-N Name" option, (or the "-D Name" option);
+.\" if not, deduce it from the first "word" in the "descriptive text",
+.\" if any, and set the marker -- if we still can't identify the name
+.\" for the destination, then this marker will not be created.
+.\"
+.pdf*href.set \\*[pdf:href-N] \\*[pdf:href-D] \\$1
+.\"
+.\"
+.\" Irrespective of whether this marker is created, or not,
+.\" the descriptive text will be copied to the groff output stream,
+.\" provided the "-E" option was specified
+.\"
+.if \\n[pdf:href-E] \&\\$*
+..
+.de pdf*href-F
+.\"do nothing
+..
+.\"
+.de pdf*href.set
+.\" ----------------------------------------------------------------------
+.\" ----------------------------------------------------------------------
+.ie \\n(.$ \{\
+. \"
+. \" a marker name has been supplied ...
+. \" if we are formatting for immediate output,
+. \" emit PDFMARK code to establish the associated view
+. \"
+. ie '\\n(.z'' \{\
+. pdf:href.sety
+. pdfmark /Dest /\\$1 /View [\\*[PDFHREF.VIEW]] /DEST
+. ds PDFHREF.NAME \\$1
+. rr PDFPAGE.Y
+. \}
+. \"
+. \" but, when formatting a diversion ...
+. \" delay output of the PDFMARK code, until the diversion
+. \" is eventually written out
+. \"
+. el \!.\\$0 \\$@
+. \"
+. \}
+.el \{\
+. \" marker is unnamed ...
+. \" issue error message; do not emit reference data
+. \"
+. pdf:warn pdfhref destination marker must be named
+. \}
+..
+.\"
+.de pdf*href
+.\" ------------------------------------------------------------------
+.\" Usage:
+.\" .pdf*href class [options ...] [link text ...]
+.\" ------------------------------------------------------------------
+.\"
+.\" First, we initialise an empty string, which will be affixed to
+.\" the end of the "link text". (This is needed to cancel the effect
+.\" of a "\c" escape, which is placed at the end of the "link text"
+.\" to support the "-A" option -- any text supplied by the user, when
+.\" the "-A" option is specified, will replace this empty string).
+.\"
+.ds pdf:href-A
+.\"
+.\" Now we interpret, and remove any specified options from the
+.\" argument list. (Note that only options with a declared handler
+.\" will be processed; there is no provision for detecting invalid
+.\" options -- anything which is not recognised is assumed to start
+.\" the "link text" component of the argument list).
+.\"
+.while dpdf:href.opt\\$1 \{\
+. pdf:href.opt\\$1 \\$@
+. shift \\n[pdf:href.argc]
+. \}
+.\"
+.\" If we found "--", to mark the end of the options, then we should
+.\" discard it.
+.\"
+.if '\\$1'--' .shift
+.\"
+.\" All PDF link classes REQUIRE a named destination. This may have
+.\" been supplied using the "-D Name" option, but, if not, deduce it
+.\" from the first "word" in the "link text", if any -- if we still
+.\" can't identify the destination, then set "pdf:href.ok" to zero,
+.\" so this link will not be created.
+.\"
+.if !dpdf:href-D .pdf:href.option -D \\$1
+.if '\\*[pdf:href-D]'' \{\
+. pdf:error pdfhref has no destination
+. nr pdf:href.ok 0
+. \}
+.\"
+.\" Now, initialise a string, defining the PDFMARK code sequence
+.\" to create the reference, using the appropriate type indicators.
+.\"
+.ds pdf:href.link /Subtype /Link \\*[pdf*href.link]
+.\"
+.\" And now, we have no further use for "pdf*href.link".
+.\"
+.rm pdf*href.link
+.\"
+.\" If the user specified any "link prefix" text, (using the "-P text"
+.\" option), then emit it BEFORE processing the "link text" itself.
+.\"
+.if dpdf:href-P \&\\*[pdf:href-P]\c
+.ie \\n[pdf:href.ok] \{\
+. \"
+. \" This link is VALID (so far as we can determine) ...
+. \" Modify the "link text" argument specification, as required,
+. \" to include any pre-formatted cross reference information
+. \"
+. ie \\n(.$ \{\
+. \"
+. \" One or more "link text" argument(s) are present,
+. \" so, set the link description from the argument(s) ...
+. \"
+. ds PDFHREF.DESC \\\\$*
+. \}
+. el \{\
+. ie dpdf:look(\\*[pdf:href-D]) .ds PDFHREF.DESC \\*[pdf:look(\\*[pdf:href-D])]
+. el .ds PDFHREF.DESC Unknown
+. \}
+. \" Apply border and colour specifications to the PDFMARK string
+. \" definition, as required.
+. \"
+. if dPDFHREF.BORDER .as pdf:href.link " /Border [\\*[PDFHREF.BORDER]]
+. if dPDFHREF.COLOUR .as pdf:href.link " /Color [\\*[PDFHREF.COLOUR]]
+. \"
+. \" Emit the "link text", in its appropriate colour, marking the
+. \" limits of its bounding box(es), as the before and after output
+. \" text positions.
+. \"
+\#. if dPDFHREF.COLOUR .defcolor pdf:href.colour rgb \\*[PDFHREF.COLOUR]
+. nr pdf:bm.width \\w'\\*[PDFHREF.DESC]'
+. nop \&\m[\\*[PDFHREF.TEXT.COLOUR]]\X'pdf: markstart \\n[rst] \\n[rsb] \\n[PDFHREF.LEADING] \\*[pdf:href.link]'\\*[PDFHREF.DESC]\X'pdf: markend'\m[]\c
+. \"
+. \" Clean up the temporary registers and strings, used to
+. \" compute the "hot-spot" bounds, and format the reference,
+. \"
+. rm PDFHREF.DESC PDFHREF.TEXT
+. \}
+.\"
+.\" But when we identify an INVALID link ...
+.\" We simply emit the "link text", with no colour change, no border,
+.\" and no associated "hot-spot".
+.\"
+.el \&\\$*\c
+.\"
+.\" And then, if the user specified any affixed text, (using the
+.\" "-A text" option), we tack it on at the end.
+.\"
+.nop \&\\*[pdf:href-A]
+..
+.\" Macro "pdf*href-I" is used for one time initialisation of special
+.\" "pdfhref" features; (currently, only the above page trap hook is
+.\" supported, but it is implemented with one level of indirection, to
+.\" accommodate possible future expansion).
+.
+.de pdf*href-I
+.\" ----------------------------------------------------------------------
+.\" Usage:
+.\" .pdfhref I -<option> <optarg> [-<option> <optarg>] ...
+.\" ----------------------------------------------------------------------
+.\"
+.\" Loop over all arguments, in pairs ...
+.
+.while \\n(.$ \{\
+. \"
+. \" handing them off to their respective initialisers,
+. \" when suitable initialisers exist, or complaining otherwise.
+. \"
+. ie dpdf*href\\$1.init .pdf*href\\$1.init \\$2
+. el .pdf*error pdfhref:init: unknown feature '\\$1'
+. shift 2
+. \}
+..
+.\" Before we can use the page break "hook", we need to initialise it
+.\" as an addendum to a regular page break trap. To ensure that we don't
+.\" compromise the user's page trap setup, we leave the onus for this
+.\" initialisation with the user, but we provide the "pdf*href-PT.init"
+.\" macro, (invoked by ".pdfhref I -PT <macro-name>"), to implement a
+.\" suitable initialisation action.
+.\"
+.\"
+.\" "pdf*href-L" is the generic handler for creating references to
+.\" named destinations in PDF documents. It supports both local
+.\" references, to locations within the same document, through its
+.\" "pdf*href-L.link" attribute, and also references to locations
+.\" in any other PDF document, through "pdf*href-L.file".
+.\"
+.als pdf*href-L pdf*href
+.ds pdf*href-L.link /Dest /\\\\*[pdf:href-D]
+.ds pdf*href-L.file /Action /GoToR \\\\*[pdf:href.files] \\*[pdf*href-L.link]
+.\"
+.\" "pdf*href-O" is the "official" handler for creating PDF
+.\" document outlines. It is simply an alias to "pdfbookmark",
+.\" which may also be invoked directly, if preferred. Neither
+.\" a "pdf*href-O.link" nor a "pdf*href-O.file" attribute is
+.\" required.
+.\"
+.als pdf*href-O pdfbookmark
+.\"
+.\" "pdf*href-W" is the generic handler for creating references to
+.\" web resources, (or any resource specified by a uniform resource
+.\" identifier). Such resource links are fully specified by the
+.\" "pdf*href-W.link" attribute.
+.\"
+.als pdf*href-W pdf*href
+.ds pdf*href-W.link /Action << /Subtype /URI /URI (\\\\*[pdf:href-D]) >>
+.nr pdf:bm.nl 0
+.\"
+.\" "pdfmarksuspend" and "pdfmarkrestart" should be used in any page trap
+.\" macros to prevent output from the page trap macro being considered part
+.\" of a 'hot spot' when it crosses a page boundary.
+.de pdfmarksuspend
+.nop \!x X pdf: marksuspend
+..
+.de pdfmarkrestart
+.nop \!x X pdf: markrestart
+..
+.de pdfpagename
+.nop \!x X pdf: pagename \\$1
+..
+.de pdfswitchtopage
+.nop \!x X pdf: switchtopage \\$*
+..
+.\"
+.\" pdf.tmac: end of file / vim: ft=groff
diff --git a/tmac/refer-me.tmac b/tmac/refer-me.tmac
new file mode 100644
index 0000000..e86dee4
--- /dev/null
+++ b/tmac/refer-me.tmac
@@ -0,0 +1,99 @@
+.\" -*- mode: nroff; coding: iso-latin-1; -*-
+.\"
+.\" refer-me.tmac
+.\"
+.\" Refer support for me macros.
+.\"
+.\" Copyright (C) 2011 Free Software Foundation, Inc.
+.\" Written by Werner Lemberg (wl@gnu.org)
+.\"
+.\" This file is part of groff.
+.\"
+.\" groff is free software; you can redistribute it and/or modify it under
+.\" the terms of the GNU General Public License as published by the Free
+.\" Software Foundation, either version 3 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" groff is distributed in the hope that it will be useful, but WITHOUT ANY
+.\" WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+.\" for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program. If not, see <http://www.gnu.org/licenses/>.
+.\"
+.\" Please send comments to groff@gnu.org.
+.
+.
+.als ref*error tm
+.
+.de ref*text-label-start
+. (f
+. ip "\\$1"
+..
+.de ref*text-label-end
+. )f
+..
+.
+.de ref*biblio-item-start
+. ip "\\$1"
+..
+.de ref*biblio-item-start-nolabel
+. ip \&
+..
+.de ref*biblio-item-end
+..
+.
+.ds ref*refnum-start \" empty
+.ds ref*refnum-end .\0\"
+.
+.ie \n(.V<1v \{\
+. ds [. \s-2\v'-.4m'\f1
+. ds .] \v'.4m'\s+2\fP
+.\}
+.el \{\
+. ds [. " [
+. ds .] ]
+.\}
+.
+.ds ref*spec!0 Q A T S V N P I C O D
+.ds ref*spec!1 Q A T J S V N P I C D O
+.ds ref*spec!2 Q A T S V P I C D G O
+.ds ref*spec!3 Q A T P B E S V I C D O
+.ds ref*spec!4 Q A T R G P I C D O
+.\" style #5 (Bell Laboratories internal memorandum) is not supported
+.\" by GNU refer
+.
+.ds ref*spec!A ", " "
+.ds ref*spec!B ", " " "in \f2" "" "\f1"
+.ds ref*spec!B:3 ", " " "in \f2" "\f1"
+.ds ref*spec!D """ " " "(" ")"
+.ds ref*spec!D:0 """ " "
+.ds ref*spec!E ", " " "ed. "
+.ds ref*spec!G """ " " "(" ")"
+.ds ref*spec!G:2 ". " " "Gov't. ordering no.\~"
+.ds ref*spec!J ", " " "\f2" "\f1"
+.ds ref*spec!N """ "(" "" ")"
+.ds ref*spec!O ". " "
+.ds ref*spec!O:0 ", " "
+.ds ref*spec!O:2 """ " "
+.ds ref*spec!P ", " " "p.\~"
+.ds ref*spec!PP ", " " "pp.\~"
+.ds ref*spec!T ", " " "\\*(lq" "" "\\*(rq"
+.ds ref*spec!T:0 ", " " "\f2" "\f1"
+.ds ref*spec!T:2 ", " " "\f2" "" "\f1"
+.ds ref*spec!V """ " " "\f3" "\f1"
+.ds ref*spec!dflt ", " "
+.
+.de ref*biblio-start-hook
+. $p References
+. lp
+..
+.
+.de ref*biblio-end-hook
+. sp
+..
+.
+.mso refer.tmac
+.
+.\" EOF
diff --git a/tmac/refer-ms.tmac b/tmac/refer-ms.tmac
new file mode 100644
index 0000000..5e9da21
--- /dev/null
+++ b/tmac/refer-ms.tmac
@@ -0,0 +1,86 @@
+.\" -*- mode: nroff; coding: iso-latin-1; -*-
+.\"
+.\" refer-ms.tmac
+.\"
+.\" Refer support for ms macros.
+.\"
+.\" Copyright (C) 2011 Free Software Foundation, Inc.
+.\" Written by Werner Lemberg (wl@gnu.org)
+.\"
+.\" This file is part of groff.
+.\"
+.\" groff is free software; you can redistribute it and/or modify it under
+.\" the terms of the GNU General Public License as published by the Free
+.\" Software Foundation, either version 3 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" groff is distributed in the hope that it will be useful, but WITHOUT ANY
+.\" WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+.\" for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program. If not, see <http://www.gnu.org/licenses/>.
+.\"
+.\" Please send comments to groff@gnu.org.
+.
+.
+.als ref*error @error
+.
+.de ref*text-label-start
+. FS "\\$1"
+..
+.de ref*text-label-end
+. FE
+..
+.
+.de ref*biblio-item-start
+. IP "\\$1"
+..
+.de ref*biblio-item-start-nolabel
+. XP
+..
+.de ref*biblio-item-end
+..
+.
+.als ref*refnum-start par@sup-start
+.als ref*refnum-end par@sup-end
+.
+.ds [. \E*[ref*refnum-start]\"
+.ds .] \E*[ref*refnum-end]\"
+.
+.ds ref*spec!0 Q A T S V N P I C D O
+.ds ref*spec!1 Q A T J S V N P I C D O
+.ds ref*spec!2 Q A T S V P I C D O
+.ds ref*spec!3 Q A T B E S V P I C D O
+.ds ref*spec!4 Q A T R G P I C D O
+.
+.ds ref*spec!A ", " "
+.ds ref*spec!B """ " " "in \fI" "" "\fP"
+.ds ref*spec!D """ " " "(" ")"
+.ds ref*spec!E ", " " "ed. "
+.ds ref*spec!G """ " " "(" ")"
+.ds ref*spec!J ", " " "\fI" "" "\fP"
+.ds ref*spec!N """ "(" "" ")"
+.ds ref*spec!O ". " "
+.ds ref*spec!P ", " " "p.\~"
+.ds ref*spec!PP ", " " "pp.\~"
+.ds ref*spec!T ", " " "\\*Q" "" "\\*U"
+.ds ref*spec!T:0 ", " " "\fI" "" "\fP"
+.ds ref*spec!T:2 ", " " "\fI" "" "\fP"
+.ds ref*spec!V """ " " "\fB" "\fR"
+.ds ref*spec!dflt ", " "
+.
+.de ref*biblio-start-hook
+. SH
+. nop \&\\*[REFERENCES]
+. par@reset
+..
+.
+.de ref*biblio-end-hook
+. par@finish
+..
+.
+.mso refer.tmac
+.
+.\" EOF
diff --git a/tmac/refer.tmac b/tmac/refer.tmac
new file mode 100644
index 0000000..61a306d
--- /dev/null
+++ b/tmac/refer.tmac
@@ -0,0 +1,343 @@
+.\" -*- mode: nroff; coding: iso-latin-1; -*-
+.\"
+.\" refer.tmac
+.\"
+.\" This is an interface to `refer', originally part of `s.tmac'.
+.\"
+.\" Copyright (C) 2011 Free Software Foundation, Inc.
+.\" Written by Werner Lemberg (wl@gnu.org)
+.\"
+.\" This file is part of groff.
+.\"
+.\" groff is free software; you can redistribute it and/or modify it under
+.\" the terms of the GNU General Public License as published by the Free
+.\" Software Foundation, either version 3 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" groff is distributed in the hope that it will be useful, but WITHOUT ANY
+.\" WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+.\" for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program. If not, see <http://www.gnu.org/licenses/>.
+.\"
+.\" Please send comments to groff@gnu.org.
+.
+.
+.\" The following macros must be defined:
+.\"
+.\" ref*error -- print an error message (in arg1)
+.\"
+.\" ref*text-label-start -- start a reference in text (formatted
+.\" reference number in arg1)
+.\" ref*text-label-end -- end a reference in text
+.\"
+.\" ref*biblio-item-start -- a reference item with label (in arg1)
+.\" in the bibliography block
+.\" ref*biblio-item-start-nolabel -- a reference item without label in the
+.\" bibliography block
+.\" ref*biblio-item-end -- end a reference item in the
+.\" bibliography block
+.\"
+.\" The following macros are optional:
+.\"
+.\" ref*item-start-hook -- stuff appended to the ]- macro
+.\" ref*item-end-hook -- stuff prepended to the ][ macro
+.\" ref*biblio-start-hook -- stuff appended to the ]< macro
+.\" ref*biblio-end-hook -- stuff appended to the ]> macro
+.\"
+.\" The following strings must be defined:
+.\"
+.\" ref*refnum-start -- start reference number formatting in
+.\" footnote
+.\" ref*refnum-end -- end reference number formatting in
+.\" footnote
+.\"
+.\" [. -- start reference number in text
+.\" (directly inserted by `refer')
+.\" .] -- end reference number in text (directly
+.\" inserted by `refer')
+.\"
+.\" Here is the specification of the five possible reference styles
+.\" provided by `refer'. The example entries are taken from the ms
+.\" macro package
+.\"
+.\" ref*spec!0 Q A T S V N P I C D O -- other
+.\" ref*spec!1 Q A T J S V N P I C D O -- journal article
+.\" ref*spec!2 Q A T S V P I C D O -- book
+.\" ref*spec!3 Q A T B E S V P I C D O -- article within book
+.\" ref*spec!4 Q A T R G P I C D O -- technical report
+.\"
+.\" Now the setup for the formatting of reference entries. The given example
+.\" entries for the various strings are taken from the ms macro package.
+.\"
+.\" Each string defines five arguments which are passed to a macro, with the
+.\" meaning as below. Please refer to the man page of `refer' for more
+.\" details on the fields. To allow fine-tuning, two levels are implemented:
+.\" For the refer field X and style Y the string `ref*spec!X:Y' is looked up.
+.\" If it doesn't exist, the string `ref*spec!X' is used instead.
+.\"
+.\" arg 1 the punctuation character to use to separate this field from the
+.\" previous field
+.\" arg 2 a string to insert after the punctuation character of the
+.\" previous field (normally a space)
+.\" arg 3 a string with which to prefix this field
+.\" arg 4 a string with which to postfix this field
+.\" arg 5 a string to add after the punctuation character supplied by the
+.\" next field
+.\"
+.\" 1 2 3 4 5
+.\" ----------------------------------------------------------------------
+.\" ref*spec!A , " " -- author name
+.\" ref*spec!B "" " " "in \fI" "" "\fP" -- book title of article
+.\" ref*spec!D "" " " "(" ")" -- date of publication
+.\" ref*spec!E , " " "ed. " -- editor
+.\" ref*spec!G "" " " "(" ")" -- US Gov. ordering number
+.\" ref*spec!J , " " "\fI" "" "\fP" -- journal name
+.\" ref*spec!N "" "(" "" ")" -- issue number
+.\" ref*spec!O . " " -- other information
+.\" ref*spec!P , " " "p.\~" -- page
+.\" ref*spec!PP , " " "pp.\~" -- page range
+.\" ref*spec!T , " " "\\*Q" "" "\\*U" -- journal title
+.\" ref*spec!T:0 , " " "\fI" "" "\fP" -- book title (other)
+.\" ref*spec!T:2 , " " "\fI" "" "\fP" -- book title (book)
+.\" ref*spec!V "" " " "\fB" "\fR" -- volume number
+.\"
+.\" ref*spec!dflt , " " -- all other entries
+.
+.\" start of reference
+.de ]-
+. rm [A [B [C [D [E [G [I [J [N [O [P [Q [R [S [T [V
+. rm ref*string
+. if d ref*item-start-hook \
+. ref*item-start-hook
+..
+.
+.
+.\" end of reference
+.de ][
+. if d ref*item-end-hook \
+. ref*item-end-hook
+. ie d ref*spec!\\$1 \
+. ref*build \\$1 \\*[ref*spec!\\$1]
+. el \{\
+. ref*error "unknown reference type `\\$1'"
+. ref*build 0 \\*[ref*spec!0]
+. \}
+. ref*print
+. rm ref*string
+. rm [F
+..
+.
+.
+.\" period before reference
+.ds <. .\"
+.
+.\" period after reference
+.ds >. \" empty
+.
+.\" comma before reference
+.ds <, ,\"
+.
+.\" comma after reference
+.ds >, \" empty
+.
+.
+.\" start collected references
+.de ]<
+. als ref*print ref*end-print
+. if d ref*biblio-start-hook \
+. ref*biblio-start-hook
+..
+.
+.
+.\" end collected references
+.de ]>
+. als ref*print ref*normal-print
+. if d ref*biblio-end-hook \
+. ref*biblio-end-hook
+..
+.
+.
+.de ref*normal-print
+. ie d [F \
+. ref*text-label-start \
+ "\\*[ref*refnum-start]\\*([F\\*[ref*refnum-end]"
+. el \
+. ref*text-label-start \&
+. nop \\*[ref*string]
+. ref*text-label-end
+..
+.
+.
+.de ref*end-print
+. ie d [F \
+. ref*biblio-item-start "\\*([F."
+. el \
+. ref*biblio-item-start-nolabel
+. nop \\*[ref*string]
+. ref*biblio-item-end
+..
+.
+.
+.als ref*print ref*normal-print
+.
+.de ref*build
+. rm ref*string ref*post-punct
+. nr ref*suppress-period 1
+. nr ref*style \\$1
+. shift
+. while \\n[.$] \{\
+. if d [\\$1 \{\
+. ie d ref*add-\\$1 \
+. ref*add-\\$1 \\n[ref*style]
+. el \
+. ref*add-dflt \\$1 \\n[ref*style]
+. \}
+. shift
+. \}
+. \" now add a final period
+. ie d ref*string \{\
+. if !\\n[ref*suppress-period] \
+. as ref*string .
+. if d ref*post-punct \{\
+. as ref*string "\\*[ref*post-punct]
+. rm ref*post-punct
+. \}
+. \}
+. el \
+. ds ref*string
+..
+.
+.
+.de ref*add-T
+. ie d ref*spec!T:\\$1 \
+. ref*field T \\*[ref*spec!T:\\$1]
+. el \
+. ref*field T \\*[ref*spec!T]
+. if r [T \
+. nr ref*suppress-period \\n([T
+..
+.
+.de ref*add-P
+. ie \\n([P>0 \{\
+. ie d ref*spec!PP:\\$1 \
+. ref*field P \\*[ref*spec!PP:\\$1]
+. el \
+. ref*field P \\*[ref*spec!PP]
+. \}
+. el \{\
+. ie d ref*spec!P:\\$1 \
+. ref*field P \\*[ref*spec!P:\\$1]
+. el \
+. ref*field P \\*[ref*spec!P]
+. \}
+..
+.
+.de ref*add-J
+. ie ref*spec!J:\\$1 \
+. ref*field J \\*[ref*spec!J:\\$1]
+. el \
+. ref*field J \\*[ref*spec!J]
+..
+.
+.de ref*add-D
+. ie ref*spec!D:\\$1 \
+. ref*field D \\*[ref*spec!D:\\$1]
+. el \
+. ref*field D \\*[ref*spec!D]
+..
+.
+.de ref*add-E
+. ie ref*spec!E:\\$1 \
+. ref*field E \\*[ref*spec!E:\\$1]
+. el \
+. ref*field E \\*[ref*spec!E]
+..
+.
+.de ref*add-G
+. ie ref*spec!G:\\$1 \
+. ref*field G \\*[ref*spec!G:\\$1]
+. el \
+. ref*field G \\*[ref*spec!G]
+..
+.
+.de ref*add-B
+. ie ref*spec!B:\\$1 \
+. ref*field B \\*[ref*spec!B:\\$1]
+. el \
+. ref*field B \\*[ref*spec!B]
+..
+.
+.de ref*add-O
+. ie ref*spec!O:\\$1 \
+. ref*field O \\*[ref*spec!O:\\$1]
+. el \
+. ref*field O \\*[ref*spec!O]
+. if r [O \
+. nr ref*suppress-period \\n([O
+.\" XXX
+.\" el \
+.\" nr ref*suppress-period 1
+..
+.
+.de ref*add-A
+. ie ref*spec!A:\\$1 \
+. ref*field A \\*[ref*spec!A:\\$1]
+. el \
+. ref*field A \\*[ref*spec!A]
+. if r [A \
+. nr ref*suppress-period \\n([A
+..
+.
+.de ref*add-V
+. ie ref*spec!V:\\$1 \
+. ref*field V \\*[ref*spec!V:\\$1]
+. el \
+. ref*field V \\*[ref*spec!V]
+..
+.
+.de ref*add-N
+. ie ref*spec!N:\\$1 \
+. ref*field N \\*[ref*spec!N:\\$1]
+. el \
+. ref*field N \\*[ref*spec!N]
+..
+.
+.de ref*add-dflt
+. ie ref*spec!dflt:\\$2 \
+. ref*field \\$1 \\*[ref*spec!dflt:\\$2]
+. el \
+. ref*field \\$1 \\*[ref*spec!dflt]
+..
+.
+.
+.\" First argument is the field letter.
+.\" Second argument is the punctuation character to use to separate this
+.\" field from the previous field.
+.\" Third argument is a string to insert after the punctuation character of
+.\" the previous field (normally a space).
+.\" Fourth argument is a string with which to prefix this field.
+.\" Fifth argument is a string with which to postfix this field.
+.\" Sixth argument is a string to add after the punctuation character
+.\" supplied by the next field.
+.de ref*field
+. if d ref*string \{\
+. ie d ref*post-punct \{\
+. if !\\n[ref*suppress-period] \
+. as ref*string "\\$2\"
+. as ref*string "\\*[ref*post-punct]\\$3\"
+. rm ref*post-punct
+. \}
+. el \
+. as ref*string "\\$2\\$3\"
+. \}
+. as ref*string "\\$4\\*([\\$1\\$5
+. if \\n[.$]>5 \
+. ds ref*post-punct "\\$6\"
+. nr ref*suppress-period 0
+..
+.
+.
+.\" EOF
diff --git a/tmac/s.tmac b/tmac/s.tmac
index 3a0e0c6..8a1c8c1 100644
--- a/tmac/s.tmac
+++ b/tmac/s.tmac
@@ -1869,157 +1869,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
.\" ******** module ref ********
.\" ****************************
.\" Refer support.
-.de ]-
-.rm [A [B [C [D [E [G [I [J [N [O [P [Q [R [S [T [V
-.rm ref*string
-..
-.\" Other
-.ds ref*spec!0 Q A T1 S V N P I C D O
-.\" Journal article
-.ds ref*spec!1 Q A T2 J S V N P I C D O
-.\" Book
-.ds ref*spec!2 Q A T1 S V P I C D O
-.\" Article within book
-.ds ref*spec!3 Q A T2 B E S V P I C D O
-.\" Tech report
-.ds ref*spec!4 Q A T2 R G P I C D O
-.\" ][ type
-.de ][
-.if r [T \{\
-. als [T1 [T
-. als [T2 [T
-.\}
-.ie d ref*spec!\\$1 .ref*build \\*[ref*spec!\\$1]
-.el \{\
-. @error unknown reference type `\\$1'
-. ref*build \\*[ref*spec!0]
-.\}
-.ref*print
-.rm ref*string
-.rm [F [T1 [T2
-..
-.\" start of reference number
-.ds [. \E*[par@sup-start]
-.\" end of reference number
-.ds .] \E*[par@sup-end]
-.\" period before reference
-.ds <. .
-.\" period after reference
-.ds >. \" empty
-.\" comma before reference
-.ds <, ,
-.\" comma after reference
-.ds >, \" empty
-.\" start collected references
-.de ]<
-.als ref*print ref*end-print
-.SH
-\&\\*[REFERENCES]
-.par@reset
-..
-.\" end collected references
-.de ]>
-.par@finish
-.als ref*print ref*normal-print
-..
-.de ref*normal-print
-.ie d [F .FS "\\*([.\\*([F\\*(.]"
-.el .FS \&
-\\*[ref*string]
-.FE
-..
-.de ref*end-print
-.ie d [F .IP "\\*([F."
-.el .XP
-\\*[ref*string]
-..
-.als ref*print ref*normal-print
-.de ref*build
-.rm ref*string ref*post-punct
-.nr ref*suppress-period 1
-.while \\n[.$] \{\
-. if d [\\$1 \{\
-. ie d ref*add-\\$1 .ref*add-\\$1
-. el .ref*add-dflt \\$1
-. \}
-. shift
-.\}
-.\" now add a final period
-.ie d ref*string \{\
-. if !\\n[ref*suppress-period] .as ref*string .
-. if d ref*post-punct \{\
-. as ref*string "\\*[ref*post-punct]
-. rm ref*post-punct
-. \}
-.\}
-.el .ds ref*string
-..
-.de ref*add-T1
-.ref*field T , " " "\fI" "" "\fP"
-.if r [T .nr ref*suppress-period \\n([T
-..
-.de ref*add-T2
-.ref*field T , " " "\\*Q" "" "\\*U"
-.if r [T .nr ref*suppress-period \\n([T
-..
-.de ref*add-P
-.ie \\n([P>0 .ref*field P , " " "pp. "
-.el .ref*field P , " " "p. "
-..
-.de ref*add-J
-.ref*field J , " " \fI "" \fP
-..
-.de ref*add-D
-.ref*field D "" " " ( )
-..
-.de ref*add-E
-.ref*field E , " " "ed. "
-..
-.de ref*add-G
-.ref*field G "" " " ( )
-..
-.de ref*add-B
-.ref*field B "" " " "in \fI" "" \fP
-..
-.de ref*add-O
-.ref*field O . " "
-.ie r [O .nr ref*suppress-period \\n([O
-.el .nr ref*suppress-period 1
-..
-.de ref*add-A
-.ref*field A , " "
-.if r [A .nr ref*suppress-period \\n([A
-..
-.de ref*add-V
-.ref*field V "" " " \fB \fR
-..
-.de ref*add-N
-.ref*field N "" ( "" ")"
-..
-.de ref*add-dflt
-.ref*field \\$1 , " "
-..
-.\" First argument is the field letter.
-.\" Second argument is the punctuation character to use to separate this field
-.\" from the previous field.
-.\" Third argument is a string to insert after the punctuation character of
-.\" the previous field (normally a space)
-.\" Fourth argument is a string with which to prefix this field.
-.\" Fifth argument is a string with which to postfix this field.
-.\" Sixth argument is a string to add after the punctuation character supplied
-.\" by the next field.
-.de ref*field
-.if d ref*string \{\
-. ie d ref*post-punct \{\
-. as ref*string "\\$2\\*[ref*post-punct]\\$3\"
-. rm ref*post-punct
-. \}
-. el .as ref*string "\\$2\\$3\"
-.\}
-.as ref*string "\\$4\\*([\\$1\\$5
-.if \\n[.$]>5 .ds ref*post-punct "\\$6
-.nr ref*suppress-period 0
-..
+.mso refer-ms.tmac
.\" ****************************
.\" ******** module acc ********
.\" ****************************
diff --git a/tmac/troffrc b/tmac/troffrc
index 470f262..e353667 100644
--- a/tmac/troffrc
+++ b/tmac/troffrc
@@ -6,10 +6,14 @@
.\" Load composite mappings.
.do mso composite.tmac
.
+.\" Load generic fallback mappings.
+.do mso fallbacks.tmac
+.
.\" Use .do here, so that it works with -C.
.\" The groff command defines the .X string if the -X option was given.
.ie r.X .do ds troffrc!ps Xps.tmac
.el .do ds troffrc!ps ps.tmac
+.do ds troffrc!pdf pdf.tmac
.do ds troffrc!dvi dvi.tmac
.do ds troffrc!X75 X.tmac
.do ds troffrc!X75-12 X.tmac
@@ -25,7 +29,7 @@
.do if d troffrc!\*[.T] \
. do mso \*[troffrc!\*[.T]]
.do rm troffrc!ps troffrc!Xps troffrc!dvi troffrc!X75 troffrc!X75-12 \
-troffrc!X100 troffrc!X100-12 troffrc!lj4 troff!lbp troffrc!html
+troffrc!X100 troffrc!X100-12 troffrc!lj4 troff!lbp troffrc!html troffrc!pdf
.
.\" Test whether we work under EBCDIC and map the no-breakable space
.\" character accordingly.
diff --git a/tmac/www.tmac b/tmac/www.tmac
index 7d8efef..481a7b7 100644
--- a/tmac/www.tmac
+++ b/tmac/www.tmac
@@ -13,7 +13,8 @@ This file is part of groff, the GNU roff type-setting system.
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010
Free Software Foundation, Inc.
written by Gaius Mulley <gaius@glam.ac.uk>, with additions by
-Werner Lemberg <wl@gnu.org> and Bernd Warken <bwarken@mayn.de>.
+Werner Lemberg <wl@gnu.org> and
+Bernd Warken <groff-bernd.warken-72@web.de>.
groff is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
@@ -1008,6 +1009,7 @@ HTML always denotes XHTML also.
.
.\" which macro to use for LI
.de www-push-li
+. nr www-li-indent \\n[.i]
. nr www-depth +1
. ds www-level\\n[www-depth] \\$1\"
. ds www-ltag\\n[www-depth]