Release notes and downloads

Mom’s place in the groff scheme of things

Mom is officially part of groff, present in the groff git repository in the /contrib directory. Official releases of groff include the version of mom current at the time of the groff release.

However, mom is being developed independently of groff. Consequently, new releases of and patches to mom are posted on this page so you can update her without having to wait for official groff releases or having to download and build groff from the repository just to get a new mom. :) One of the advantages to macro programming is that you don’t even have to compile the macro set; just plug it in.

The files in the groff repository and the tarballs on this page are kept in synch. The only differences are that the tarballs here contain README and INSTALL files that aren’t present in the groff repository.

Downloads

The current release

The archive contains:

Previous releases

The final release in the 1.x series

Release notes

Version 2.6_c

Version 2.6_c improves the spacing of shaded backgrounds and frames around headings and adds a LEAD argument to HEADING_STYLE to control the leading of multi-line headings.

Version 2.6_b

Version 2.6_b correctly maps printed page numbers to the PDF outline panel and adds a control macro for PDF outline page numbering. Tables of Contents page margins can now be set explicitly instead of relying on the document margins captured at the first invocation of START.

Version 2.6_a

Version 2.6_a fixes the incorrect indenting of quote/blockquote across columns.

Version 2.6

Version 2.6 improves Table of Contents formatting; very long heading entries now break properly. Internally, color management has been refactored.

Version 2.5_d

Version 2.5_d contains changes to the graphical objects macros in preparation for pending changes to the core formatter's handling of the \D't n' escape. Two other small fixes correct problems with PAGEWIDTH and UNDERSCORE/UNDERSCORE2.

Version 2.5_c

Version 2.5_c fixes restoration of pagination after it’s been disabled. A new warning+abort has been added in cases of nroff being called on documents that are PRINTSTYLE TYPESET. Terminal output requires PRINTSTYLE TYPEWRITE. Note that mom is not designed for terminal output. Even with TYPEWRITE, the terminal output is less than optimally formatted.

Version 2.5_b

Version 2.5_b fixes bugs in the handling of LINEBREAK and DROPCAP (see BUGS) at page transitions. A new warning has been introduced to alert when tbl(1) data is present in an input file but the -t flag has been omitted from the command line. BLANKPAGE has been corrected to work properly when columns are enabled. CODE <anything> now correctly restores the point size in effect prior to CODE being called, and the terminating call to .REF correctly restores users’ sentence space.

Version 2.5_a

Version 2.5_a fixes bugs with NEWPAGE and COPYSTYLE (see BUGS). In addition, the LEFT_HANG macro has been re-written to correct errors with indentation and vertical spacing. LEFT_HANG now takes two arguments: the character to be hung and a gutter. The second argument is optional. Documents created with earlier versions may need to be updated. See the LEFT_HANG documentation.

Version 2.5

Version 2.5 adds two new macros, BOX and PAGE_COLOR.

BOX allows adding shaded backgrounds or frames, or both, to regions of running text, including pre-processor material and images. Backgrounds/frames intelligently span pages when necessary.

PAGE_COLOR allows giving an entire page or slide a coloured background.

The macros DBX and DCL have a new argument, FULL_MEASURE, which circumvents having to calculate the width when there are active left and/or right indents.

NOTE: The BOX and PAGE_COLOR macros require groff 1.23 or higher.

Versions 2.4-4_a – 2.4-4_e, bugfix releases

2.4-4_a corrects problems with QUOTE and BLOCKQUOTE indents and fixes the overwriting of user-set PAGE, PAGEWIDTH, and PAGELENGTH by the default PAPER setting.

2.4-4_b fixes BIBLIOGRAPHY_SPACING so that it works as advertised.

2.4-4_c fixes a small indent SMALLCAPS was introducing when called after PP.

2.4-4_d fixes an adjustment bug in the EQ macro.

2.4-4_e fixes handling of paper size set at the top of files with PAPER.

Version 2.4-4

Version 2.4-4 adds a new macro, TOC_HEADING, which allows inserting single, non-pagenumbered lines of text into the Table of Contents (e.g. “PART I”). A number of bugs affecting autolabelling and captions have been fixed (see BUGS, 2.4-3). Handling of the 'idem' field (%i) in refer databases has been made more robust, as has the formatting of Internet references.

Version 2.4-3

Version 2.4-3 fixes remaining inconsistencies in the handling of COVER and DOC_COVER pages. Two new example files have been added showing how to add a copyright page (edition page) to mom documents.

Version 2.4-2

Version 2.4-2 fixes bugs in COVER and DOC_COVER so that they now correctly capture and print the pertinent title(s) and copyright(s). tbl integration has also been fixed so that multi-line text cells properly respect the pre-tbl fill mode.

Version 2.4-1

Version 2.4-1 further improves the handling of deferred floats and images.

Version 2.4

Version 2.4 fixes inconsistencies in the spacing, alignment, captioning, and labelling of images and pre-processor material, particularly tbl. Handling of floats has been overhauled to ensure that the correct page number is printed in "Lists of..." when a float is deferred.

Version 2.3-a

Version 2.3-a adds support for the grap preprocessor.

Version 2.3

Version 2.3 adds the capability of creating slide presentations with mom. When viewed in a PDF reader in Presentation Mode, slides transition from one to the next in a variety of ways (Wipe, Fade, Dissolve, Blinds, etc.), and pauses can be introduced into slides so that the material underneath can be revealed progressively using the same effects as slide transitions. Read up on slides here.

