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.
Note: release pin
The version of mom downloadable from this page is pinned at 2.6_c pending release of groff 1.24.
The most recent version of mom, 2.6_d, presently lives in the
git development repo. You can clone the repo with
git clone https://git.savannah.gnu.org/git/groff.git
and grab the 2.6_d om.tmac from groff/contrib/mom.
Downloads
The current release
The archive contains:
- the macro file, om.tmac
- README, INSTALL, TODO, BUGS, NEWS, copyright, ChangeLog
- a directory (/momdoc) with the up-to-date html documentation
- a directory (/examples) containing sample .mom files to show her in action, as well as syntax highlighting rules for the vi clones elvis and vim.
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
- the flexibility to style each part of cover pages and docheaders separately, including family, font, size, color, quad, leading, underscoring, caps, and smallcaps
- the addition of DOC_COVERTEXT and COVERTEXT to permit setting blocks of type, e.g. an Abstract, on cover pages
- the addition of DOC_COVER_IMAGE and COVER_IMAGE for putting full-page or smaller images on cover pages
- separation of BLOCKQUOTE_INDENT and QUOTE_INDENT
- the addition of QUOTE_LEFT, QUOTE_CENTER and QUOTE_RIGHT to control the horizontal alignment (quad) of line-for-line quotes
- the addition of smallcaps
- new <ELEMENT>_STYLE macros that permit grouping the style parameters for document elements into a single macro using keyword/value pairs
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:
- accommodate both ‘textmap’ and ‘text.map’ as valid filenames
- -p flag added to invocations of mkdir
- typo in the style prompt fixed (+B intead of erroneous +BI)
- the version variable is set to “current” instead of using the version number spit out by groff -v
- set -o posix has been added to ensure that Ctrl-c sends SIGINT and exits the script cleanly
- the script verifies that the argument to -P (top level font installation directory) is a directory and is writable
Requirements for testing/using mom
PDF output (with mom version 2.x)
- version 1.22 (or later) of groff
- a functioning print system
- a PDF/PostScript viewer (eg Okular, Evince)
PostScript output (with mom version 2.0 or lower)
- version 1.20 (or later) of groff
- a functioning print system
- a PostScript viewer (eg Okular, Evince, gv)
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.