Release notes and downloads

Release notes

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.”

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.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.

What mom provides

Mom wants you to look good in print, and she wants you to do it easily. To that end, she provides


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.



The current release

The archive contains:

Previous releases

The final release in the 1.x series

The script 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 and type ./ -H for instructions.


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.