NEWS revision 55839
1This file describes recent user-visible changes in groff.  Bug fixes
2are not described.  There are more details in the man pages.
3
4VERSION 1.13, 1.14, 1.15
5========================
6
7Bug fixes only; no user-visible changes.
8
9VERSION 1.12
10============
11
12Finally, there are new maintainers for groff.  Mailing lists and a CVS
13repository are available also.  See the file README for details.  Not
14all reported bug could be fixed, so please send mails again if
15something is still not working.
16
17Most of the installation problems should have vanished now (most
18notably the $(tmac_wrap) bug).
19
20There is now a man page called groff_man.man which documents the
21basics of the -man macros.  It has been originally written by Susan
22G. Kleinmann <sgk@debian.org>.
23
24A (still incomplete) groff reference manual in texinfo format
25originally contributed by Trent A. Fisher <trent@gnurd.portland.or.us>.
26
27me.man and msafer.man have been renamed to groff_me.man
28resp. groff_msafer.man for consistency.
29
30Default strings for macros in doc-common resp. tmac.an no longer
31contain the word `UNIX'.
32
33groff should now be Y2k safe (fixes contributed by Paul Eggert
34<eggert@twinsun.com>).
35
36Following the GNU standards, groff will now use the prefix
37`/usr/local/' as the default instead of replacing an existent groff
38binary.
39
40groff, troff, nroff, and pic now support the -U flag to activate unsafe
41behaviour (without -msafer); the -S flag for using the -msafer macros
42is now the default.
43
44Grohtml
45-------
46
47This is a new output device for producing HTML output contributed by
48Gaius Mulley <gaius@glam.ac.uk>.  It is still very alpha but has been
49included into the distribution so that a lot of people have a chance
50to test it.  Bug reports are highly welcome.
51
52Grolj4
53------
54
55Duplex printing support has been contributed by Jeffrey Copeland
56<jeff@opennt.com>.
57
58Soelim
59------
60
61Added -I option for defining include paths (patch contributed by Peter
62Miller <peterm@jna.com.au>).
63
64Gxditview
65---------
66
67Fallback resources added (patch contributed by Larry Jones
68<larry.jones@sdrc.com>).
69
70Will now support 8 gray levels.
71
72mm
73--
74
75New version 1.32 (contributed by Joergen Haegg <jh@axis.com>).
76
77VERSION 1.11
78============
79
80Complete documentation for pic is now in the file doc/pic.ms.  It was
81contributed by Eric S. Raymond, <esr@thyrsus.com>, who is emphatically
82*not* volunteering to take over groff as he is way overworked with
83half a dozen other projects.
84
85VERSION 1.10
86============
87
88The directory where data files are installed has been changed from
89/usr/local/lib/groff to /usr/local/share/groff to comply with the
90latest GNU coding standards.
91
92By default groff programs with Unix equivalents are installed with a
93"g" prefix unless there is an existing (non-groff) troff installation.
94
95A new approach is used to make system macro packages available to
96groff.  Instead of simply including /usr/lib/tmac in the list of
97directories searched by groff, the installation process creates for
98each system macro package a wrapper macro package in the groff macro
99directory that references the system macro package.  The groff macro
100packages are now installed with a leading "g" prefix if there is a
101system version of the same macro package, and otherwise without the
102"g" prefix, with the exception that the groff version of -me which is
103always installed as -me.
104
105There is a new device, lj4, for the HP LaserJet 4 (and PCL5
106compatibles).
107
108Groff
109-----
110
111groff has a -S option that prevents the use of unsafe features in pic
112and troff.  This uses a new -S option of pic and the -msafer macros
113for troff.
114
115Troff
116-----
117
118The `blm' request specifies a macro to be invoked when a blank line is
119encountered.
120
121Pic
122---
123
124A -S (safer) option disables the sh command.
125
126Grops
127-----
128
129The -m option enables manual feed.
130
131VERSION 1.09
132============
133
134\(rn will now produce a character that has the traditional metrics,
135and will form corners with \(ul and \(br.  This means that it will not
136align properly with \(sr.  Instead there's a new character
137\[radicalex] which aligns with \(sr; this is used by eqn for doing
138square roots.
139
140Troff
141-----
142
143The `pso' request allows you to read from the standard output of a
144command.
145
146Grops
147-----
148
149The PSPIC macro has options to allow the horizontal alignment of the
150graphic to be specified.
151
152VERSION 1.08
153============
154
155Troff
156-----
157
158The escape sequence \V[xxx] will interpolate the value of the
159environment variable xxx.
160
161Tbl
162---
163
164The decimalpoint option can be used to specify the character to be
165recognized as the decimal point character in place of the default
166period.
167
168VERSION 1.07
169============
170
171Groff
172-----
173
174The environment variable GROFF_COMMAND_PREFIX can be used to control
175whether groff looks for `gtroff' or `troff' (similarily for the
176preprocessors.)
177
178Troff
179-----
180
181Multilingual hyphenation is supported by new `hpf' and `hla' requests,
182and by a `\n[.hla]' number register.  The -H option has been removed.
183Files of hyphenation patterns can have comments.
184
185When a font cannot be found, troff gives a warning (of type `font',
186enabled by default) instead of an error.
187
188There's a new request `trnt' that's like `tr' except that it doesn't
189apply to text transparently throughput into a diversion with \!.
190
191Tbl
192---
193
194There is a `nokeep' option which tells tbl not to use diversions to
195try to keep the table on one page.
196
197Eqn
198---
199
200Setting the parameter `nroff' to a non-zero value causes `ndefine' to
201behave like `define' and `tdefine' to be ignored.  This is done by
202eqnrc when the current device is ascii or latin1.  There's a `neqn'
203script that just does `eqn -Tascii'.
204
205Grotty
206------
207
208grotty uses whatever page length was specified using the `pl' request
209rather than using the paperlength command in the DESC file.  The
210paperwidth command in the DESC file is also ignored.
211
212VERSION 1.06
213============
214
215The programs in groff that have Unix counterparts can now be installed
216without a leading `g' prefix.  See the `g' variable in the Makefile.
217
218The g?nroff script simulates the nroff command using groff.
219
220New special characters \(+h, \(+f, \(+p, \(Fn, \(Bq, \(bq, \(aq, \(lz,
221\(an.  See groff_char(7).
222
223^L is now a legal input character.
224
225Groff
226-----
227
228The Xps pseudo-device has disappeared.  Instead there is a new -X
229option that tells groff to use gxditview instead of the usual
230postprocessor. (So instead of -TXps, use -XTps or just -X if your
231default device is ps.)
232
233The postprocessor to be used for a particular device is now specified
234by a `postpro' command in the DESC file rather than being compiled
235into groff.  Similarly the command to be used for printing (with the
236-l option) is now specified by a `print' command in the DESC file.
237
238The groff command no longer specifies eqnchar as an input file for
239eqn.  Instead eqn automatically loads a file `eqnrc'.  The groff
240command no longer passes the -D option to eqn.  Instead eqnrc sets the
241draw_lines parameter.
242
243The groff command no longer tells troff to load a device-specific
244macro file.  This is handled instead by the `troffrc' file, which is
245always loaded by troff.
246
247The shell script version of groff has been removed.
248
249Troff
250-----
251
252The `rchar' request removes a character definition established with `char'.
253
254Compatibility mode is disabled and the escape character is set to `\'
255while a character definition is being processed.
256
257The `\#' escape sequence is like `\"' except that the terminating
258newline is ignored.
259
260The `shc' request tells troff which character to insert (instead of
261the default \(hy) when a word is hyphenated at a line break.
262
263A font name of 0 (zero) in the DESC file will cause no font to be
264mounted on the corresponding font position.  This is useful for
265arranging that special fonts are mounted on positions on which users
266are not likely explicitly to mount fonts.  All groff devices now avoid
267initially mounting fonts on positions 5-9.
268
269The `do' request allows a single request or macro to be interpreted
270with compatibility mode disabled.
271
272troff automatically loads a file `troffrc' before any other input file.
273This can be prevented with the -R option.  This file is responsible
274for loading the device-specific macros.
275
276Pic
277---
278
279The -x option has been removed and a -n option has been added.  By
280default, pic now assumes that the postprocessor supports groff
281extensions.  The -n option tells pic to generate output that works
282with ditroff drivers.  The -z option now applies only to TeX mode.
283
284The -p option has been removed. Instead if the -n option is not
285specified, pic generates output that uses \X'ps: ...' if the \n(0p
286register is non-zero and tmac.ps sets this register to 1.
287
288In places where you could 1st or 5th you can now say `i'th or `i+1'th
289(the quotes are required).
290
291Eqn
292---
293
294Eqn now automatically reads a file `eqnrc' from the macro directory.
295This performs the same role that the eqnchar files used to.  This can
296be prevented by the -R option.
297
298Setting the draw_lines parameter to a non-zero value causes lines to
299be drawn using \D rather than \l.  The -D option is now obsolete.
300
301`uparrow', `downarrow' and `updownarrow' can be used with `left' and
302`right'.
303
304The amount of extra space added before and after lines containing
305equations can be controlled using the `body_height' and `body_depth'
306parameters.
307
308Grops
309-----
310
311Font description files have been regenerated from newer AFM files.
312You can get access to the additional characters present in the text
313fonts in newer PostScript printers by using -mpsnew.
314
315The default value of the -b option is specified by a `broken' command
316in the DESC file.
317
318With the -g option, grops will generate PostScript code that guesses
319the page height.  This allows documents to be printed on both letter
320(8.5x11) and A4 paper without change.
321
322Grodvi
323------
324
325ISO Latin-1 characters are available with -Tdvi.  Format groff_char(7)
326with groff -Tdvi for more information.
327
328Grotty
329------
330
331The -mtty-char macros contain additional character definitions for
332use with grotty.
333
334Macros
335------
336
337In previous releases the groff -me macros treated the $r and $R number
338registers in a way that was incompatible with the BSD -me macros.  The
339reason for this was that the approach used by the BSD -me macros does
340not work with low resolution devices such as -TX75 and -TX100.
341However, this caused problems with existing -me documents.  In this
342release, the vertical spacing is controlled by the $v and $V registers
343which have the same meaning as $r and $R in earlier groff releases.
344In addition, if the $r or $R register is set to a value that would be
345correct for for the BSD -me macros and a low resolution device is not
346being used, then an appropriate value for the $v or $V register will
347be derived from the $r or $R register.
348
349The groff -me macros work with -C and (I think) with Unix troff.
350
351For backward compatibility with BSD -me, the \*{ and \*} strings are
352also available as \*[ and \*].  Of course, \*[ will only be usable
353with -C.
354
355The \*T string has been deleted.  Use \*(Tm instead.
356
357Xditview
358--------
359
360The `n', Space and Return keys are bound to the Next Page action.  The
361`p', BackSpace and Delete keys are bound to the Previous Page action.
362The `q' key is bound to the Quit action.
363
364The `r' key is bound to a rerasterize action that reruns groff, and
365redisplays the current page.
366
367VERSION 1.05
368============
369
370Pic
371---
372
373There is a alternative assignment operator `:=' which interacts
374differently with blocks.
375
376There is a new command `command', which allows the values of variables
377to be passed through to troff or TeX.
378
379The `print' command now accepts multiple arguments.
380
381String comparison expressions (using `==' or `!=') are allowed in more
382contexts.
383
384Grotty
385------
386
387Horizontal and vertical lines drawn with \D'l ...' will be rendered
388using -, | and + characters.  This is intended to give reasonable
389results with boxed tables.  It won't work well with pic.
390
391Macros
392------
393
394The -mdoc macros have been upgraded to the version in the second
395Berkeley networking release.  This version is not completely
396compatible with earlier versions; the old version is still available
397as -mdoc.old.  The grog script has been enhanced so that it can
398usually determine whether a document requires the old or new versions.
399
400With -TX75, -TX100 and -TXps, the PSPIC macro will produce a box
401around where the picture would appear with -Tps.
402
403VERSION 1.04
404============
405
406An implementation of the -mm macros is included.
407
408The directory in which temporary files are created can be controlled
409by setting the GROFF_TMPDIR or TMPDIR environment variables.
410
411Pic
412---
413
414Some MS-DOS support (see pic/make-dos-dist).
415
416Grops
417-----
418
419There are two new \X commands (\X'ps: invis' and \X'ps: endinvis')
420which make it possible to have substitute characters that are
421displayed when previewing with -TXps but ignored when printing with
422grops.
423
424Xditview
425--------
426
427Support for scalable fonts.
428
429VERSION 1.03
430============
431
432No changes other than bug fixes.
433
434VERSION 1.02
435============
436
437There is an implementation of refer and associated programs.  groff -R
438preprocesses with grefer; no mechanism is provided for passing
439arguments to grefer because most grefer options have equivalent
440commands which can be included in the file.  grog also supports refer.
441
442There is an alternative perl implementation of the grog script.
443
444The code field in lines in the charset section of font description
445files is now allowed to contain an arbitrary integer (previously it
446was required to lie between 0 and 255).  Currently grops and grodvi
447use only the low order 8 bits of the value.  Grodvi will use the
448complete value; however, this is unlikely to be useful with
449traditional TeX tools (.tfm files only allow 8 bit character codes.)
450
451Left and right double quotes can be obtained with \(lq and \(rq
452respectively.
453
454There is a new program called pfbtops which translates PostScript
455fonts in pfb format to ASCII.
456
457A slightly modified version of the Berkeley tmac.doc is included.
458
459Troff
460-----
461
462In long escape names the closing ] is now required to be at the same
463input level as the opening [.
464
465The \A'S' escape sequence returns 1 or 0 according as S is or is not
466suitable for use as a name.
467
468\~ produces an unbreakable space that can be stretched when the line
469is adjusted.
470
471The `mso' request is like the `so' request except that it searches for
472the file in the same directories in which tmac.X is searched for when
473the -mX option is given.
474
475The escape sequence `\R' is similar to the `nr' request.
476
477Eqn
478---
479
480A new `special' primitive allows you to add new types of unary
481constructs by writing a troff macro.
482
483Pic
484---
485
486The implementation no longer uses gperf.
487
488Grops
489-----
490
491The compile-time -DBROKEN_SPOOLER option has been replaced by a
492BROKEN_SPOOLER_FLAGS option.  This allows more precise control over
493how grops should workaround broken spoolers and previewers.  There is
494a new -b option that can change this at run-time.
495
496Grops now generates PostScript that complies with version 3.0 of the
497Document Structuring Convention.
498
499The resource management component of grops (the part that deals with
500imported documents and downloadable fonts) has been rewritten and now
501supports version 3.0 of the Document Structuring Conventions.  The
502%%DocumentFonts comment is no longer supported; you must use the
503%%Document{Needed,Supplied}{Fonts,Resources} comments instead
504(or as well.)
505
506tmac.psatk contains some macros that support the mechanism used by the
507Andrew Toolkit for including PostScript graphics in troff documents.
508
509Xditview
510--------
511
512Parts of xditview have been rewritten so that it can be used with the
513output of gtroff -Tps.  groff -TXps will run gtroff -Tps with
514gxditview.
515
516There is a new menu entry `Print' which brings up a dialog box for
517specifying a command with which the file being previewed should be
518printed.
519
520Xditview now uses imake.
521
522VERSION 1.01
523============
524
525The groff command now understands the gtroff `-a' and `-i' options.
526
527With the `m' and `n' scale indicators, the scale factor is rounded
528horizontally before being applied.  This makes (almost) no difference
529for devices with `hor' equal to 1, but it makes groff with -Tascii or
530-Tlatin1 behave more like nroff in its treatment of these scale
531indicators.  Accordingly tmac.tty now calls the `nroff' request so
532that the `n' condition will be true.
533
534The device-specific macros (tmac.ps, tmac.dvi, tmac.tty and tmac.X)
535have been made to work at least somewhat with -C.  In particular the
536special characters defined by these macros now work with -C.
537
538groff -Tdvi -p will now pass pic the -x flag; this will enable filling
539of arrowheads and boxes, provided that your dvi driver supports the
540latest version of the tpic specials.
541
542Eqn
543---
544
545There is a new `-N' option that tells eqn not to allow newlines in
546delimiters.  This allows eqn to recover better from missing closing
547delimiters.  The groff command will pass on a `-N' option to eqn.
548
549Grops
550-----
551
552You can now use psfig with grops.  See the file ps/psfig.diff.  I do
553not recommend using psfig for new documents.
554
555The command \X'ps: file F' is similar to \X'ps: exec ...' except that
556the PostScript code is read from the file F instead of being contained
557within the \X command.  This was added to support psfig.
558
559Grodvi
560------
561
562There are font files HB and HI corresponding to cmsssbx10 and cmssi10.
563
564Macros
565------
566
567The groff -me macros now work with the -C option.  As a result, they
568may also work with Unix nroff/troff.
569
570In -me, the $r and $R number registers now contain the line spacing as
571a percentage of the pointsize expressed in units (normally about 120).
572The previous definition was useless with low resolution devices such
573as X75 and X100.
574
575VERSION 1.00
576============
577
578A -ms-like macro-package is now included.
579
580The name for the Icelandic lowercase eth character has been changed
581from \(-d to \(Sd.
582
583Troff
584-----
585
586There is a new request `nroff', which makes the `n' built-in condition
587true and the `t' built-in condition false; also a new request `troff'
588which undoes the effect of the `nroff' request.  This is intended only
589for backward compatibility: it is usually better to test \n(.H or
590\n(.V or to use the `c' built-in condition.
591
592The \R escape sequence has been deleted.  Use \E instead.
593
594There are `break' and `continue' requests for use with the `while'
595request.
596
597There is a request `hym' that can ensure that when the current
598adjustment mode is not `b' a line will not be hyphenated if it is no
599more than a given amount short, and a request `hys' that can ensure
600that when the current adjustment mode is `b' a line will not be
601hyphenated if it can be justified by adding no more than a given
602amount of extra space to each word space.
603
604There is a request `rj' similar to `ce' that right justifies lines.
605
606A warning of type `space' will be given when a call is made to an
607undefined request or macro with a name longer than two characters, and
608the first two characters of the name make a name that is defined.
609This is intended to find places where a space has been omitted been a
610request or macro and its argument.  This type of warning is enabled by
611default.
612
613Pic
614---
615
616A comma is permitted between the arguments to the `reset' command.
617
618For use with TeX, there is a new `-c' option that makes gpic treat
619lines beginning with `.' in a way that is more compatible with tpic
620(but ugly).
621
622Eqn
623---
624
625It is no longer necessary to add `space 0' at the beginning of
626complicated equations inside pictures.
627
628`prime' is now treated as an ordinary character, as in Unix eqn.  The
629previous behaviour of `prime' as an operator can now be obtained using
630`opprime'.
631
632Xditview
633--------
634
635There are two new devices X75-12 and X100-12 which are the same as X75
636and X100 except that they are optimized for documents that use mostly
63712 point text.
638
639VERSION 0.6
640===========
641
642The installation process has been refined to make it easy for you to
643share groff with someone who has the same type of machine as you but
644does not have a C++ compiler.  See the end of the INSTALL file for
645details.
646
647There is a man page for the tfmtodit program which explains how to use
648your own fonts with groff -Tdvi.
649
650There is a man page for afmtodit which explains how to use your own
651PostScript fonts with groff -Tps.
652
653The \N escape sequence is now fully supported.  It can now be used to
654access any character in a font by its output code, even if it doesn't
655have a groff name.  This is made possible by a convention in the font
656files that a character name of `---' refers to an unnamed character.
657The drivers now all support the `N' command required for this.  The font
658description files have been updated to include unnamed characters.
659
660The `x' command in font description files has been removed: instead
661any unknown commands are automatically made available to the drivers.
662If you constructed your own font files with an earlier version of
663tfmtodit or afmtodit, you must construct them again using the current
664version.
665
666Characters between 0200 and 0237 octal are no longer legal input
667characters.  Note that these are not used in ISO 8859.
668
669A command called `grog' has been added, similar to the `doctype'
670command described in Kernighan and Pike.
671
672Groff
673-----
674
675The groff command has some new options: -V prints the pipeline
676instead of executing it; -P passes an argument to the postprocessor,
677-L passes an argument to the spooler.
678
679There is a C++ implementation of the groff command.  This handles some
680things slightly better than the shell script.  In particular, it can
681correctly handle arguments containing characters that have a special
682meaning to the shell; it can give an error message when child
683processes other than the last in the pipeline terminate abnormally;
684its exit status can take account of the exit statuses of all its child
685processes; it is a little more efficient; when geqn is used, it
686searches for the eqnchar file in the same way that font metric files
687are searched for, rather than expecting to find it in one particular
688directory.
689
690Gtroff
691------
692
693There is font translation feature: For example, you can tell gtroff to
694use font `HR' whenever font `H' is requested with the line
695  .ftr H HR
696This would be useful for a document that uses `H' to refer to
697Helvetica.
698
699There are some new number registers: `.kern' contains the current kern
700mode, `.lg' the current ligature mode, `.x' the major version number,
701`.y' the minor version number, `.ce' the number of lines to be
702centered in the current environment, `.trunc' the amount of vertical
703space truncated by the most recently sprung vertical position trap,
704`.ne' the amount of vertical space needed in the last `ne' request
705that caused a vertical position trap to be sprung.
706
707The `cf' request now behaves sensibly in a diversion.  If used in a
708diversion, it will now arrange for the file to be copied to the output
709when the diversion is reread.
710
711There is a new request `trf' (transparent file) similar to `cf', but
712more like `\!'.
713
714There is a new escape sequence `\Y[xxx]', roughly equivalent to
715`\X'\*[xxx]'', except that the contents of string or macro xxx are not
716interpreted, and xxx may contain newlines.  This requires an output
717format extension; the drivers have been modified to understand this.
718Grops has also been modified to cope with newlines in the arguments to
719\X commands; grops has a new \X command mdef, which is like def except
720that it has a first argument giving the number of definitions.
721
722There is a new warning category `escape' which warns about unknown
723escape sequences.
724
725The `fp' request now takes an optional third argument giving the external
726name of the font.
727
728The `\_' character is now automatically translated to `\(ul' as in troff.
729
730The environment variable `GROFF_HYPHEN' gives the name of the file
731containing the hyphenation patterns.
732
733There is a `\C'xxx'' escape sequence equivalent to `\[xxx]'.
734
735Characters ", ', ), ], *, \(dg are now initially transparent for the purposes
736of end of sentence recognition.
737
738There is an anti-recursion feature in the `char' request, so you can
739say `.char \(bu \s+2\(bu\s-2'.
740
741The limit on the number of font positions has been removed.
742Accordingly `\n[.fp]' never returns 0.
743
744The restriction on the number of numbered environments has been removed.
745
746There is a new escape sequence `\E' that makes it possible to
747guarantee that an escape sequence won't get interpreted in copy-mode.
748The `\R' escape sequence is accordingly now deprecated.
749
750Gpic
751----
752
753Arguments of the form `X anything X' (in the `copy thru', `sh', `for',
754`if' and `define' constructs) can now be of the form `{ anything }'.
755
756If the `linethick' variable is negative (as it now is initially),
757lines will be drawn with a thickness proportional to the current point
758size.
759
760The `rand' function now takes no arguments and returns a number between
7610 and 1.  The old syntax is still supported.
762
763`^' can be used in expressions to indicate exponentiation.
764
765In the `for' construct the argument to the by clause can be prefixed
766by `*' to indicate that the increment is multiplicative.
767
768A bare expression may be used as an attribute.  If the current
769direction is `dir', then an attribute `expr' is equivalent to
770`dir expr'
771
772There is a `sprintf' construct that allows numbers to be formatted and used
773wherever a quoted string can be used.
774
775The height of a text object without an explicit height attribute is
776the number of text strings associated with the object times the value
777of the `textht' variable.
778
779The maximum height and width of a picture is controlled by the
780`maxpswid' and `maxpsht' variables.
781
782Gtbl
783----
784
785Gtbl can now handle gracefully the situation where the `ce' request
786has been applied to a table.
787
788Geqn
789----
790
791The `ifdef' primitive has been generalized.
792
793A tilde accent can be put underneath a box using `utilde'.  This
794defined using a general `uaccent' primitive.
795
796Grops
797-----
798
799There is a new PostScript font downloading scheme which handles font
800downloading for imported illustrations.  Previously, the name of the
801file containing the font was given in the `x download' line in the
802groff font metric file.  Now, there is a `download' file which says
803for each PostScript font name which file contains that font.  Grops
804can also now handle inter-font dependencies, where one downloadable
805font depends on some other (possibly downloadable) font.
806
807The `T' font has been removed.  The characters it used to provide are
808now provided by `char' definitions in tmac.ps. TSymbol.ps has also
809been removed, and the tweaks it provided are now provided by `char'
810definitions.
811