In addition, macros that handle hanging punctuation have been added, and bugs in the handling of IB (indent from both margins) have been fixed.

Version 2.2

The main new feature in 2.2 is the addition of flexible vertical whitespace, which, when the feature is enabled, inserts “flex-points” at logical places on the page. Users can also insert flex points themselves, for example between spaced paragraphs.

Float, pre-processor, and image handling have been reworked to improve their integration with PDF links, as well as page placement and spacing. Autolabeling of figures, tables, etc. has been extended so that it is now possible to refer to them symbolically by PDF target name rather than by the auto-assigned number, e.g. “See Fig. \*[target-name]” rather than “See Fig. 9.” Please note that this functionality requires that you be running version 1.22.4 of groff or later.

Versions 2.1-a, 2.1-b, 2.1-b_1

Version 2.1-a adds the facility to label and/or caption floats and have them included in a “List of ...” (e.g. List of Figures). This is a fairly rare circumstance since the usual contents of floats (e.g. tables or images) have their own labelling facilities, which, moreover, should be used rather than labelling the containing float.

QUOTES and BLOCKQUOTES may also be labelled/captioned, allowing, amongst other things, the ability to attach an informal attribution to cited passages in non-academic works.

A new macro, FORCE_RECTO, automatically inserts a blank page after chapters and major document sections that end on odd (recto) pages when recto-verso output is enabled, such that each chapter or section always begins on a recto page.

Additionally, there are a number of small refinements to the Table of Contents handling of chapter entries (see tables-of-contents.html in the html documentation).

Version 2.1-b is an administrative release containing updated copyright info. It also contains a fix to the handling of kern units.

2.1-b_1 fixes a bug affecting the use of HEADERS_AND_FOOTERS.

Version 2.1

Version 2.1 contains significant under-the-hood reworking of the management of covers, docheaders, and the control macros used to style various document elements. For users, the major changes are

Version 2.0

The decision to change major release numbers comes about as a result of a shift in mom’s focus from PostScript output to PDF. While either results in the same printed output, PDF has a number of exceptionally useful features when documents are viewed at the screen, notably html-style linking and the generation of a PDF outline—a clickable, mini table of contents—visible in the Contents panel of most PDF viewers.

Deri James’ gropdf driver, a relative newcomer to groff, has matured beautifully, spurring him to contribute virtually all of the macro code necessary for complete integration of mom with PDF. The results are splendid, making mom/groff one of the best PDF authoring tools out there.

In addition to gropdf, Deri has contributed pdfmom, a wrapper around groff that makes all of the PDF features in mom available. Two in particular bear mentioning: the ability to reposition a Table of Contents intelligently to the top of a document from within a mom source file, and the freedom to set papersizes within a mom file without the need for a corresponding papersize instruction on the command line.

Mom herself has undergone significant code cleanup. Redundancies have been removed. Several routines have been rewritten to permit greater page elasticity. Table of Contents collection has been streamlined, and the default formatting of tables of contents refined.

The management of nested heads has been completely redesigned. While users may continue to use the older HEAD, SUBHEAD, and SUBSUBHEAD, they are now wrappers around the new HEADING <level n> macro. Styling of heads has been streamlined into a single macro, HEADING_STYLE, with a corresponding TOC_ENTRY_STYLE <level n> macro.

PARAHEAD and its related control macros have been removed. HEADING <level n> PARAHEAD must be used instead. Compatibility with older documents is assured through informational messages mom spits out on stderr.

Along with the new PDF-related macros, which include PDF_IMAGE (analgous to PSPIC but for PDF image files), a FLOAT macro has been added that functions similarly to the ms macros’s .KF/.KE.

Overall, differences between 1.x and 2.x are transparent to the user, and other than PARAHEAD, noted above, impose no requirement to update documents created with 1.x.

A manual in PDF format, Producing PDFs with groff and mom, available here, covers full mom/PDF usage. Further discussion of version 2.0 can be found in mom’s html documentation.

The install-font.sh script

install-font.sh is a bash script that significantly eases the installation of families and fonts for use with groff. It is not an official part of groff or mom, but it sure is handy. After downloading, make it executable with
  chmod 755 install-font.sh and type ./install-font.sh -H for instructions.

If you have been using install-font.sh for a while and discover it suddenly choking because it can't find required directories, re-download the script, which has been updated to correct the problem.

Fixes:

Requirements for testing/using mom

PDF output (with mom version 2.x)

PostScript output (with mom version 2.0 or lower)

The documentation should be considered the authoritative source on mom’s behaviour. Please report any discrepancies between the docs and mom’s actual performance immediately. If you’re trying to accomplish something unusual (ie something not covered by the docs but that you feel mom ought to be able to do with the tools she provides), play around for a bit, but don’t break your head. Contact me. More important, if the docs describe a behaviour and mom isn’t doing what the docs say, the fault is mine, not yours. Again, contact me.

Lastly, comments concerning the documentation itself are also very much appreciated.

Note: If your version of groff is lower than 1.20 and you encounter problems with font or family management in your mom documents, I suggest updating to a recent version of groff available from the groff site. While mom tries to be backwardly compatible with previous groff releases, groff is in steady development and compatibility isn’t always possible, especially when essential new features are added.