summaryrefslogtreecommitdiffstats
path: root/contrib/mom/examples
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:44:05 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:44:05 +0000
commitd318611dd6f23fcfedd50e9b9e24620b102ba96a (patch)
tree8b9eef82ca40fdd5a8deeabf07572074c236095d /contrib/mom/examples
parentInitial commit. (diff)
downloadgroff-upstream/1.23.0.tar.xz
groff-upstream/1.23.0.zip
Adding upstream version 1.23.0.upstream/1.23.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'contrib/mom/examples')
-rw-r--r--contrib/mom/examples/README-fr.txt126
-rw-r--r--contrib/mom/examples/README.txt119
-rw-r--r--contrib/mom/examples/copyright-chapter.mom160
-rw-r--r--contrib/mom/examples/copyright-default.mom149
-rw-r--r--contrib/mom/examples/elvis_syntax96
-rw-r--r--contrib/mom/examples/elvis_syntax.new116
-rw-r--r--contrib/mom/examples/letter.mom46
-rw-r--r--contrib/mom/examples/mom-pdf.mom620
-rw-r--r--contrib/mom/examples/mom.vim140
-rw-r--r--contrib/mom/examples/mon_premier_doc.mom140
-rw-r--r--contrib/mom/examples/penguin.pdf148
-rw-r--r--contrib/mom/examples/penguin.ps461
-rw-r--r--contrib/mom/examples/sample_docs.mom713
-rw-r--r--contrib/mom/examples/slide-demo.mom438
-rw-r--r--contrib/mom/examples/test-mom.sh.in92
-rw-r--r--contrib/mom/examples/typesetting.mom707
16 files changed, 4271 insertions, 0 deletions
diff --git a/contrib/mom/examples/README-fr.txt b/contrib/mom/examples/README-fr.txt
new file mode 100644
index 0000000..5b1b434
--- /dev/null
+++ b/contrib/mom/examples/README-fr.txt
@@ -0,0 +1,126 @@
+-*- mode: text; coding: utf-8; -*-
+Copyright (C) 2014-2020 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.
+
+========================================================================
+
+Les fichiers dans ce répertoire vous permettent de voir mom en pleine
+action.
+
+Si vous avez téléchargé et décompressé une version de mom depuis sa
+page d'accueil, vous verrez qu'aucun exemple n'est accompagné du
+fichier PDF (.pdf) correspondant, comme c'est le cas sur les versions
+pré-compilées de groff, ou groff compilé à partir des sources.
+
+Je n'ai pas inclu les PDF parce que je voulais conserver l'archive mom
+aussi petite que possible. Pour générer les PDF, traitez les fichiers
+avec pdfmom(1).
+
+ pdfmom mom-pdf.mom > mom-pdf.pdf
+ pdfmom sample_docs.mom > sample_docs.pdf
+ pdfmom slide-demo.mom > slide-demo.pdf
+ pdfmom -k letter.mom > letter.pdf
+ pdfmom -k mon_premier_doc.mom > mon_premier_doc.pdf
+ pdfmom -k typesetting.mom > typesetting.pdf
+
+Les fichiers
+------------
+
+Tous les fichiers sont configurés pour le format lettre US, exceptés
+mom-pdf.mom et mon_premier_doc.mom, qui utilisent le format A4.
+
+***typesetting.mom**
+
+Le fichier typesetting.mom montre l'utilisation d'éléments de
+composition typographique: tabulations, tabulations intégrées dans des
+chaînes de caractères, remplissage de lignes, texte sur plusieurs
+colonnes et différents styles d'indentation; ainsi que certaines
+subtilités et réglages précis disponibles via des macros et des
+échappements en ligne ("inline escape", des commandes insérées
+directement dans le texte, par opposition aux macros).
+
+Comme ce fichier montre également l'utilisation d'une petite image au
+milieu d'un texte et que cette image est la mascotte favorite de tout
+le monde -- Tux, le fichier PDF de cette image, penguin.pdf, a été
+ajouté dans ce répertoire.
+
+***sample_docs.mom***
+
+Le fichier sample_docs.mom montre en exemple les trois styles de
+documents apportés par les macros de formattage de document de mom,
+ansi que l'utilisation de COLLATE. Il montre également certaines
+fonctionnalités PDF de mom dont l'écriture d'une ébauche de nouvelle
+ou des liens cliquables dans une table des matières.
+
+Le dernier exemple démontre, par un texte séparé en deux colonnes, la
+souplesse de mom pour la conception de document.
+
+Le PRINTSTYLE de ce fichier est TYPESET et vous donne une idée du
+comportement par défaut de mom pour la composition typographique de
+document.
+
+Si vous souhaitez voir comment mom traite le même fichier quand
+PRINTSTYLE est TYPEWRITE (c'est-à-dire dactylographié, avec espace
+double) remplacez .PRINTSTYLE TYPESET par .PRINTSTYLE TYPEWRITE au
+début du fichier.
+
+***letter.mom***
+
+Ceci est simplement l'exemple du tutorial de momdocs, prêt à être vu.
+
+***slide-demo.mom***
+
+Le fichier slide-demo.mom montre une présentation de diapositives
+avec des effets PAUSE et TRANSITION. Le fichier .pdf généré avec
+pdfmom devrait être ouvert en mode Présentation d'un lecteur PDF
+(Okular, Evince, Acroread). Notez que pas tous les effets de
+transition sont disponibles pour tous les lecteurs PDF.
+
+***mon_premier_doc.mom***
+
+Le fichier mon_premier_doc.mom est un exemple simple en français
+montrant l'utilisation d'éléments de formattage courants: titres de
+section, paragraphes, listes, table des matières et liens PDF
+cliquables. Il doit être généré avec l'option -k du fait de la
+présence de caractères accentués.
+
+Un certain nombre de réglages ont également été changés pour ce
+document en français: ATTRIBUTE_STRING est utilisé pour remplacer
+"by" par "par" en tête de document (là où le titre et l'auteur sont
+affichés). TOC_HEADER_STRING sert à modifier le titre de la table des
+matières en "Table des matières" plutôt que "Table of Content". Enfin,
+le paramètre de configuration INDENT_FIRST_PARAS est activé afin
+d'indenter le premier paragraphe de chaque section -- ceci est l'usage
+en typographie française.
+
+***copyright-default.mom/copyright-chapter.mom***
+
+Deux fichiers qui montrent la bonne façon d'insérer une page des
+droits d'auteur dans les documents créés avec mom. "Default" est
+pour DOCTYPE DEFAULT; "chapter" est pour DOCTYPE CHAPTER.
+
+***mom-pdf.mom***
+
+Le manuel "Producing PDFs with mom and groff".
+
+***mom.vim***
+
+Les règles de coloration syntaxique vim sont baséés sur celles
+fournies par Christian V. J. Brüssow (cvjb@cvjb.de). Copiez le fichier
+mom.vim dans votre répertoire ~/.vim/syntax directory; ensuite,
+autorisez la coloration syntaxique si ce n'est pas encore le cas:
+
+ :syntax enable
+ou
+ :syntax on
+
+***elvis_syntax.new***
+
+Ceux qui utilisent elvis, le clone de vi, peuvent directement
+copier-coller le contenu de ce fichier dans leur elvis.syn. Tous les
+fichiers ayant l'extension .mom auront la coloration syntaxique. Les
+règles dans elvis_syntax ne sont pas exhaustive, mais aideront
+beaucoup à rendre les fichiers mom plus lisibles.
diff --git a/contrib/mom/examples/README.txt b/contrib/mom/examples/README.txt
new file mode 100644
index 0000000..851a9a2
--- /dev/null
+++ b/contrib/mom/examples/README.txt
@@ -0,0 +1,119 @@
+-*- mode: text; coding: utf-8; -*-
+Copyright (C) 2004-2020 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 PDF (.pdf) files, as they do with pre-compiled
+versions of groff, or groff built from source.
+
+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).
+
+ pdfmom mom-pdf.mom > mom-pdf.pdf
+ pdfmom sample_docs.mom > sample_docs.pdf
+ pdfmom slide-demo.mom > slide-demo.pdf
+ pdfmom -k letter.mom > letter.pdf
+ pdfmom -k mon_premier_doc.mom > mon_premier_doc.pdf
+ pdfmom -k typesetting.mom > typesetting.pdf
+
+The files themselves
+--------------------
+
+All are set up for US letter papersize except mom-pdf.mom and
+mon_premier_doc.mom, which uses A4.
+
+***typesetting.mom**
+
+The file, typesetting.mom, demonstrates the use of typesetting tabs,
+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 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. 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.
+
+If you'd like to see how mom handles exactly the same file when the
+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.
+
+***slide-demo.mom***
+
+The file, slide-demo.mom, demonstrates a slide presentation with
+PAUSE and TRANSITION effects. The .pdf created by pdfmom should be
+opened in Presentation Mode in a PDF reader (e.g. Okular, Evince,
+Acroread). Note that not all transition effects are available in
+all PDF readers.
+
+***mon_premier_doc.mom***
+
+The file, mon_premier_doc.mom, is a simple example in French showing
+the use of common elements: section headings, paragraphs, lists, table
+of contents and clickable links. It should be generated with option -k
+as there are some accented letters.
+
+A few settings were also changed for this French document:
+ATTRIBUTE_STRING is used to replace "by" by "par" in the document
+header (where the title and the author are displayed).
+TOC_HEADER_STRING is used to modity the Table of Content title to
+"Table des matires". And finally, INDENT_FIRST_PARAS is used to
+indent the first paragraph of a section -- this is the usual
+convention in French typesetting.
+
+***copyright-default.mom/copyright-chapter.mom***
+
+These two files demonstrate the correct way to insert a copyright
+page into mom documents. "Default" is for DOCTYPE DEFAULT;
+"chapter" is for DOCTYPE CHAPTER.
+
+***mom-pdf.mom***
+
+The manual, Producing PDFs with mom and groff.
+
+***mom.vim***
+
+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
+or
+ :syntax on
+
+***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.
diff --git a/contrib/mom/examples/copyright-chapter.mom b/contrib/mom/examples/copyright-chapter.mom
new file mode 100644
index 0000000..261c712
--- /dev/null
+++ b/contrib/mom/examples/copyright-chapter.mom
@@ -0,0 +1,160 @@
+.\" -*- mode: text; coding: utf-8; -*-
+\#
+\# Copyright (C) 2019-2020 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.
+\#
+.ig
+***Template for creating a copyright page, DOCTYPE CHAPTER***
+.
+Mom documents comprised of chapters using DOCTYPE CHAPTER require
+the START macro to begin each chapter, and the COLLATE macro to join
+it to the subsequent chapter.
+.
+A copyright page (also called an edition page), which is not a
+chapter, should be treated as a DOCTYPE DEFAULT. The text of
+the copyright page is entered after START and joined to the first
+chapter (DOCTYPE CHAPTER) with COLLATE.
+.
+Copyright pages are not identified by a title or heading, however
+they require a TITLE in order to be included in PDF viewer outlines
+and the Table of Contents. Supplying '.TITLE "Copyright"'
+but disabling the DOCHEADER achieves both these requirements.
+.
+Pagination should also be disabled for the copyright page. Both
+docheader and pagination should be re-enabled before the START of
+the first chapter.
+..
+.
+.\" Cover setup
+.
+.\" By default, mom uses the last TITLE macro before START for the
+.\" title that appears on the cover. Since the TITLE is "Copyright,"
+.\" mom needs to be told explicitly to use a different title.
+.
+.\" Cover and PDF viewer setup
+.
+.DOCTITLE "Book Title"
+.TITLE DOC_COVER \
+ "\*[$DOCTITLE]" \" Title for the cover page
+.AUTHOR \
+ "Book Author"
+.DOC_COVER \
+ TITLE AUTHOR
+.PDF_TITLE \
+ "DOCTYPE CHAPTER with copyright page" \" For PDF viewer titlebar
+.
+.\" Copyright page setup
+.
+.PRINTSTYLE TYPESET
+.DOCTYPE DEFAULT \" Copyright page is not a chapter.
+.
+.DOCHEADER off 1i \" Turn off docheader for copyright page.
+. \" Begin text 1 inch from page top.
+.PAGINATION off \" Disable pagination for copyright page.
+.
+.TITLE "Copyright" \" Required for the PDF viewer outline; does not
+. \" get printed because docheader is disabled.
+.NO_TOC_ENTRY \" So copyright page is not included in the TOC
+.
+.START \" Begin example copyright page
+All rights reserved. No part of this publication may be reproduced,
+distributed, or transmitted in any form or by any means, including
+photocopying, recording, or other electronic or mechanical methods,
+without the prior written permission of the publisher, except
+in the case of brief quotations embodied in critical reviews
+and certain other noncommercial uses permitted by copyright
+law. For permission requests, write to the publisher, addressed
+“Attention: Permissions Coordinator,” at the address below.
+.SP
+.LEFT
+Copyright \[co]2019 Copyright Holder
+.SP
+Additional information...
+.TOC_AFTER_HERE \" Place TOC after copyright page.
+.
+.COLLATE
+.
+.\" Chapter setup
+.
+.DOCTYPE CHAPTER \" Begin using DOCTYPE CHAPTER.
+.TITLE \
+ "\*[$DOCTITLE]" \" Needed for page headers.
+. \" Only required before first chapter.
+.CHAPTER 1
+.CHAPTER_TITLE \
+ "Sample Chapter"
+.DOCHEADER \" Re-enable docheader.
+.PAGINATE \" Re-enable pagination.
+.PAGENUMBER 1
+.
+.START \" Begin first chapter.
+.PP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at
+ante. Mauris eleifend, quam a vulputate dictum, massa quam dapibus
+leo, eget vulputate orci purus ut lorem. In fringilla mi in ligula.
+Pellentesque aliquam quam vel dolor. Nunc adipiscing. Sed quam odio,
+tempus ac, aliquam molestie, varius ac, tellus. Vestibulum ut nulla
+aliquam risus rutrum interdum. Pellentesque lorem. Curabitur sit
+amet erat quis risus feugiat viverra. Pellentesque augue justo,
+sagittis et, lacinia at, venenatis non, arcu. Nunc nec libero. In
+cursus dictum risus. Etiam tristique nisl a nulla. Ut a orci.
+Curabitur dolor nunc, egestas at, accumsan at, malesuada nec, magna.
+.PP
+Nulla facilisi. Nunc volutpat. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Ut sit
+amet orci vel mauris blandit vehicula. Nullam quis enim. Integer
+dignissim viverra velit. Curabitur in odio. In hac habitasse platea
+dictumst. Ut consequat, tellus eu volutpat varius, justo orci
+elementum dolor, sed imperdiet nulla tellus ut diam. Vestibulum
+ipsum ante, malesuada quis, tempus ac, placerat sit amet, elit.
+.PP
+Sed eget turpis a pede tempor malesuada. Vivamus quis mi at leo
+pulvinar hendrerit. Cum sociis natoque penatibus et magnis dis
+parturient montes, nascetur ridiculus mus. Pellentesque aliquet
+lacus vitae pede. Nullam mollis dolor ac nisi. Phasellus sit amet
+urna. Praesent pellentesque sapien sed lacus. Donec lacinia odio
+in odio. In sit amet elit. Maecenas gravida interdum urna. Integer
+pretium, arcu vitae imperdiet facilisis, elit tellus tempor nisi,
+vel feugiat ante velit sit amet mauris. Vivamus arcu. Integer
+pharetra magna ac lacus. Aliquam vitae sapien in nibh vehicula
+auctor. Suspendisse leo mauris, pulvinar sed, tempor et, consequat
+ac, lacus. Proin velit. Nulla semper lobortis mauris. Duis urna
+erat, ornare et, imperdiet eu, suscipit sit amet, massa. Nulla nulla
+nisi, pellentesque at, egestas quis, fringilla eu, diam.
+.PP
+Donec semper, sem nec tristique tempus, justo neque commodo nisl,
+ut gravida sem tellus suscipit nunc. Aliquam erat volutpat. Ut
+tincidunt pretium elit. Aliquam pulvinar. Nulla cursus. Suspendisse
+potenti. Etiam condimentum hendrerit felis. Duis iaculis aliquam
+enim. Donec dignissim augue vitae orci. Curabitur luctus felis a
+metus. Cum sociis natoque penatibus et magnis dis parturient montes,
+nascetur ridiculus mus. In varius neque at enim. Suspendisse massa
+nulla, viverra in, bibendum vitae, tempor quis, lorem.
+.PP
+Donec dapibus orci sit amet elit. Maecenas rutrum ultrices lectus.
+Aliquam suscipit, lacus a iaculis adipiscing, eros orci pellentesque
+nisl, non pharetra dolor urna nec dolor. Integer cursus dolor vel
+magna. Integer ultrices feugiat sem. Proin nec nibh. Duis eu dui
+quis nunc sagittis lobortis. Fusce pharetra, enim ut sodales luctus,
+lectus arcu rhoncus purus, in fringilla augue elit vel lacus. In
+hac habitasse platea dictumst. Aliquam erat volutpat. Fusce iaculis
+elit id tellus. Ut accumsan malesuada turpis. Suspendisse potenti.
+Vestibulum lacus augue, lobortis mattis, laoreet in, varius at,
+nisi. Nunc gravida. Phasellus faucibus. In hac habitasse platea
+dictumst. Integer tempor lacus eget lectus. Praesent fringilla augue
+fringilla.
+.PP
+Pellentesque aliquam quam vel dolor. Nunc adipiscing. Sed quam odio,
+tempus ac, aliquam molestie, varius ac, tellus. Vestibulum ut nulla
+aliquam risus rutrum interdum. Pellentesque lorem. Curabitur sit
+amet erat quis risus feugiat viverra. Pellentesque augue justo,
+sagittis et, lacinia at, venenatis non, arcu. Nunc nec libero. In
+cursus dictum risus. Etiam tristique nisl a nulla. Ut a orci.
+.TOC
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/contrib/mom/examples/copyright-default.mom b/contrib/mom/examples/copyright-default.mom
new file mode 100644
index 0000000..25a428f
--- /dev/null
+++ b/contrib/mom/examples/copyright-default.mom
@@ -0,0 +1,149 @@
+.\" -*- mode: text; coding: utf-8; -*-
+\#
+\# Copyright (C) 2019-2020 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.
+\#
+.ig
+***Template for created a copyright page, DOCTYPE DEFAULT***
+
+Mom documents comprised of titled sections using DOCTYPE DEFAULT
+(e.g. a collection of articles or a book of short stories by
+different authors) require the START macro to begin each new
+section, and the COLLATE macro to join it to the subsequent section.
+.
+A copyright page (also called an edition page) should be treated
+as a titled section. The text of the copyright page is entered
+after START and joined to the next major section (i.e. the beginning
+of a document's content) with COLLATE.
+.
+Copyright pages are not identified by a title or heading, however
+they require a TITLE in order to be included in PDF viewer outlines
+and, if desired, the Table of Contents. Supplying '.TITLE "Copyright"'
+but disabling the DOCHEADER achieves both these requirements.
+.
+Pagination should also be disabled for the copyright page. Both
+docheader and pagination should be re-enabled before the START of
+the first (titled) section of the document.
+..
+.
+.\" Cover and PDF viewer setup
+.
+.\" By default, mom uses the last TITLE macro before START for the
+.\" title that appears on the cover. Since the TITLE is "Copyright,"
+.\" mom needs to be told explicitly to use a different title.
+.
+.TITLE DOC_COVER \
+ "Document Title"
+.EDITOR DOC_COVER \
+ "Document Editor"
+.ATTRIBUTE_STRING DOC_COVER \
+ "Edited by"
+.DOC_COVER \
+ TITLE EDITOR
+.PDF_TITLE \
+ "DOCTYPE DEFAULT with copyright page" \" For PDF viewer titlebar
+.
+.\" Copyright page setup
+.
+.PRINTSTYLE TYPESET
+.DOCHEADER off 1i \" Turn off docheader for copyright page.
+. \" Begin text 1 inch from page top.
+.PAGINATION off \" Disable pagination for copyright page.
+.
+.TITLE "Copyright" \" Required for PDF viewer outline; does not
+. \" get printed because docheader is disabled.
+.
+.NO_TOC_ENTRY \" So copyright page is not included in the TOC
+.
+.START \" Begin copyright page
+All rights reserved. No part of this publication may be reproduced,
+distributed, or transmitted in any form or by any means, including
+photocopying, recording, or other electronic or mechanical methods,
+without the prior written permission of the publisher, except
+in the case of brief quotations embodied in critical reviews
+and certain other noncommercial uses permitted by copyright
+law. For permission requests, write to the publisher, addressed
+“Attention: Permissions Coordinator,” at the address below.
+.SP
+.LEFT
+Copyright \[co]2019 Copyright Holder
+.SP
+Additional information...
+.TOC_AFTER_HERE \" Place TOC after copyright page.
+.
+.COLLATE
+.
+.\" Sample article setup
+.
+.TITLE \
+ "Sample article" \" Title of first article
+.AUTHOR \
+ "Article Author"
+.DOCHEADER \" Re-enable docheader.
+.PAGINATE \" Re-enable pagination.
+.PAGENUMBER 1
+.
+.START
+.PP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at
+ante. Mauris eleifend, quam a vulputate dictum, massa quam dapibus
+leo, eget vulputate orci purus ut lorem. In fringilla mi in ligula.
+Pellentesque aliquam quam vel dolor. Nunc adipiscing. Sed quam odio,
+tempus ac, aliquam molestie, varius ac, tellus. Vestibulum ut nulla
+aliquam risus rutrum interdum. Pellentesque lorem. Curabitur sit
+amet erat quis risus feugiat viverra. Pellentesque augue justo,
+sagittis et, lacinia at, venenatis non, arcu. Nunc nec libero. In
+cursus dictum risus. Etiam tristique nisl a nulla. Ut a orci.
+Curabitur dolor nunc, egestas at, accumsan at, malesuada nec, magna.
+.PP
+Nulla facilisi. Nunc volutpat. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Ut sit
+amet orci vel mauris blandit vehicula. Nullam quis enim. Integer
+dignissim viverra velit. Curabitur in odio. In hac habitasse platea
+dictumst. Ut consequat, tellus eu volutpat varius, justo orci
+elementum dolor, sed imperdiet nulla tellus ut diam. Vestibulum
+ipsum ante, malesuada quis, tempus ac, placerat sit amet, elit.
+.PP
+Sed eget turpis a pede tempor malesuada. Vivamus quis mi at leo
+pulvinar hendrerit. Cum sociis natoque penatibus et magnis dis
+parturient montes, nascetur ridiculus mus. Pellentesque aliquet
+lacus vitae pede. Nullam mollis dolor ac nisi. Phasellus sit amet
+urna. Praesent pellentesque sapien sed lacus. Donec lacinia odio
+in odio. In sit amet elit. Maecenas gravida interdum urna. Integer
+pretium, arcu vitae imperdiet facilisis, elit tellus tempor nisi,
+vel feugiat ante velit sit amet mauris. Vivamus arcu. Integer
+pharetra magna ac lacus. Aliquam vitae sapien in nibh vehicula
+auctor. Suspendisse leo mauris, pulvinar sed, tempor et, consequat
+ac, lacus. Proin velit. Nulla semper lobortis mauris. Duis urna
+erat, ornare et, imperdiet eu, suscipit sit amet, massa. Nulla nulla
+nisi, pellentesque at, egestas quis, fringilla eu, diam.
+.PP
+Donec semper, sem nec tristique tempus, justo neque commodo nisl,
+ut gravida sem tellus suscipit nunc. Aliquam erat volutpat. Ut
+tincidunt pretium elit. Aliquam pulvinar. Nulla cursus. Suspendisse
+potenti. Etiam condimentum hendrerit felis. Duis iaculis aliquam
+enim. Donec dignissim augue vitae orci. Curabitur luctus felis a
+metus. Cum sociis natoque penatibus et magnis dis parturient montes,
+nascetur ridiculus mus. In varius neque at enim. Suspendisse massa
+nulla, viverra in, bibendum vitae, tempor quis, lorem.
+.PP
+Donec dapibus orci sit amet elit. Maecenas rutrum ultrices lectus.
+Aliquam suscipit, lacus a iaculis adipiscing, eros orci pellentesque
+nisl, non pharetra dolor urna nec dolor. Integer cursus dolor vel
+magna. Integer ultrices feugiat sem. Proin nec nibh. Duis eu dui
+quis nunc sagittis lobortis. Fusce pharetra, enim ut sodales luctus,
+lectus arcu rhoncus purus, in fringilla augue elit vel lacus. In
+hac habitasse platea dictumst. Aliquam erat volutpat. Fusce iaculis
+elit id tellus. Ut accumsan malesuada turpis. Suspendisse potenti.
+Vestibulum lacus augue, lobortis mattis, laoreet in, varius at,
+nisi. Nunc gravida. Phasellus faucibus. In hac habitasse platea
+dictumst. Integer tempor lacus eget lectus. Praesent fringilla augue
+fringilla dui.
+.TOC
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/contrib/mom/examples/elvis_syntax b/contrib/mom/examples/elvis_syntax
new file mode 100644
index 0000000..b5735bf
--- /dev/null
+++ b/contrib/mom/examples/elvis_syntax
@@ -0,0 +1,96 @@
+" Copyright (C) 2004-2020 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.
+
+#Mom
+language mom
+extension .mom .tmac
+
+startword .
+color startword normal
+
+inword _.'
+color inword normal
+
+other initialpunct
+mostly normal
+
+backslash none
+
+color args like fixed
+color braces like char
+color brackets like underlined
+color chars like emphasized
+color decimals like number
+color ellipsis normal
+color escapes like keyword
+color math like cursor
+color misc like string
+color operators like string
+color parens like comment
+color reg_string like math
+color tmac_escapes like keyword
+color single_slash like char
+
+font args DA DE EN ES FR IT NL NO PT SV
+font args DEFAULT CHAPTER NAMED LETTER
+font args TYPESET TYPEWRITE
+font args FINAL DRAFT
+font args BLOCK QUAD
+font args LEFT RIGHT CENTER CENTRE JUSTIFY TOP BOTTOM L R C J
+font args OFF QUIT END EXIT DONE NO ALL
+font args PAGE NUMBER STAR
+font args LETTER LEGAL EXECUTIVE LEDGER TABLOID QUARTO FOLIO
+font args 10x14 A3 A4 A5 B4 B5
+font args SINGLESPACE
+font args FACTOR
+font args DASH BULLET ALPHA DIGIT USER
+font args RGB CYM CMYK GRAY GREY
+font args COND CONDX EXT EXTX SUP SUPX CONDSUP CONDSUPX EXTSUP EXTSUPX
+font args BOLDER BOLDERX SLANT SLANTX
+font args UP DOWN BCK FWD BU BP FU FP
+font args ROM IT BD BDI PREV
+font args ST
+font args SUSPEND RESUME
+
+prefix { \{ \{\
+font braces { \{ \{\
+prefix [ ]
+font brackets [ ]
+prefix \(bu \(co \(ct \(de \(dg \(di \(em \(en \(mu \(pl \(rg \(sc \(sq \(lq \(rq
+font chars \(bu \(co \(ct \(de \(dg \(di \(em \(en \(mu \(pl \(rg \(sc \(sq \(lq \(rq
+prefix \(14 \(12 \(34 \(+-
+font chars \(14 \(12 \(34 \(+-
+prefix \fR \fB \fI \fP \f0 \f1 \f2 \f3
+font chars \fR \fB \fI \fP \f0 \f1 \f2 \f3
+prefix .0 .1 .2 .3 .4 .5 .6 .7 .8 .9
+font decimals . .0 .1 .2 .3 .4 .5 .6 .7 .8 .9
+prefix \/ \/. \/? \/! \/, \/; \/:
+font escapes \/ \/. \/? \/! \/, \/; \/:
+prefix \, \,. \,? \,! \,, \,; \,:
+font escapes \, \,. \,? \,! \,, \,; \,:
+prefix \~ \0 \: \| \^ \& \% \!
+font escapes \~ \0 \: \| \^ \& \% \!
+prefix \b \c \C \d \D \e \f \f( \h \l \L \p \r \s \s+ \s- \S \u \v \w
+font escapes \b \c \C \d \D \e \f \f( \h \l \L \p \r \s \s+ \s- \S \u \v \w
+prefix ...
+font ellipsis ...
+prefix + - * / = == < > <= >= <? >? %
+font math + - * / = == < > <= >= <? >? %
+prefix |
+font misc |
+prefix ! : &
+font operators ! : &
+prefix ( )
+font parens ( )
+prefix # * $
+font reg_string # * $
+prefix \n \* \[
+font single_slash \n \* \[
+prefix \\n \\* \\$
+font tmac_escapes \\n \\* \\$
+
+comment \#
+comment \"
diff --git a/contrib/mom/examples/elvis_syntax.new b/contrib/mom/examples/elvis_syntax.new
new file mode 100644
index 0000000..5dadecc
--- /dev/null
+++ b/contrib/mom/examples/elvis_syntax.new
@@ -0,0 +1,116 @@
+" Copyright (C) 2004-2020 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.
+
+" Steve Kirkendall has thoughtfully reworked elvis's syntax
+" highlighting so that it now supports nroff constructs like \fBword
+" and \(emword, with \fB and \(em being highlighted while "word" is
+" not.
+"
+" There are some other enhancements as well, making it possible
+" to have any word beginning with punctuation (i.e. groff
+" requests) highlighted. I've decided to take advantage of these
+" improvements, which apply to elvis-2.2h onwards, and write a new
+" simplified set of syntax highlighting rules for mom. Just plug
+" this file at the end of /etc/elvis/elvis.syn to use them.
+"
+" If you're using an older version of elvis, stick with the
+" highlighting rules in the files elvis_syntax.
+
+#Mom
+language mom
+extension .mom .tmac
+
+startword .
+color startword normal
+
+inword _.'
+color inword normal
+
+other initialpunct
+mostly normal
+
+backslash none
+
+color args like fixed
+color braces like char
+color brackets like underlined
+color chars like emphasized
+color decimals normal
+color ellipsis normal
+color escapes like keyword
+color math like cursor
+color misc like string
+color operators like string
+color parens like comment
+color reg_string like math
+color tmac_escapes like keyword
+color single_slash like char
+
+font args DA DE EN ES FR IT NL NO PT SV
+font args DEFAULT CHAPTER NAMED LETTER
+font args TYPESET TYPEWRITE
+font args FINAL DRAFT
+font args BLOCK QUAD
+font args LEFT RIGHT CENTER CENTRE JUSTIFY TOP BOTTOM L R C J
+font args OFF QUIT END EXIT DONE NO ALL
+font args PAGE NUMBER STAR LINE
+font args LETTER LEGAL EXECUTIVE LEDGER TABLOID QUARTO FOLIO
+font args 10x14 A3 A4 A5 B4 B5
+font args SINGLESPACE
+font args FACTOR
+font args DASH BULLET ALPHA DIGIT USER ROMAN roman alpha
+font args SUSPEND RESUME
+font args RGB CYM CMYK GRAY GREY
+font args COND CONDX EXT EXTX SUP SUPX CONDSUP CONDSUPX EXTSUP EXTSUPX
+font args BOLDER BOLDERX SLANT SLANTX
+font args UP DOWN BCK FWD BU BP FU FP FN_MARK EN_MARK
+font args ROM IT BD BDI PREV
+font args ST
+font args COVER DOC_COVER
+font args COVERTITLE DOCTITLE TITLE CHAPTER CHAPTER_TITLE CHAPTER+TITLE SUBTITLE
+font args AUTHOR DOCTYPE COPYRIGHT MISC
+font args NULL BLANKPAGE NOBREAK
+
+prefix { \{ \} \{\ }
+font braces { \{ \} \{\ }
+prefix [ ]
+font brackets [ ]
+prefix \(bu \(co \(ct \(de \(dg \(di \(em \(en \(mu \(pl \(rg \(sc \(sq \(lq \(rq
+font chars \(bu \(co \(ct \(de \(dg \(di \(em \(en \(mu \(pl \(rg \(sc \(sq \(lq \(rq
+prefix \(14 \(12 \(34 \(+-
+font chars \(14 \(12 \(34 \(+-
+prefix \fR \fB \fI \fP \f0 \f1 \f2 \f3
+font chars \fR \fB \fI \fP \f0 \f1 \f2 \f3
+prefix .0 .1 .2 .3 .4 .5 .6 .7 .8 .9
+font decimals . .0 .1 .2 .3 .4 .5 .6 .7 .8 .9
+prefix \/ \/. \/? \/! \/, \/; \/:
+font escapes \/ \/. \/? \/! \/, \/; \/:
+prefix \, \,. \,? \,! \,, \,; \,:
+font escapes \, \,. \,? \,! \,, \,; \,:
+prefix \~ \0 \: \| \^ \& \% \!
+font escapes \~ \0 \: \| \^ \& \% \!
+prefix \b \c \C \d \D \e \f \f( \h \l \L \p \r \s \s+ \s- \S \u \v \w
+font escapes \b \c \C \d \D \e \f \f( \h \l \L \p \r \s \s+ \s- \S \u \v \w
+prefix ...
+font ellipsis ...
+prefix + - * / = == < > <= >= <? >? %
+font math + - * / = == < > <= >= <? >? %
+prefix |
+font misc |
+prefix ! : &
+font operators ! : &
+prefix ( )
+font parens ( )
+prefix # * $
+font reg_string # * $
+prefix \n \*
+font single_slash \n \*
+prefix \\n \\* \\$
+font tmac_escapes \\n \\* \\$
+
+character \]'
+comment \#
+comment \"
diff --git a/contrib/mom/examples/letter.mom b/contrib/mom/examples/letter.mom
new file mode 100644
index 0000000..6e1a0c0
--- /dev/null
+++ b/contrib/mom/examples/letter.mom
@@ -0,0 +1,46 @@
+.\" -*- mode: text; coding: utf-8; -*-
+\#
+\# Copyright (C) 2004-2020 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.
+\#
+.AUTHOR "Yannick P. Guique"
+.DOCTYPE LETTER
+.PRINTSTYLE TYPESET
+.START
+.DATE
+August 25, 2013
+.TO
+GUILLAUME BARRIÈRES
+Minidoux Corporation
+5000 Pannes Drive
+Redmond, Virginia
+USA
+.FROM
+Y.P. GUIQUE
+022 Umask Road
+St-Sauveur-en-dehors-de-la-mappe, Québec
+CANADA
+.GREETING
+Dear Mr. Barrières,
+.PP
+It has come to my attention that you have been lobbying the
+US government to prohibit the use of open source software by
+endeavouring to outlaw so-called "warranty free" applications.
+.PP
+I feel it is my duty to inform you that the success of your
+operating system with its embedded web browser relies heavily
+on open source programs and protocols, most notably TCP/IP.
+.PP
+Therefore, in the interests of your corporation's fiscal health,
+I strongly advise that you withdraw support for any US
+legislation that would cripple or render illegal open source
+development.
+.CLOSING
+Sincerely,
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/contrib/mom/examples/mom-pdf.mom b/contrib/mom/examples/mom-pdf.mom
new file mode 100644
index 0000000..15cf6df
--- /dev/null
+++ b/contrib/mom/examples/mom-pdf.mom
@@ -0,0 +1,620 @@
+.\" -*- mode: text; coding: utf-8; -*-
+.\"
+.\" Copyright (C) 2012-2020 Free Software Foundation, Inc.
+.\"
+.\" This file is part of mom, which is part of groff, a free software
+.\" project.
+.\"
+.\" You can redistribute it and/or modify it under the terms of the
+.\" GNU General Public License as published by the "Free Software
+ \" Foundation", version\~2.
+.\"
+.\" The license text is available on the internet at
+.\" <http://www.gnu.org/licenses/gpl-2.0.html>
+.\"
+.PAPER A4
+.\" Reference macros (metadata)
+.TITLE "Producing PDFs" "with groff and mom"
+.PDF_TITLE "\*[$TITLE]
+.COPYRIGHT "20\*[BU3]1\*[BU2]5, 20\*[BU3]1\*[BU2]7 Free Software Foundation
+.AUTHOR "Deri James" "\*[UP .5p]and" "Peter Schaffter"
+.\" Cover author style
+.COVER_AUTHOR_STYLE \
+ LEAD 15 \
+ SPACE -.5v
+.\" Docheader author style
+.AUTHOR_STYLE \
+ LEAD 14 \
+ SPACE -.75
+.ATTRIBUTE_STRING "" \" Don't print 'by'
+.\"
+.PDF_BOOKMARKS_OPEN 2
+.\" Formatting style, margins
+.PRINTSTYLE TYPESET
+.L_MARGIN 2.5c
+.R_MARGIN 2.5c
+.B_MARGIN 2.5c
+.\" General defaults
+.FAM H
+.FT R
+.PT_SIZE 10.5
+.AUTOLEAD 3
+.PARA_INDENT 0 \" No indent because we're spacing paragraphs.
+.COVERTEXT
+.SP .5v
+.QUAD CENTER
+.HY off
+.IB 8P
+.\" Copyright notice
+This file is part of groff.
+.SP .5v
+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 .5v
+You should have received a copy of the GNU
+General Public License along with this program.
+If not, see:
+.SP .25v
+.PDF_LINK_COLOR 0.0 0.3 0.9
+.PDF_WWW_LINK http://www.gnu.org/licenses/
+.IQ CLEAR
+.HY
+.COVERTEXT end
+.\" Cover and page header
+.COVER TITLE AUTHOR COPYRIGHT COVERTEXT
+.HEADER_LEFT "James, Schaffter"
+.\"
+.COVER_LEAD +3.5
+.DOCHEADER_LEAD +3.5
+.\" Color for code snippets
+.NEWCOLOUR dark-grey RGB #343434
+.\" Make QUOTE look like CODE
+.QUOTE_STYLE \
+ FAMILY C \
+ FONT B \
+ SIZE +1.5 \
+ COLOR dark-grey \
+ INDENT 9p
+.\"
+.CODE_STYLE \
+ FONT B \
+ SIZE 115 \
+ COLOR dark-grey
+.CONDENSE 87 \" Condense percentage used in COD
+.\"
+.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
+.PARA_SPACE .3v
+.\" Wrapper around QUOTE
+.de COD
+. QUOTE
+. nop \*[COND]\\$*\*[CONDX]
+. QUOTE OFF
+..
+.\" Table of contents
+.TOC_PADDING 2
+.SPACE_TOC_ITEMS
+.AUTO_RELOCATE_TOC
+.TOC_ENTRY_STYLE 2 FONT I
+.TOC_LEAD 14.5 ADJUST
+.TOC_PADDING 1
+.\"
+.DOCHEADER_ADVANCE 5c \" Begin docheader this distance down from top of page
+.\"
+.NO_SHIM \" Use flex spacing
+.START
+.\"
+.SP .5c
+.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.
+.PP
+.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 https://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.
+.PP
+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.
+.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.
+.PP
+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 prepended.
+.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.
+.SP 2.5p
+.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.)
+.PP
+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 ). +
+.PP
+\*[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.
+.PP
+\*[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
+.PP
+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.
+.PP
+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.
+.PP
+The format of the macro to create external links is similar to the
+one for creating internal 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, as does \*[cod]<hotlink text>\*[codx],
+which furthermore accepts the same expandos, \*[cod]\[dq]+\[dq]\*[codx] and
+\*[cod]\[dq]*\[dq]\*[codx].
+.PP
+.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 https://www.schaffter.ca/mom/momdoc/toc.html
+would open mom's online documentation at
+.PDF_WWW_LINK https://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 https://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 https://www.schaffter.ca/mom/momdoc/color.html#xcolor "XCOLOR"
+or
+.PDF_WWW_LINK https://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.
+.PP
+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
+.SP .5v
+.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.
+.PP
+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.
+.PP
+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].
+.PP
+.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.
+.PP
+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.
+.PP
+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
+.SP -1
+.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
+\#.SP .5v
+.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 \
+https://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
+.PP
+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.
+.PP
+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.
+.PP
+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 +.7]
+.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.
+In rare instances where it is desirable to place the TOC somewhere
+else in the document, there are two low-level commands,
+\*[cod].TOC_BEFORE_HERE\*[codx]
+\ \*[SIZE -.5]and\*[SIZE]\ \"
+\*[cod].TOC_AFTER_HERE\*[codx]
+which place the TOC either before or after the current page.
+.PP
+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.
+.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.
+.PP
+.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]).
+.PP
+.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.
+.PP
+.RW .04
+If Encapsulated PostScript or plain PostScript images have been
+embedded in a document with
+.PDF_WWW_LINK https://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.
+.RW 0
+.HEADING 2 NAMED papersize "Setting papersize within a source file"
+.PP
+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 https://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.
+.HEADING 2 NAMED pdf-diff \
+"Differences between pdfmom and pdfroff"
+.PP
+Several features described in this manual are not available when
+the \[-Tps] option is given to \[pdfmom], nor 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
+.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 \
+ https://www.schaffter.ca/mom/momdoc/docprocessing.html#printstyle \
+ "PRINTSTYLE TYPEWRITE"
+underlining (e.g., of italics)
+.ITEM
+generally produces larger files; these can be reduced by piping
+the output through \[ps2pdf]\*[B]
+.sp -1.25v
+.BOX OUTLINED black SHADED grey90 WEIGHT 1p INSET 6p
+.JUSTIFY
+\*[BD]Note:\*[PREV] Owing to a known bug, PDF files piped through
+\[ps2pdf] lose some of their metadata, notably the window title set
+with \*[cod]PDF_TITLE\*[codx].
+.BOX STOP
+.SP -.25v
+.LIST OFF
+.TOC
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/contrib/mom/examples/mom.vim b/contrib/mom/examples/mom.vim
new file mode 100644
index 0000000..fe8debf
--- /dev/null
+++ b/contrib/mom/examples/mom.vim
@@ -0,0 +1,140 @@
+" Copyright (C) 2012-2020 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.
+
+" Vim syntax file
+" Language: mom
+" 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
+" Note: Remove or overwrite troff syntax for *.mom-files with filetype/filedetect.
+" Version: 0.1
+"
+" Mom: Macro set for easy typesetting with troff/nroff/groff.
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" Mom is case sensitive
+syn case match
+
+" Synchronization, I know it is a huge number, but normal texts can be
+" _very_ long ;-)
+syn sync lines=1000
+
+" Characters allowed in keywords
+if version >= 600
+ setlocal iskeyword=@,#,$,%,48-57,.,@-@,_,\\,{,},192-255
+else
+ set iskeyword=@,#,$,%,48-57,.,@-@,_,\\,{,},192-255
+endif
+
+" 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
+
+" mom comment region
+syn region momCommentRegion matchgroup=startRequest start='\<\.\(COMMENT\)\|\(SILENT\)\>' end='\<\.\(COMMENT\s\+OFF\)\|\(SILENT\s\+OFF\)\>' skip='$'
+
+" groff requests
+syn match groffRequest /^\s*\(\.\|'\)\s*\zs[a-z0-9]\+/
+
+" groff comment region
+syn region groffCommentLine start='\(\\!\)\|\(\\"\)\|\(\\#\)' end='$' contains=momTodo
+syn region groffCommentRegion start="^\s*\.\s*ig" matchgroup=startRequest end="^\.\.$" contains=startRequest
+
+" 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 groffSpecialChar '\\\((\|\[\)[-+A-Za-z0-9*<>=~!\/]\+\]*'
+
+" Greek symbols
+syn match groffGreek '\\(\*[A-Za-z]\+'
+
+" Hyphenation marks
+syn match groffHyphenation '\\%'
+
+" Masking of line breaks
+syn match groffNoLineBreak /\\\s*$/ contains=groffBraces
+
+" groff number and string register delimiters
+syn region groffDelimiter start=/\\*\\\(n+*\|\*\)\((\|\[\)\</ end=/\(\s\|\]\|$\)/ contains=momRegister,groffRegister,groffOperators
+
+" groff registers
+syn match groffRegister /\\\((\|\[\)\zs\.*[a-z]\+/
+
+" groff operators
+syn match groffOperators /\(+\|-\|\/\|\*[^[]\)/ contained
+
+" Units (of measure)
+syn match groffUnit '[-+]\=\([0-9]\|]\)\+\zs[icPpvusfz]\=' contained
+
+" Braces
+syn match groffBraces /\(\\{\|\\}\)/ contained
+
+" Error
+syn match groffError '\\\[ \+[[:print:]]\+ \+[[:print:]]\+\]'
+
+" 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")
+ if version < 508
+ let did_mom_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+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
+
+let b:current_syntax = "mom"
+
+" vim:ts=8:sw=4:nocindent:smartindent:
diff --git a/contrib/mom/examples/mon_premier_doc.mom b/contrib/mom/examples/mon_premier_doc.mom
new file mode 100644
index 0000000..3497c06
--- /dev/null
+++ b/contrib/mom/examples/mon_premier_doc.mom
@@ -0,0 +1,140 @@
+.\" -*- mode: text; coding: utf-8; -*-
+\#
+\# Copyright (C) 2015-2020 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.
+\#
+\# A very simple document with basic elements: headings, paragraphs,
+\# lists, table of contents and clickable links.
+\#
+.TITLE "Mon Premier Document"
+.AUTHOR "Cicéron"
+.
+.DOCTYPE DEFAULT
+.PRINTSTYLE TYPESET
+.
+.PAPER A4
+.DOC_COVERTITLE "Mon Premier Document"
+.DOC_COVER DOC_COVERTITLE AUTHOR
+.COVER TITLE
+.ATTRIBUTE_STRING "par"
+.TOC_HEADER_STRING "Table des matières"
+.AUTO_RELOCATE_TOC
+.HEADING_STYLE 1 NUMBER
+.HEADING_STYLE 2 NUMBER
+.NO_SHIM
+.START
+\#
+.HEADING 1 "Les différentes versions"
+.PP
+Voir également le chapitre sur
+.PDF_LINK evolution "les évolutions"
+possibles.
+.HEADING 2 "La version originale"
+.PP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non
+risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
+ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula
+massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci
+nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl
+sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae,
+consequat in, pretium a, enim. Pellentesque congue. Ut in risus
+volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
+Praesent egestas leo in pede. Praesent blandit odio eu enim.
+Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum
+primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
+Maecenas adipiscing ante non diam sodales hendrerit.
+.PP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non
+risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
+ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula
+massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci
+nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl
+sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae,
+consequat in, pretium a, enim. Pellentesque congue. Ut in risus
+volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
+Praesent egestas leo in pede. Praesent blandit odio eu enim.
+Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum
+primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
+Maecenas adipiscing ante non diam sodales hendrerit.
+.PP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non
+risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
+ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula
+massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci
+nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl
+sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae,
+consequat in, pretium a, enim. Pellentesque congue. Ut in risus
+volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
+Praesent egestas leo in pede. Praesent blandit odio eu enim.
+Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum
+primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
+\#
+.HEADING 2 "La version moderne"
+.PP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non
+risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
+ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula
+massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci
+nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl
+sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae,
+consequat in, pretium a, enim. Pellentesque congue. Ut in risus
+volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
+Praesent egestas leo in pede. Praesent blandit odio eu enim.
+Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum
+primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
+Maecenas adipiscing ante non diam sodales hendrerit.
+.PP
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non
+risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
+ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula
+massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci
+nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl
+sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae,
+consequat in, pretium a, enim. Pellentesque congue. Ut in risus
+volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
+Praesent egestas leo in pede. Praesent blandit odio eu enim.
+Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum
+primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
+Maecenas adipiscing ante non diam sodales hendrerit.
+\#
+.HEADING 1 NAMED evolution "Les évolutions du Lorem"
+.PP
+Trois axes de progressions sont envisageables:
+.LIST
+.SHIFT_LIST 3m
+.ITEM
+Lorem ipsum dolor sit amet.
+.ITEM
+Consectetur adipiscing elit.
+.ITEM
+.PDF_TARGET sed_non_risus
+Sed non risus.
+.LIST OFF
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non
+risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec,
+ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula
+massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci
+nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl
+sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae,
+consequat in, pretium a, enim. Pellentesque congue. Ut in risus
+volutpat libero pharetra tempor. Cras vestibulum bibendum augue.
+Praesent egestas leo in pede. Praesent blandit odio eu enim.
+Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum
+primis in faucibus orci luctus et ultrices posuere cubilia Curae;
+Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum.
+Maecenas adipiscing ante non diam sodales hendrerit.
+\#
+.TOC_RV_SWITCH
+.TOC
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
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/penguin.ps b/contrib/mom/examples/penguin.ps
new file mode 100644
index 0000000..2728930
--- /dev/null
+++ b/contrib/mom/examples/penguin.ps
@@ -0,0 +1,461 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.06 by Peter Kirchgessner
+%%Title: /home/peter/Pics/penguin_small2_bw.ps
+%%CreationDate: Wed Apr 17 19:49:51 2002
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 0 0 81 96
+%%EndComments
+%%BeginPreview: 90 107 1 107
+% aaaaaaaaabff555555555540
+% 5b6db6db5edbf6b6b6b6b680
+% aaaaaaaab7ff7ad555555540
+% b55555557eddeeaadadadac0
+% 56db6db6dbffdf56ab555540
+% aaaaaaaaffb755dab556ab40
+% 5b555b55f77ed7d556b56d40
+% aab6d56dbfffaaeb6ad5aa80
+% 6d555aabf6edd5daad56ab40
+% aadaab56ffdfaff555aab540
+% 5555b56bddfdff76dab55680
+% b6aaaaaffbbbbbed5556dac0
+% 55b6d6d5bff7f77aab6aaa80
+% aaaaaaaff77f6ffd6d555540
+% 5b555b576defeedaaaadb680
+% aab6d56dfbfd3bfdb56aaac0
+% 55555aab8eda4fb556ab5540
+% b6daab5743f40b7eaad56d80
+% 5555b56f037007fadaad5540
+% aaaaaaab11e0c6ed55b5aa80
+% 5b6d6db731b1a3feaaaab6c0
+% aaab55566963a3badb555540
+% 6d556aaf35d2e37d556daa80
+% aadaadb57959f3f6aaaab6c0
+% 5555aaab3403c37d6dab5540
+% 6daab5571428c3eeaab56a80
+% aab6d6db908007fd5556ad80
+% ad5555574000176edb6ad540
+% 55aaadab920003fd55555a80
+% b56db55b2000136eaaadab40
+% 56aaaaab400047fdb6d55540
+% aad556d7040112df555ab680
+% 6d5b6ab5d00447bb55ab5540
+% aaaaad57402915cf6d556a80
+% adb555ab9a9243a7aab6ad80
+% 5556dab6902485ead5aad540
+% b5aaab57854901d7daad5a80
+% 56b5556d929201bfab55ab40
+% aaab6d57004400fb756ab540
+% 6d6d55af0a1000efeaad5680
+% aaaaaaba0080005ef6d5aac0
+% adb5b6d60220003fdaaab540
+% 5556aabc0000003bfd5b5680
+% b5aab57c0000003f76d56ac0
+% 56b556e80000001beeaaad40
+% aaab6bf80000001f7f5b5580
+% 6d6d55b00000001dfbaab540
+% aaaaaff00000001bdf6d5680
+% 55b5b5b00000000ffbd5aac0
+% b6aaafe40000000f6ff55a80
+% aad6df7000000246fedaab40
+% 555ab6d000000003aff5b540
+% b6aaafe000000013edbaaa80
+% 556b7d8000000001b7f6d6c0
+% aaad5bc000000001fbbd5a80
+% 6db57f0000000000d77aaac0
+% aaaab58000000000edf6d540
+% 5556f7000000000056fead80
+% b6dab600000000006edb5540
+% aaaaee00000000007ffeb680
+% 5555ee000000000076bb5540
+% b6dabc00000000003f7f6a80
+% 5555d800000000003b7756c0
+% aaabfc00000000003f7eda80
+% 6db6b0000000000036f7aac0
+% aaabd800000000003ffeab40
+% ad57b800000000003d6fda80
+% 55b7d8000000000037fdaac0
+% b55eb800000000003edfab40
+% 56afb000000000003bfbb540
+% aaddb000000000003edf5680
+% 6d5bd8000000000035fdaac0
+% aaafe800000000003b5bb540
+% 55ba5000000000006fef5680
+% b6a83800000000005f736ac0
+% aaa00c00000000003dfdad40
+% 55680e00000000003bd65580
+% b6a107000000000077bc5a80
+% 55a013c0000000023ff82b40
+% a80401a0000000005db45540
+% 429021f0000000043ff02d40
+% 900000f80000000096c4aa80
+% a00080be000000082a902d80
+% 004204770000000244401540
+% a200003e8000001411001540
+% 4004105fc000000044444b40
+% 8800001b8000000a00800540
+% 5040411f4000001012000280
+% 80040007c000001440044080
+% 5080040d0000003100100040
+% 800040200000007400400400
+% 51080002000000e804008040
+% 80008440000003f210000080
+% 50000005000007d400080940
+% 0111000080001ef020808280
+% a00008894000ffd480001540
+% 02000000fa57bb680108aa80
+% a0222002bfffffe900012b40
+% 0a4001115ffdedd20824d540
+% d0888004bb6fbfb4008b5a80
+% ad251202bffdfbe921255580
+% b554a05576ab576a045aaa80
+% aaaa950aaaad5aaaa955b6c0
+% 56d56a556d6aaad48556aa80
+% b55b5555aaab6b5ab55aad40
+% 55aaaaaab5b555554aaad580
+% ad556d5b56aaad6b556b5a80
+%%EndPreview
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+5 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+0.000000 0.000000 translate
+% Translate to begin of first scanline
+0.000000 95.872000 translate
+80.640000 -95.872000 scale
+% Variable to keep one line of raster data
+/scanline 90 1 mul string def
+% Image geometry
+90 107 8
+% Transformation matrix
+[ 90 0 0 107 0 0 ]
+{ currentfile scanline readhexstring pop }
+image
+72727272717171717171717172717171717171717171717172717171727271717171727273736f
+675852524e4653535a676b73737272727272727272727272727272727272727272727272727272
+727272727272727272727272
+7172717271717171717171717271717171717171717171717271717171717172727272726d5d4a
+4039393939373a3a3c3f4653637172727272727272727272727272727272727272727272727272
+727272727272727272727272
+7171717271717171717171717271717171717171717171717271717171717173747271644b3f3a
+3a393a3a3a393b3b3b38393b3d4d64707272727272727272727272727272727272727272727272
+727272727272727272727272
+727272727171717171717171727171717172717171717171727171717171727372705b3b3d3b3a
+3939393939393938393939383a3c3f546d71747272727272727272727272727272727272727272
+727272727272727272727272
+727271727171717171717171727171717171717171717171727171717171727173553e3d383a39
+393a383838383838393940564d3f38394668727272727272727272727272727272727272727272
+727272727272727272727272
+71717171717171717171717172717171717171717171717172717171717172715f3d38393b3b39
+3a393939393939393a3c5574807252403742627272727272727272727272727272727272727272
+727272727272727272727272
+727271727171717171717171727171717171717171717171727171717172726c403c373a3a3a3a
+3a3a3a3a3a3a3a3a393e5e82958c72543a38416a72737272727272727272727272727272727272
+727272727272727272727272
+727171727171717171717171727171717171717171717171727171717271735a3d383b3a3a3a3a
+3a3a3a3a3a3a3a3a383c5f87978e7c65493a3c5070737272727272727272727272727272727272
+727272727272727272727272
+7171717271717171717171717271717171717171717171717271717172736c4638373b3a3a3a3a
+3a3a3a3a3a3a3a3a3a436384897d6d644f3a3b3e60727472727272727272727272727272727272
+727272727272727272727272
+727171727171717171717171727171717171717171717171727171717273603a3839393a3a3a3a
+3a3a3a3a3a3a3a3b39425c6f68574745403b3c3848707472727272727272727272727272727272
+727272727272727272727272
+7271727271717171717171717271717171717171717171717271717172724d373938393a3a3a3a
+3a3a3a3a3a3a3a393a3d494e3e3e3c3b393c3a393b617272727272727272727272727272727272
+727272727272727272727272
+71717171717171717171717171717171717171717171717172717171727241393839393c3a3a3a
+3a3a3a3a3a3a3a393b3a3a3d3b3a3d393c3b393b3a4b7374717272727272727272727272727272
+727272727272727272727272
+7272727271717171717171717271717171717171717171717271717172703a3b3937393b393a3a
+3a3a3a3a3a3a3a3a3a3b3a3a393d3a3b3b3b393a393e6d74727272727272727272727272727272
+727272727272727272727272
+7272727271717171717171717271717171717171717171717271717171633c3a3a38383d413c3a
+3a3a3a3a3a3a3a3a3a3b3e4142393c3c3b3b3939393c6074707272727272727272727272727272
+727272727272727272727272
+7272727271717171717171717271717171717171717171717271717171623b373b3e40475d5a3f
+3b3b3a3a393b3b3b373839486b6d3d393b3b3a38393b5c73717272727272727272727272727272
+727272727272727272727272
+7272727271717171717171717271717171717271717171717271717172623b373c3a3d3f425d65
+3f393a3a3d393b3e5b75795a3e6562393b3b3b39393d4f71727272727272727272727272727272
+727272727272727272727272
+7272727271717171717171717272717171717271717171717271717172623c3838538a9e7e4960
+4e3c3a3a3c3a57879ea9b0b68e445b463b3b3b3a3b3d4a72727272727272727272727272727272
+727272727272727272727272
+7272727271717171727171717272717171727171717271717271717172613c374d96b6cabb8e48
+463b3a3a3a5291abb6c0c7d1be7f3f473b3b3a38393a4672727272727272727272727272727272
+727272727272727272727272
+7272727271717171717271717271717171717171717171717271717172603c3770acd1e3dfcc84
+3a3b3a3a3d85c0e7f4f7f7f2d9a4593a3b3b393839393f6b727272727272727272727272727272
+727272727272727272727272
+7272727271717171717171717271717171717171717171717271717172603c3c9aebdbc5eefdda
+45393a3a45b8f7fcda8386d1faec8b373b3b3a3938383e6b727272727272727272727272727272
+727272727272727272727272
+7272727271717171717171717271717171717171717172717271717172613946c8db4e7188eaf9
+60443c3e4dc7fbe953468a7fcdfdc7433b3b3a3839383c6a727272727272727272727272727272
+727272727272727272727272
+7272727271717171717171717271717171717171717171717271717172603a4bd59a387184a5fb
+755363655bc9fb9c3d3a5c907ffbe7543b3b3a3939383c6a717272727272727272727272727272
+727272727272727272727272
+7171717171717171717171717171717171717171717171717171717171673b4ad5833e4a7f75f8
+6f484b575cb3f67b363c445b68f4ed553a3a3a3939393b6a717272727272727272727272727272
+727272727272727272727272
+7272727272717171717171717271717171717171717272717271717171714245cc953c3d5667ce
+666e6f6c6282e97a3b3a3a3b5bf5ea58393a393a393c386a737272727272727272727272727272
+727272727272727272727272
+727272727171717171717171727171717171717171717171727171717171413eb7c4453b416fa6
+c3c9c6c2bcb1c19d3a3c3b3e8cfbdc4c3939393a39393969727272727272727272727272727272
+727272727272727272727272
+727272727171717171717171727171717171727171717171727171717171413a8df18e477da2af
+cdcecbbfa6b2cfc289534273ebf9ac3f3939393939383b62727272727272727272727272727272
+727272727272727272727272
+72727272717171717171717172717171717172717171717172717171717142385bdae697a9c1cd
+cfcecfd3d4d7dcd9d5c5a8c5e4dc633838393a39393a365b727272727272727272727272727272
+727272727272727272727272
+72727272717171717171717172717171717171717171717172717171717142363e99a4a8b9cacf
+cecfd2d8dcdfe2dfdedad6cdc3ac693f39393939393a375b727272727272727272727272727272
+727272727272727272727272
+7272727271717171717271717271717171717171727171717271717171714137538fa4b4c2cbcf
+cfd1d5dadee2e1dfdedededfdcdab5553a3a39393a3c3859727272727272727272727272727272
+727272727272727272727272
+7272727271717171717171717271717171717271717171717271717171714b43839facbdc8cfcf
+d0d3d7dae2e2dfdedededed1b1c5c05e3c3b393a3c393c4c717272727272727272727272727272
+727272727272727272727272
+727272727171717171717171727271717171717171717171727171717172524c94a0b2c1cbcfcf
+d1d5d9dee1dfdedededabea8aebbad4f3b3c3a393a3a3d426b7273727272727272727272727272
+727272727272727272727272
+72727272727171717271717172727171717171717172717172727171717254478ea5b9c3ced0d1
+d3d6dbe0dededddccfabaab7bbbaaa4b3c3b393a37393f3b597174727272727272727272727272
+727272727272727272727272
+727272727171717171727171727171717171717171717171727171717171503b5c84aec9d0d1d1
+d6d9dddcded9d1b0a0b1b8bbbab387403a3b6c7446333938477173727272727272727272727272
+727272727272727272727272
+7272727271717171717171717271727171717171717171717271717171714f3d457986a3c5d1d6
+d8d9d8d1bfa795a2b4b7bab7adac8642383863978e6f413c3c6973727272727272727272727272
+727272727272727272727272
+727272727171717171717171727171717171717171717271727172717272523b4390a58a8e9da8
+aba4a29d9ca5aeb3b2afabb7c4c2bb5d3b3645849b99663a3c4e72727272727272727272727272
+727272727272727272727272
+727272727171717171717171727171727171717171717271727171717273543c49adbfa29097b4
+c0b9b5b3b4b0afada5aabec7cfcac3763a3b3c5e999a8745393d65727272727272727272727272
+727272727272727272727272
+727272727271717171717171727271717172717171717171727172727171483856aac1bfa18e9e
+b1b4b2afa9a3a0a4b3c1c1c5d3ded4ac413a3b4079895a38353948707472727272727272727272
+727272727272727272727272
+7272727271727171717171717272727171717171717171717272737272633f3c4ea8c5c1c0a790
+919698959193a7bac2c1c9e1f4fbfbde6c3b3c3a39423c3b3a393e617473727272727272727272
+727272727272727272727272
+7272727271717171717171717271727171717171717172717272717270453b394dc1d9c8c2c2bc
+a79b9b9dabbac0c1c2cde3f8fdfdfdfabf453b3b3b3b3b3b3a393d4c7071727272727272727272
+727272727272727272727272
+727272727171717171717172727171717171717171717171727270715b3d3b398ff5e7cec3c3c1
+c3c1c2c2c3c2c2c8d4e4f5fdfdfdfdfdf9723f3b3b3b3b3b3b3a39435a74747272727272727272
+727272727272727272727272
+7272727271717171717171717271717171717171717171717271726750463658e0fbf7e4c6c2c3
+c3c2c3c2c2c4ceddedf7fdfdfdfdfcfdfccb4a3b3d383b3b3a3a3a3e4a6b727271727272727272
+727272727272727272727272
+72727272717171717171717172717271717171717171717172716d4b544340b1f7fcfdf7d5c2c2
+c2c2c2c2c6d5e7f5fcfdfdfdfdfdfdfcfbf7833d3d3b3b3b393b393a3b4e717272717272727272
+727272727272727272727272
+7272727271717171717271727271727171717171717171727371483a3a3673f4fdfcfbfceccfc5
+c2c1c2cde3f3fafdfdfdfcfdfdfdfdfcfdfccb40393a3b3b39393a393b3c607271727272727272
+727272727272727272727272
+727272727171717171727171727171717171717171717171705a3e3f3c45d0fcfdfdfcfdfcf5e6
+d9dce5f1fafcfcfcfdfdfcfdfdfdfdfdfdfdf66937393b3b393939393a3a486a72717272727272
+727272727272727272727272
+7272727271717171717171717271717171717171717171725f3e3a3c3985fbfcfdfcfdfdfdfdf9
+f1f8fcfdfdfcfcfcfcfdfdfdfdfdfdfdfdfdfd933b3a3b3b3a3a3a3a393a3d4a6b717272727272
+727272727272727272727272
+717171717171717171717171717171717171717172727267443b3b394cd2fafcfdfdfdfdfdfdfb
+fafcfdfdfdfcfcfcfcfcfdfdfdfdfdfdfdfdfbc73b3b3a3a3a393a3a3a393c3e52727272727271
+727272717171717172717271
+727172727171717171717171727171717172727175736d423a3a383c7de7f9fefefdfdfdfdfdfc
+fbfcfdfdfdfcfdfdfcfdfdfdfdfdfdfdfdfcf8e24d3c3b3b3a3a3a3a3b3b393a3b537173727272
+727272727272727272727272
+7272727271717171717171717271727171727271726e4d3b3b3a3646a0e2f8fdfefdfcfcfdfdfc
+f8f8fcfdfdfdfdfdfdfdfcfdfdfdfcfbf4f0efeb653f3b3b3b3b3b3b3b3b3938393f5772727272
+727272727272727272727272
+727172727171717171717171727171717171727171533f3b3b3a364aa5cef0f9fbfdfdfcf9f5f1
+ecebf3f8fafbfbfafcfaf8f7f5f5efeae3dbdfe687473b3b3a3b3a393a3a3b393a393f5c727272
+727272727272727272727272
+7272727271717171717171717272717171717271623d3d3a3b3a3a5ba9b8d0e7edf5f9f9f5ede3
+e1e5e7f2fbf9fafaf7eee2dad3d0cececcc8c9d8c5513a3b3a373c393d3b3a3939383d3e637272
+727272727272727272727272
+727272727171717171717171727171717172726e4a3d383a3b3a456fadb5cbddebf8fbfcfdfced
+e4f5fbfdfcfdfdfdfcf7ede3d5cecac8c7c6c6c7deb844393e644e3a393b3a3a3939383c4b6f72
+727272727272727272727272
+72727272717171717172727272727271717272603e3a3b3b393a4b7cbbd3ebf7fdfcfcfbfdfcee
+f1fcfcfcfcfbfbfdfcfcfdfbf8f2e8ded3cbc7c6ceee993d34556f5f463c3d393b393a3a3e6272
+727272727272727272727272
+717171727171717172717171727171717173704b3b3d39473c3c5fb0dcf1fbfcfcfcfdfcfcfcf5
+f5fbfcfbfdfcfcfcfcfcfbfbfdfcfcfbf5e9d9cdc7d8ea683b3d3d58724b3b3d3b3a3a3a3c5173
+737272727272727272727272
+7272727271717171717271717271717171736e433e385e603e4090dff5fcfdfcfcfbfcfcfbfcfa
+fbfbfcfcfcfbfcfdfcfcfcfcfdfcfcfcfbfcf6e6d3c9e3c3403a3d394d7342353e3a3b3a39416b
+727372727272727272727272
+727171727171717171717171727171717172673d374a6b3b3d4cd9f8fdfcfcfcfbfdfbfcfbfcfc
+fbfcfcfbfcfcfcfcfdfcfcfcfbfcfbfcfcfdfdfaedd4ceeb6c3c3d3d3e51663a3e383b3a393c56
+717472727272727272727272
+727271727171717171717171727171717173573c3c604d3b3c8ffbfdfbfcfdfcfcfcfcfcfcfbfb
+fdfbfdfcfdfbfcfcfcfbfcfcfdfbfdfcfcfcfcfdfcedd3dac43d384e5b5064583a3c3b3a363c40
+6f7272727272727272727272
+727271727171717171717171727171717170483f476f373851e9fdfdfdfbfcfcfcfcfcfcfbfcfd
+fcfcfcfbfcfcfbfbfcfcfdfcfdfcfcfcfcfcfcfdfcfdf1e6f1583f5e7770546d42393b3a3b3a3d
+637272727272727272727272
+7272727271717172717171717271727372643f3c6a52373da0fbfcfcfcfcfbfcfcfcfdfcfcfbfb
+fcfbfcfbfbfcfdfcfcfcfcfcfcfcfcfbfcfcfdfcfdfbfcfcfd9545657c735259613d3c393a393b
+4e7172727272727272727272
+7272727271717171717171717271727471513a456a393a5ae6fafcfbfcfbfcfbfcfcfcfcfbf8fa
+fbfcfcfcfcfdfbfcfdfcfcfdfcfdfcfbfdfcfbfcfcfcfcfcfdc64f5e6456434078433b3d393b3d
+436c72727272727272727272
+727272727171727171717171727272726e47385c53333e98fbfbfcfcfcfcfcfcfcfcfcfcf9eafb
+fbfbfbfbfcfcfbfdfcfcfbfcfcfcfcfcfbfdfcfcfdfdfcfdfce7473d3f3b3b375e57393d383939
+3b6171727272727272727272
+72727272717171717171717172717272633c3b703f3451dafcfcfbfbfcfcfbfcfcfdfdfbf4e8fa
+fcfdfcfcfcfbfcfbfcfcfcfcfbfdfcfcfcfcfcfcfcfbfbfcfcfa623c3a3a3b374b66373d393939
+3b5072727272727272727272
+727272727171717171717171727272714e3b52613b388af8fcfbfcfbfcfcfcfcfcfdfcfcf2edfc
+fdfcfcfcfcfdfcfbfcfcfcfcfcfdfcfdfdfcfcfcfcfdfcfbfcfc84383b3b393a3f774138383938
+3a416f727272727272727272
+727271727171717171717171727272663c3c68453b40c5fbfbfbfdfdfcfcfdfbfcfcfcfcededfb
+fcfcfcfcfbfcfcfcfcfbfbfcfcfcfcfcfafcfcfcfcfbfcfdfcfda23c3b3b3b3b3d7437383b3a39
+3b3f68727272727272727272
+7272727271717171717171717174714b3a3a6b373b57eefcfcfcfcfbfcfcfbfcfcfbfdfbe9e9fb
+fbfcfcfcfbfcfcfbfbfcfcfbfbfcfbfcfcfcfcfcfbfcfcfcfdfcaf3b3b3b3c3a406f37373a3a39
+393d5f727272727272727272
+7171717272717171727171717271623e3d4a60373b82fbfcfcfdfbfdfcfcfcfcfbfcfcfbe6eafb
+fcfdfcfcfcfcfcfbfdfcfcfcfdfcfcfcfcfdfcfcfcfbfcfcfcfdbd3a3b3b3a3843633836393a38
+3a3c54727272727272727272
+727272727272717171717272736d463a37535c3839aafcfcfcfdfdfcfcfcfbfcfdfcfbfbe6eaf9
+fbfbfcfbfcfbfcfcfbfdfcfcfbfcfcfcfcfdfcfcfcfcfbfdfcfcce3c3b3b393c4e533937383939
+383c4f727272727272727272
+71717272717171717171717371593d3b3952603947cdfcfbfcfcfcfcfcfdfdfcfcfcfdfae2e9fa
+fbfbfcfdfbfcfcfcfcfcfcfcfcfcfcfbfbfcfbfdfcfcfdfafcfcd4423b3b3b3a5a4e393a39383a
+3a3940727272727272727272
+7272727271717171717271726c41393c3656683b47d6fdfbfcfcfcfcfcfcfbfcfdfcfcfae1e9fb
+fbfcfdfcfcfcfbfcfcfcfcfbfcfcfbfcfcfcfbfbfdfcfbfcfcfdda413b3b3c3b6644393a3a3938
+3b3a3f727272727272727272
+727271727171717171717171553c3b3b405f6d394ce1fcfcfcfcfcfcfbfdfcfcfcfcfcf9e1ecfb
+fcfcfcfcfcfbfbfcfdfcfcfdfbfcfcfcfcfbfcfbfbfdfcfdfcfcdd423b3b3b39643f393a393939
+3a3a3e727272727272727272
+7272727271727171717171724f3e363d4f767e3b5be9fcfdfcfdfbfbfbfcfcfbfafcfcf8e2eefb
+fbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfdfcfbfcfdfcfcfcfbfdde433b3b3b455f3a3b3b3a3a39
+39393e727272727272727272
+72727272717171717171716e46393938466b863e69edfcfdfcfcfcfcfbfcfcfcfcfcfcf7e2eefc
+fbfcfcfdfbfdfcfbfdfcfdfdfdfcfcfcfcfdfbfcfcfbfcfcfbfddc443b3b385a463b3b3b3a3839
+393940727272727272727272
+72727272717171727171716f413a3a3a3945724869effcfcfcfcfbfcfcfbfcfcfcfcfbf8e2f1fc
+fcfcfcfbfcfcfcfcfcfcfcfcfcfcfcfbfcfcfcfcfcfcfbfcfdfccc3f383a41683b3d3d3a3b3a3a
+3a3b42727272727272727272
+72727272727171717171716e443938393c3c49626eeefcfbfcfcfcfcfcfcfcfcfcfcfcf8e2f1fc
+fbfcfdfcfcfdfdfcfcfcfcfcfbfcfbfcfcfcfcfcfcfcfcfcfcfcb83b3f5a685d455b6054463f3a
+3c3a51727272727272727272
+727272727271717172717171524a728f8d5e424d80e3fbfcfcfbfcfcfdfcfbfcfcfcfcf7e1f2fb
+fcfcfcfcfcfcfcfbfcfdfbfcfcfcfcfcfcfcfcfcfcfdfcfcfcfc9c405b503d3b3c3c455368755c
+3d3a5a727272727272727272
+72727172717171727271727174a3c9d4d6c87b3b50b0f9fcfcfdfcfcfcfbfdfcfcfcfcf8e2f3fb
+fcfcfdfcfcfcfcfcfcfcfbfbfbfcfbfcfbfcfcfcfcfcfbf9fbf66956403b3a3a39393b3a3a608d
+654567717273727272727272
+7272727271717172717371739bc1d1d4d4d4cc7f3f55a9f5fbfbfcfbfdfbfbfcfbfbfcf8e1f3fc
+fbfcfcfcfbfcfbfcfcfdfdfcfcfcfcfcfcfcfcfcfbf6d5d3d3d29c59393a393b3b3b3b3a3c5d76
+61486b737272727272727272
+727272727171727171737288b1c7d1d4d4d5d4cc803f4ea1f0fbfcfcfcfbfcfcfcfdfcf6e3f4fc
+fdfbfbfcfcfcfcfcfcfcfcfcfdfbfcfcfcfbfcfcfcdccfdbdddccd5b3e3a393b3b3b3b3a3e655e
+519c89727373727272727272
+7171717272727171717276a3b8c8d2d4d5d4d5d5c66d3a4892e9fcfbfcfdfcfbfbfbfcf8e1effb
+fcfbfcfcfcfcfbfcfcfbfcfbfcfcfcfcfbfcfcfcfcd5c7d4d7dabb50383c393b3b3b3b3a414f40
+76cfda8f7374727272727272
+7172717372727271707e9db3c0cdd4d4d5d4d4d5d4b6543b4673d6fbfbfcfcfdfdfcfbfaeaedfc
+fbfdfcfcfcfdfdfcfcfcfcfcfbfbfcfbfcfdfcfcfcd7c5d3d4d1a9513a393a3b3b3b3b3a3a3653
+bad5d7b87371727272727272
+7170778c9baaa8a5a3a7b4bdc9d1d4d4d4d4d4d4d5d2a04435405bc1f7fcfcfdfbfcfcfdfbf9fc
+fdfcfbfcfcfcfbfcfcfcfcfbfcfcfcfdfcfcfbfbf8d8c4d3d2c9a85c3a3b383b3b3b3b3a3a4196
+cfd1d4c47370727272727272
+73779fb2bcc1bfbbbbbdc4cad1d4d4d4d5d4d4d4d5d4cb7c3d373c469ef3fbfcfcfcfdfcfcfcfc
+fcfbfcfcfbfcfcfcfcfcfcfcfcfcfcfcfbfcfbe8d3c7c4d2cec3ae78463c36383836373b477dbf
+cccfd1c07671727272727272
+738ab0bec9cdccc9c7ccd1d2d4d4d4d4d4d4d4d4d4d5d5b758383b3a4387e5fdfcfcfcfbfcfcfc
+fdfdfbfcfcfcfcfcfbfcfcfdfcfcfbfbfdfceecdc7c3c2cecbc1ae997146403e393d426189b2c3
+cccfd2c27572727272727272
+7193b7c7ced1d2d3d2d3d4d4d4d4d4d4d5d4d4d4d4d3d4cf953d383a353a68d0fbfbfbfbfdfcfc
+fbfbfbfdfcfdfcfbfcfcfbfcfcfcfdfcfbfde3c7c8c2bfc9cac4b5a69c8e7d77767e929eacc0ca
+d0d3d4d07f72727272727272
+729eb8c8d0d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d5d3d3d5c065383b38343f57bffbfbfcfcfbfc
+fcfcfcfcfbfbfcfdfcfcfcfcfbfbfbfcfcfbdfc9c8bdb9c8cac6bbb0a8a5a1a0a1a3a7b1bfccd1
+d4d4d4d3af77717372727272
+7192b7c6d0d4d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d3d4d4a64639383c3a3852c7fcfcfdfdfd
+fcfcfcfcfcfcfdfdfcfcfdfcfdfcfbfcfcfbe0c8c8b8b4c6cacac1b9b5b1b0afafb2b7c0cbd4d4
+d4d5d4d2cf9c727272727272
+728cb5c3ced4d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d4d4c97d3b363a3737396ef0fcfcfcfc
+fdfcfcfcfbfcfcfcfcfcfcfcfdfcfcfbfcfde7cbc9b3aebfc9cbc8c2bcbbb9b9b9bcc3c9d1d5d5
+d5d5d5d3d1c88f7272727272
+718bb2c0cdd3d4d4d4d4d4d5d5d5d4d4d5d4d4d4d5d4d4d4d4d5b6573a3939393742d8fcfcfcfc
+fcfbfcfbfcfcfcfdfcfcfcfcfbfbfcfcfdfbeed0c8adaabcc9d0cecbc5c3c2c1c3c5c8ced2d5d5
+d5d5d5d5d4d1c29071727372
+727fafbdccd3d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d4d4d4ce974038393b393fd1fcfcfcfb
+fcfbfcfdfcfcfbfcfcfcfcfcfbfcfcfbfcfcf3d3b588aabdc9d0d2d1cdcbc9c8caccced1d4d5d5
+d5d5d5d5d4d3d0cb99767372
+727aadbccbd3d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d4d5d3d5c57a3a3a383a59ecfdfcfcfc
+fbfcfcfcfcfcfcfbfcfbfcfcfbfcfcfcfbfcf2c46785aabdc9d1d3d3d2d2d0d1d1d2d2d3d4d5d5
+d5d5d5d5d5d5d4d4d4b88872
+727bacbacbd3d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d4d5d4d3d5b15441467bd7fcfcfcfbfc
+fcfdfdfcfcfcfbfcfcfcfdfdfcfcfcfcfbfccd5d4484abbecad1d2d4d4d5d4d5d4d4d4d4d5d5d5
+d5d5d5d5d5d4d5d4d4d5cea5
+727caebac9d3d4d4d4d4d5d5d5d5d4d4d4d4d4d4d4d4d4d4d5d5d3d3ce99a7dcf8fcfcfcfcfcfc
+fbfbfcfcfbfcfcfdfcfcfcfcfbfcfcfcf8c2523a4789aabecad1d3d4d5d5d5d5d5d5d5d5d5d5d5
+d5d5d5d5d5d5d5d5d5d5d2c6
+7084aebacbd2d3d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d3d1d1bfa4f4fafbfbfcfcfbfc
+fcfcfbfbfcfcfcfcfcfcfcfcfcfbfbf6a44538364e8aaabecbd2d4d4d4d4d4d4d4d4d4d4d4d4d4
+d4d4d4d4d4d4d5d5d4d3cec1
+718eacbbcdd3d3d4d4d4d5d4d5d4d4d4d5d4d4d5d4d4d5d4d5d4d4d3cfceadbdfbfcfbfcfcfcfc
+fbfdfdfcfbfdfbfbfcfcfbfbfcfce87f42353834578aa9c0cbd2d5d5d5d5d5d5d5d5d5d5d5d5d5
+d5d5d5d5d5d5d5d4d0c9c19f
+739daec0d0d4d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d4d5d4d4d4cfd0bc95d1fbfbfbfcfcfc
+fcfcfcfcfcfcfbfcfcfcfcfcefa84c3b383c39385e88a7c1ccd2d4d5d5d5d5d5d5d5d5d5d5d5d5
+d5d5d5d5d4d4d4d1c6bca676
+81a6b6cbd2d3d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d4d5d4d4d4cfcabf9f80cbfafbfcfcfc
+fbfcfcfcfcfbfcfcfcfcf0b45b3c3a3b3a3738396488a6bfccd3d4d5d5d5d5d5d5d5d5d5d5d5d5
+d4d4d4d4d3d1ccc1b5947871
+94aebfcdd2d3d4d4d4d4d4d4d5d4d4d4d4d4d4d4d4d4d4d5d5d4d4d4d0c6bda6835a8ad1eff7fb
+fcfbfcfcfbfaf3e7c5935a3f373a3b3b3b3b3b3d6b8ba7becbd2d5d5d5d5d5d5d5d5d5d5d5d4d4
+d5d4d4cec7c0b5a280727373
+a4afbdc8d1d2d2d3d4d3d4d4d5d4d4d4d4d4d4d4d4d4d4d4d5d4d4d4d1c8bca98d693b3d5c7e93
+a7aea0988f7c5e4b3d3b3a38383b3b3b3b3b3a43708ea7bdcad2d5d5d5d5d5d5d5d5d5d5d4d2d1
+d2d1c8bbb09a7f7372727272
+a3abb7bfc8cbcdcecfd0d2d4d3d4d4d4d4d4d4d4d4d4d4d5d5d4d5d4d0c8bca78f75473839383d
+3d3a39373836353a383b37373b3a3a393a3a38477590a6bac9d2d4d5d5d5d4d4d4d5d4d4d0ccca
+c6bdb1947971727272737272
+9aa5aaafb7bcbfc0c3c5c6cacccfd0d1d2d3d3d4d4d4d4d5d5d4d4d3cec3b6a28b7b553939393a
+393939393939393939393939393a393a3a393947768fa3b5c3cfd4d4d4d4d4d4d2d2d1cbc5bfbb
+b19b80737172727272727272
+7a91989da0a2a7abafb2b6b7bcc0c4c6c9cdd0d2d4d4d4d4d4d4d4d1c8bba9988a7c593a3a3a3a
+3a393a3a3a3a3a3a3a3a3a3a3a3938393a3a3a4a768a9daebdc9d0d2d3d3d2d2d0cdc7bfb8b2a6
+8a7371717171727272727272
+7172757a838c91979c9fa4a4a6a9aeb1b6bac1c7cdcfd1d2d1d1d1cbbfb09e8f857958383a3839
+3b3b3b3b3c3b3b3c3b3b3b3b3b3a3837383a394c738596a5b5bfc9ced0d1d0cdc7bfbbafa49a7b
+727172727272727272727272
+727273727272747c858b90949496999b9fa4acb3b9bec3c8cbcac4bbafa393867d734e3c404141
+4b555858585858585858585857554d454543404d7082909daab6c0c5c7c8c6beb8b2a89b8a7571
+727272727272727272727272
+7372727272727171727274797d8185898d90959ba2a6abb0b6b6b0a89c92867e776547656f7372
+707172727272727272727272727174736f6f66656c7e8a959fa6aeb3b4b4b1aaa49d9382727272
+727272727272727272727272
+727271717271717171727271717273767b7d82898e9195989b9b98928a837e7972616470727172
+72727171717171717172727272727272727171706d76828e979b9da0a1a19f9b968d7c73727271
+717272727272727272727272
+72727272717171717171717172717170717172767d81868788878683807c776f6e727271717171
+7171717171717171717272727272727272727271706f79838c9192959595938d84787171717272
+727272727272727272727272
+7272727271717171717171717271717171737372727375767a7c7d7b79746e6d72737271717171
+7171717171717171717272727272727272727271726e6f737c8285888786837974727172717272
+727272727272727272727272
+7272727271717171717171717271717171727272727272707273706f6f71707272727271717171
+71717271717171717172727272727272727272727272716e6f6f72757372727172717172727272
+727272727272727272727272
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/contrib/mom/examples/sample_docs.mom b/contrib/mom/examples/sample_docs.mom
new file mode 100644
index 0000000..f9b2933
--- /dev/null
+++ b/contrib/mom/examples/sample_docs.mom
@@ -0,0 +1,713 @@
+.\" -*- mode: text; coding: utf-8; -*-
+\#
+\# Copyright (C) 2004-2020
+\#
+\# 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 contains three greeked documents collated together:
+\#
+\# i) two pages of a novelist's outline
+\# ii) two pages of a chapter using COPYSTYLE DRAFT
+\# iii) three pages of an academic paper, set in two columns
+\#
+\# Mom's defaults are used throughout, except for iii), which
+\# demonstrates some of the ways you can design your own documents.
+\#
+\# Since the text throughout is greeked, and groff doesn't know how
+\# to hyphenate all that pseudo-latinate nonsense, I've inserted
+\# discretionary hyphens (\%) into a large number of the words.
+\# Normally, this isn't necessary.
+\#
+\# 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 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
+\# subheads and paraheads. I've turned the feature on merely to
+\# demonstrate it.
+\#
+\# Information for the cover pages
+\#
+\# Title, subtitle and copyright for the document cover.
+\#
+.TITLE DOC_COVER \
+ "Sample mom documents"
+.SUBTITLE DOC_COVER \
+ "Three types of mom documents" \
+ "assembled and collated" \
+ "by mom's author"
+.COPYRIGHT DOC_COVER \
+ "2015 Peter Schaffter"
+\#
+\# What appears in the pdf viewer's window title
+\#
+.PDF_TITLE "Sample mom documents"
+\#
+\# Reference macros (metadata) for the first section of the collated
+\# document.
+\#
+.TITLE "Lake Attica's Shores"
+.SUBTITLE "A Romance Novel"
+.AUTHOR "Rosemary Winspeare"
+.COPYRIGHT "2015 Alma Podborski"
+\#
+\# What to put on the cover for the whole document (in mom-speak,
+\# the "doc cover"). The title, subtitle, and author are what were
+\# given to TITLE DOC_COVER, SUBTITLE DOC_COVER, and COPYRIGHT
+\# DOC_COVER.
+\#
+.DOC_COVER TITLE SUBTITLE COPYRIGHT
+\#
+\# What to put on the first document's title page (in mom-speak, the
+\# "cover"). In this case, we're using the metadata from TITLE,
+\# SUBTITLE, AUTHOR and COPYRIGHT, which will also be used to
+\# generate the docheader (minus the copyright).
+\#
+.COVER TITLE AUTHOR DOCTYPE COPYRIGHT
+\#
+\# Docstyle macros (templates)
+\#
+.DOCTYPE NAMED "Outline"
+.PRINTSTYLE TYPESET
+.PAPER LETTER
+\#
+\# Here we style the covers a bit.
+\#
+.DOC_COVER_TITLE_STYLE \
+ SIZE +8 \
+ SMALLCAPS \
+ UNDERLINE 1 3p
+.DOC_COVER_SUBTITLE_STYLE \
+ FONT I \
+ SIZE +2 \
+ LEAD 18 \
+ SPACE .75v
+.DOC_COVER_COPYRIGHT_SIZE -.5
+\#
+.COVER_TITLE_SIZE +5
+.COVER_ATTRIBUTE_STYLE \
+ SIZE +2 \
+ SPACE .25v
+.COVER_AUTHOR_STYLE \
+ SIZE +2 \
+ LEAD 18
+.COVER_DOCTYPE_STYLE \
+ SIZE +4 \
+ UNDERLINE DOUBLE 1
+.COVER_COPYRIGHT_SIZE -.5
+\#
+\# Here we style the docheader a bit.
+\#
+.SUBTITLE_SPACE .25v
+.DOCTYPE_UNDERLINE 1 2p
+\#
+\# Styles 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 +.75
+.HEADING_STYLE 2 \
+ FONT B \
+ SIZE +.5 \
+ BASELINE_ADJUST \n[.v]/8 \" ie 1/8 the leading
+\#
+.AUTO_RELOCATE_TOC \" Move table of contents to the top of the doc
+.SPACE_TOC_ITEMS \" Prettify TOC spacing
+\#
+\# Begin the document
+\#
+.START
+\#
+.PP
+.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.
+At vero eos et accusam et justo duo do\%lo\%re et ea rebum.
+.PP
+Stet clita 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.
+.PP
+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. Consetetur
+sadipscing elitr, sed diam nonumy.
+.LINEBREAK
+.PP
+.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.
+.PP
+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. 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.
+\#
+\# 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
+ali\%quyam erat, sed diam voluptua. At vero eos et accusam et
+justo duo do\%lo\%res et ea rebum.
+.PP
+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 ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua.
+Stet clita kasd gubergren, no sea takimata sanctus est.
+.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
+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.
+.PP
+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.
+.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.
+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.
+.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
+sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore
+et do\%lo\%re magna ali\%quyam erat, sed diam voluptua.
+.PP
+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.
+.PP
+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. 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. Stet clita kasd gubergren, no sea takimata
+sanctus est lorem ipsum dolor sit amet. Consetetur sadipscing elitr,
+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
+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.
+.PP
+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. Stet clita kasd
+gubergren, no sea takimata sanctus.
+.PP
+At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita
+kasd gubergren. Sea takimata sanctus est lorem ipsum dolor
+sit amet. Accusam et justo duo do\%lo\%res et ea rebum. Diam
+nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna.
+.RIGHT
+\*[BD]\&...end of sample outline\c
+.EL
+.COLLATE
+\#
+\# The '\c /.EL' keeps mom from depositing a line break which,
+\# because "...end of sample outline" falls exactly on the last
+\# baseline of the page, would spring the page trap that sets a
+\# header at the top of the next page. Since the next page is a
+\# title page, we don't want that. Normally, this isn't required,
+\# although using it routinely before COLLATE is a good habit.
+\#
+\# Notice, too, the use of "\&" before "..." Whenever an input line
+\# begins with either a period, an apostrophe or a space, you must
+\# precede it with \&, otherwise the line will disappear, even when,
+\# as here, there's an inline escape beforehand.
+\#
+\# =====================================================================
+\#
+\# Next, a document composed of 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.
+\#
+.TITLE "Lake Attica's Shores"
+.SUBTITLE "A Romance Novel"
+.AUTHOR "Rosemary Winspeare"
+.CHAPTER 1
+.CHAPTER_TITLE "The Bonny Blue Yonder"
+.DRAFT 1
+.REVISION 2
+.MISC "Draft 1, 2nd revision"
+\#
+.DOCTYPE CHAPTER
+.COPYSTYLE DRAFT
+\#
+.EPIGRAPH_FONT I \" Epigraphs are normally set in roman
+.DRAFT_WITH_PAGENUMBER \" Draft/revision info usually goes in the header
+\#
+\# Style the title page
+\#
+.COVER_CHAPTER_SIZE +6
+.COVER_CHAPTER_TITLE_STYLE \
+ SIZE +5 \
+ SPACE .25v
+.COVER_MISC_SIZE -.25
+\#
+\# What goes on the title page
+\#
+.COVER CHAPTER+TITLE MISC
+\#
+\# Begin the document
+\#
+.CHAPTER_SIZE +3.5
+.CHAPTER_TITLE_SIZE +5
+.CHAPTER_TITLE_SPACE +3p
+.START
+.EPIGRAPH BLOCK
+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
+\#
+\# If running PRINTSTYLE TYPEWRITE, this adds space before
+\# attribution ("Joseph E. Blough")
+\#
+.if \n[#PRINT_STYLE]=1 .sp
+\#
+\*[ROM]\[em]Joseph E. Blough
+.EPIGRAPH OFF
+.PP
+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. Stet clita kasd gubergren, no sea takimata sanctus est.
+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 eos et 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.
+.PP
+Stet clita kasd gubergren, no sea takimata sanctus est. Lorem ipsum
+dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
+tempor invidunt.
+.PP
+"Consetetur sadipscing elitr," dixit ea.
+.PP
+"Sed diam nonumy eirmod tempor invidunt ut labore," dixit eum.
+.PP
+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. Consetetur sadipscing elitr, sed diam nonumy
+eirmod tempor invidunt ut labore et do\%lo\%re magna.
+.PP
+"Lorem ipsum dolor sit amet," dixit ea.
+.PP
+"At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita
+kasd gubergren, no sea takimata sanctus est," dixit eum. "Sed diam
+nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat,
+sed diam voluptua."
+.PP
+Consetetur sadipscing elitr, sed diam nonumy eirmod tempor:
+.QUOTE
+Invidunt ut labore et do\%lo\%re
+Magna ali\%quyam erat sed diam
+Voluptua stet clita kasd gubergren
+No sea takimata sanctus est.
+.QUOTE OFF
+.PP
+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 ut labore
+et do\%lo\%re magna ali\%quyam erat, sed diam voluptua.
+.PP
+"Stet clita kasd gubergren," dixit ea.
+.PP
+"No sea takimata sanctus est," dixit eum.
+.PP
+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.
+.PP
+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. Stet clita kasd gubergren, no sea
+takimata sanctus est. Consetetur sadipscing elitr, sed diam nonumy
+eirmod tempor invidunt ut labore et do\%lo\%re magna.
+.PP
+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. 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 eos et
+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\c
+.EL
+.COLLATE
+\#
+\# =====================================================================
+\#
+\# 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).
+\#
+\# 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.
+\#
+\# Style the title page
+\#
+.COVER_TITLE_CAPS
+.COVER_ATTRIBUTE_SPACE .5v
+.COVER_AUTHOR_STYLE \
+ SIZE +1.5 \
+ LEAD 14 \
+ SPACE .25v
+.COVER_MISC_STYLE \
+ QUAD L \
+ SIZE +0
+.COVER_COPYRIGHT_SIZE +0
+\#
+\# What goes on the title page
+\#
+.COVER TITLE AUTHOR COPYRIGHT MISC
+\#
+.DOCTYPE DEFAULT
+.COPYSTYLE FINAL
+\#
+.TITLE "Control Equals Chaos"
+.SUBTITLE "\*[ALD1]The Psychological and Auditory \
+Impact of Serial vs. Aleatoric Music\*[RLD1]"
+.AUTHOR "Joe Chang" "and" "Brad Hegel Connors"
+.COPYRIGHT "2015 J. Chang, B.H. Connors
+.MISC "Submitted June 3, 2015" "\*[IT]Piano Quarterly\*[PREV]"
+\#
+\# Style the docheader
+\#
+.TITLE_CAPS
+.ATTRIBUTE_SPACE .33
+.AUTHOR_SIZE +1
+.SUBTITLE_SIZE +2
+\#
+.L_MARGIN 6P
+.R_MARGIN 4P+6p
+.PT_SIZE 10
+.AUTOLEAD 1.5
+\#
+.RECTO_VERSO
+.PAGENUM 1
+\#
+.HEADER_LEFT "Chang, Connors" \" Because we have two authors
+.HEADER_SIZE +1
+\#
+.DOCHEADER_ADVANCE 1.75i
+.DOCHEADER_LEAD +2p
+\#
+\# When PRINTSTYLE is TYPESET, these indents need to be smaller than
+\# the default
+\#
+.if \n[#PRINT_STYLE]=2 \{\
+. PARA_INDENT 1P
+. QUOTE_INDENT 2
+. BLOCKQUOTE_INDENT 2
+.\}
+\#
+\# Style heading 1
+\#
+.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
+\#
+\# Style the blockquotes
+\#
+.BLOCKQUOTE_STYLE \
+ FAMILY H \
+ SIZE -2 \
+ AUTOLEAD 2
+\#
+.COLUMNS 2 1P+6p \" Set in two columns
+\#
+\# Being the document
+\#
+.START
+.PP
+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.
+.PP
+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 ut labore et do\%lo\%re magna ali\%quyam erat. Sed diam voluptua
+at vero eos et accusam et justo.
+\#
+.BLOCKQUOTE
+Stet clita 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 at vero. Eos et accusam et justo duo do\%lo\%res et
+ea rebum stet clita.\c
+.FOOTNOTE \" Note the use of \c, above, to keep the word and footnote marker together.
+Clita ipsum dolor sit amet, consetetur sadipscing elitr.
+.FOOTNOTE OFF
+.BLOCKQUOTE OFF
+\#
+.PP
+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 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.
+.PP
+Nonumy eirmod tempor invidunt, ut labore et do\%lo\%re magna ali\%quyam
+erat? 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. Sadipscing\c
+.FOOTNOTE
+Sadipscing diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna
+ali\%quyam erat, sed diam voluptua.
+.FOOTNOTE OFF
+ 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. Stet clita kasd gubergren no sea.
+\#
+.HEADING 1 "Schoenberg \[em]" "The Origins of Serial Pitch Organization"
+\#
+.PP
+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. Stet clita 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, at vero eos. Et accusam et justo duo do\%lo\%res et ea
+rebum stet clita kasd gubergren 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 stet clita kasd.
+Gubergren no sea takimata sanctus est.
+.PP
+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 sed diam voluptua.
+.PP
+No sea takimata\c
+.FOOTNOTE
+Takimata sadipscing elitr, sed diam nonumy eirmod tempor invidunt
+ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua.
+.FOOTNOTE OFF
+ 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 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 qua certiore.
+\#
+.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 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
+justo duo do\%lo\%res et ea rebum.
+\#
+.BLOCKQUOTE
+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
+rebum amet. Consetetur sadipsc\%ing elitr sed diam nonumy eirmod
+sed diam nonumy, eirmod tempor. Invidunt tempor invidunt ut labore.\c
+.FOOTNOTE
+Labore 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.
+.FOOTNOTE OFF
+ Et do\%lo\%re et magna ali\%quyam erat, sed diam voluptua, at vero.
+Eos et accusam et justo duo.
+.BLOCKQUOTE OFF
+\#
+.PP
+Lorem ipsum dolor sit amet, consetetur sadipscing elitr. Sed diam
+nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna.
+.PP
+Nonumy eirmod tempor invidunt, ut labore et do\%lo\%re magna ali\%quyam
+erat? 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. 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.
+Stet clita kasd gubergren no sea. Ali\%quyam erat, sed diam voluptua.
+\#
+.HEADING 1 "John Cage \[em]" "Leaving It All to Chance"
+\#
+.PP
+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 taki\%mata sanctus est.
+.PP
+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. Stet clita 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. At vero
+eos et accusam et justo duo do\%lo\%res et ea rebum.
+.PP
+Stet clita 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, 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. 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.
+\#
+.BLOCKQUOTE
+.PP
+Stet clita 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\c
+.FOOTNOTE
+Aliquyam nonumy eirmod tempor invidunt ut labore.
+.FOOTNOTE OFF
+ 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.
+.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
+justo.\c
+.FOOTNOTE
+Justo vero eos et accusam et justo duo.
+.FOOTNOTE OFF
+.BLOCKQUOTE OFF
+\#
+.PP
+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 ut labore et do\%lo\%re magna
+ali\%quyam erat, sed diam voluptua. At vero eos et accusam.
+.PP
+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 ut labore
+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.
+\#
+.HEADING 1 "Beyond Cage \[em]" "Catching the Midnight Train"
+\#
+.PP
+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.
+.PP
+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 ut labore et do\%lo\%re magna ali\%quyam erat. Sed diam voluptua
+at vero eos et accusam et justo.
+.PP
+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 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.
+.PP
+Nonumy eirmod tempor invidunt, ut labore et do\%lo\%re magna ali\%quyam
+erat? 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
+amet. Sadipscing\c
+.FOOTNOTE
+Sadipscing diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna
+ali\%quyam erat, sed diam voluptua.
+.FOOTNOTE OFF
+ 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. Stet clita kasd gubergren no sea
+takimata 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. Stet clita kasd gubergren, no sea
+takimata sanctus est.
+.PP
+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. Stet clita kasd gubergren, no sea
+takimata sanctus est.
+.RIGHT
+\*[BD]\&...end of sample article\*[PREV]
+.FINIS
+.TOC_RV_SWITCH
+.TOC
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/contrib/mom/examples/slide-demo.mom b/contrib/mom/examples/slide-demo.mom
new file mode 100644
index 0000000..989ce5a
--- /dev/null
+++ b/contrib/mom/examples/slide-demo.mom
@@ -0,0 +1,438 @@
+.\" -*- mode: text; coding: utf-8; -*-
+\#
+\# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+\# Revised for version 2.5 2021-08.
+\#
+\# 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.
+\#
+.\" Macro for code blocks
+.de CODE_BLOCK
+. ie \\n[.$] \{\
+. CODE off
+. QUOTE off
+. CENTER_BLOCK off
+. \}
+. el \{\
+. CENTER_BLOCK
+. QUOTE
+. CODE
+. \}
+..
+.\"----------------------------------------------------------------
+.
+.TITLE "Creating slide presentations with gropdf/mom"
+.PDF_TITLE "\*[$TITLE]"
+.
+.DOCTYPE SLIDES \
+ ASPECT 16:9 \
+ HEADER "Header left" "\*[$TITLE]" "Header right" \
+ FOOTER "" "" "\*S[+2]\*[SLIDE#]\*S[-2]" \
+ TRANSITION "Box 1 . O" \
+ PAUSE "Wipe 1"
+.
+.PARA_SPACE .75v
+.SS +3
+.HYPHENATION off
+.
+.NEWCOLOR darkred #aa0000
+.NEWCOLOR darkred1 #900000
+.NEWCOLOR blue1 #00007b
+.NEWCOLOR blue2 #00006f
+.NEWCOLOR code-grey GRAY 0.3
+.XCOLOR cyan4
+.XCOLOR green4
+.
+.HEADER_COLOR darkred1
+.HEADER_RULE_COLOR blue1
+.FOOTER_RULE off
+.
+.COVER_STYLE \
+ LEAD +8 \
+ COLOR white
+.HEADING_STYLE 1 \
+ COLOR blue2
+.CODE_STYLE \
+ FONT B \
+ SIZE 115 \
+ COLOR code-grey
+.QUOTE_STYLE \
+ QUAD LEFT
+.CONDENSE 90
+.
+.PDF_IMAGE_FRAME "" 1 blue1
+.
+.COVERTITLE \
+ "Creating slide presentations" \
+ "with" \
+ "gropdf and mom"
+.
+.COVER_START_POS 15P
+.COVER COVERTITLE
+.
+.STRING hand \*[darkred]\[rh]\*[black]
+.
+.\" Make first slide black.
+.\" If printing, remove to save ink.
+.SLIDE_COLOR black
+.
+.START
+.SLIDE_COLOR off
+.
+.ADD_SPACE 9p
+.IB 8P
+.
+.HEADING 1 "PDF slides"
+.SP .5v
+.
+.PP
+PDF slides are a subset of mom's document processing macros
+formatted for presentation mode when viewed in a PDF reader. In
+most respects, they behave identically to the default document type
+described in mom's html documentation\*[HANG .]
+.BR
+Differences in the formatting include\*[HANG :]
+.
+.PAUSE
+.LEFT
+.LIST
+.ITEM .2v
+the choice between two aspect ratios, 4:3 or 16:9
+.LIST USER \*[hand]
+.ITEM
+both fit on A4 or US letter paper sizes when printed
+.
+.PAUSE
+.LIST BACK
+.ITEM .2v
+type is set centered by default
+.LIST USER \*[hand]
+.ITEM
+this may be changed to left, right, or justified
+.
+.PAUSE
+.LIST BACK
+.ITEM .2v
+headers and/or footers must be explicitly instantiated
+.LIST USER \*[hand]
+.ITEM
+the left, centre, and right parts must be supplied
+by the user
+.
+.PAUSE
+.LIST BACK
+.ITEM .2v
+slide numbering (pagination) is disabled
+.LIST USER \*[hand]
+.ITEM
+if slide numbering is desired, it must be put in the left,
+centre, or right part of a header or footer definition
+.QUIT_LISTS
+.
+.NEWSLIDE
+.
+.ADD_SPACE 9p
+.IB 2P
+.
+.DOC_QUAD CENTER
+.
+.HEADING 1 "Pauses and transitions"
+.SP .5v
+.
+.PP
+Slides made with mom take advantage of the pause and slide
+transition features provided in presentation mode by most
+contemporary PDF readers.
+.PAUSE
+.PP
+Pauses and transitions are dynamic and engaging, holding the
+viewer's attention while increasing the impact of the content.
+.PAUSE
+.PP
+With pauses, material on a slide can be revealed progressively
+with
+.BR
+a mouse click or by hitting
+.
+.LIST
+.ITEM .5v
+Next
+.ITEM 2p
+PgDown
+.ITEM 2p
+Spacebar
+.LIST off
+.
+.PAUSE
+.PP
+The manner in which new material is revealed and new slides
+are displayed can be tailored separately for effects like Fade,
+Dissolve, Wipe and others, and can be changed on the fly.
+.
+.NEWSLIDE
+.
+.PP
+Mom slides begin with the macro DOCTYPE SLIDES, where you choose
+the aspect ratio and transition effects, and set up headers and
+footers\*[HANG .]
+.PAUSE
+.PP
+You may find it convenient to provide a title for the slide
+presentation, as the top of the .mom file for these slides
+demonstrates\*[HANG :]
+.
+.SP -1v
+.CODE_BLOCK
+\*[COND]\&.TITLE "Creating slide presentations with gropdf/mom"
+\&.PDF_TITLE "\\*[$TITLE]"
+\&.\\"
+\&.DOCTYPE SLIDES \\
+ ASPECT 16:9 \\
+ HEADER "Header left" "\\*[$TITLE]" "Header right" \\
+ FOOTER "" "" "\\*S[+2]\\*[SLIDE#]\\*S[-2]" \\
+ TRANSITION "Box 1 . O" \\
+ PAUSE "Wipe 1"\*[CONDX]
+.CODE_BLOCK off
+.SP -.5v
+.
+.PAUSE
+.PP
+Afterwards, you may make any changes you like to the layout and
+style, then enter START. Unlike other mom documents, PRINTSTYLE is
+not required\*[HANG .]
+.
+.NEWSLIDE
+.
+.ADD_SPACE 9p
+.IB -1P+6p
+.
+.HEADING 1 \
+ "The \s[-2]PAUSE\s[0] and \s[-2]NEWSLIDE\s[0] macros"
+.SP .5v
+.
+.PP
+Whenever you want a pause before revealing the next material on a
+slide, enter the macro PAUSE on a line by itself. If you want a
+reveal effect that's different from the current one, you may pass
+PAUSE the parameters of the new effect\*[HANG :]
+.
+.SP -1v
+.PAUSE
+.
+.CODE_BLOCK
+\&.PAUSE "Dissolve .4"
+.CODE_BLOCK off
+.
+.PAUSE "Dissolve .4"
+Notice that this material dissolves in, whereas before, new material
+appeared from left to right. \*[BU6]The new effect stays in force
+until you change it again\*[HANG .]
+.PAUSE "Wipe 1"
+.PP
+New slides are introduced with NEWSLIDE. \*[bu6]Transition effects
+and parameters may be given to NEWSLIDE\*[HANG :]
+.SP -1v
+.
+.CODE_BLOCK
+\&.NEWSLIDE "Blinds .5"
+.CODE_BLOCK off
+.
+.PAUSE
+The next slide in this presentation will appear with the Blinds
+effect\*[HANG .]
+.BR
+Consult man gropdf\c
+\*[FU2]\*[UP 1p](\*[DOWN 1p]\*[BU2]1\*[UP 1p]\*[BU1])\*[DOWN 1p]
+for all the pause/transition effects and their
+parameters.\*[BU6]\*[UP 2p]\s[-2]*\s[0]
+.SP 4p
+.FT I
+.PT_SIZE -2
+*Note that not all PDF \*[BU6]viewers support every effect\*[HANG .]
+.FT R
+.PT_SIZE +2
+.
+.NEWSLIDE "Blinds .5"
+.SLIDE_COLOR antiquewhite
+.
+.ADD_SPACE 9p
+.
+.HEADING 1 "Highlighting items
+.SP .5v
+.PP
+The BOX macro lets you highlight items as they are revealed with
+frames and shaded backgrounds\*[HANG .]
+.PAUSE "Fade .5"
+.BOX SHADED pink INSET 3p
+.PP
+This item is highlighted with a shaded background\*[HANG .]
+.PAUSE
+.PP
+The highlight moves to each new item as it's revealed\*[HANG .]
+.PAUSE
+.PP
+Highlighting can continue for as many slides as you want\*[HANG .]
+.PAUSE
+.PP
+If there are no pauses on a slide, BOX can be used
+.BR
+to provide a background for all the items\*[HANG .]
+.PAUSE
+.PP
+The SLIDE_COLOR macro lets you colour
+.BR
+the whole slide (q.v.)\*[HANG .]
+.BOX off
+.
+.NEWSLIDE "Box 1 . O"
+.SLIDE_COLOR off
+.
+.ADD_SPACE 9p
+.
+.HEADING 1 "Macros and preprocessors"
+.SP .5v
+.PP
+Slides can make full use of all mom's document processing and
+typesetting macros, including preprocessors and image insertion\*[HANG .]
+.
+.IBX CLEAR
+.LS -4
+.
+.PAD "\
+\*[FWD 4P+6p]\*[ST1]#\*[ST1X]\
+\*[FWD 2P+6p]\*[ST2]\*[FWD 12P]\\*[ST2X]\
+\*[FWD 3P+9p]\*[ST3]#\*[ST3X]\
+\*[FWD 3P]\*[ST4]#\*[ST4X]\*[FWD 2P]"
+.
+.ST 1 L
+.ST 2 C
+.ST 3 C
+.ST 4 C
+.
+.PAUSE "Fade .5"
+.
+.TAB 1
+.PT_SIZE -1.5
+.CENTER
+\*[BD]\*[blue2]\*[DOWN 6p]tbl
+.LEFT
+.mk
+.PT_SIZE -1
+.COLOR blue2
+.TS H BOXED
+tab(^) allbox;
+c c
+n n.
+\*[darkred]\s[-.5]\*[DOWN .5p]Year^Mean Temp.\s[0]\*[blue2]
+_
+.TH
+\*[cyan4]\fB2015^28.3\*[blue2]
+\*[cyan4]1998^28.3\*[blue2]
+\*[cyan4]1997^28.3\*[blue2]
+\*[cyan4]2010^28.1\*[blue2]
+\*[cyan4]2002^28.1\*[blue2]
+\*[cyan4]2005^28.0\*[blue2]
+\*[cyan4]2014^27.9\*[blue2]
+\*[cyan4]2009^27.9\*[blue2]
+.TE
+.
+.rt
+.PAUSE
+.
+.TN
+.PT_SIZE +1
+\*[FWD 10p]\*[DOWN 6p]pic
+.COLOR green4
+.SP 3p
+.PS 2 LEFT
+A: ellipse wid 0.5 ht 0.5
+ arrow color "green4" up 0.2 from A.n
+ arrow color "green4" up 0.2 right 0.2 from A.ne
+ arrow color "green4" right 0.2 from A.e
+ arrow color "green4" down 0.2 right 0.2 from A.se
+ arrow color "green4" down 0.2 from A.s
+ arrow color "green4" down 0.2 left 0.2 from A.sw
+ arrow color "green4" left 0.2 from A.w
+ arrow color "green4" up 0.2 left 0.2 from A.nw
+.PE
+.
+.rt
+.PAUSE
+.
+.TN
+.COLOR blue2
+\*[FWD 1p]\*[DOWN 6p]eqn
+.FAMILY T
+.PT_SIZE +3
+.LS
+.COLOR code-grey
+.SP 4P
+.EQ
+f sub X (x) ^=^ left {
+ rpile { 0 above 2x above 0 }
+ ~~lpile { x < 0 above 0 <= x <= 1 above x > 1 }
+.EN
+.
+.rt
+.PAUSE
+.
+.TN
+.FAMILY H
+.PT_SIZE -3
+.COLOR blue2
+\*[DOWN 6p]pdf image\*[black]\*[PREV]
+.SP 2P+6p
+.PDF_IMAGE -C penguin.pdf 81p 96p FRAME
+.TQ
+.
+.NEWSLIDE "Box 1 . O"
+.ADD_SPACE 5p
+.IB 10P
+.PT_SIZE +1.5
+.
+.HEADING 1 "Printing handouts"
+.SP .5v
+.
+.CODE_STYLE \
+ COLOR BLACK \
+ SIZE 120
+.PP
+Because slides contain pauses, they need a little help on their
+way to the printer or they stop printing at the first pause\*[HANG .]
+.PAUSE "Wipe 1"
+.PP
+Setting GROPDF_NOSLIDE=1 before invoking
+\[oq]\*[FU4]\*[CODE]\*[COND]pdfmom\*[CONDX]\*[CODE off]\*[FU4]\[cq]
+or
+\[oq]\*[FU2]\*[CODE]\*[COND]groff\~-Tpdf\*[CONDX]\*[CODE off]\*[FU6]\[cq]
+disables the pauses\*[HANG :]
+.
+.SP -1v
+.
+.CODE_STYLE \
+ COLOR code-grey \
+ SIZE 110
+.CODE_BLOCK
+\*[COND]GROPDF_NOSLIDE=1 pdfmom <options> slide-file.mom\*[CONDX]
+.CODE_BLOCK off
+.
+.PAUSE
+The output may be piped directly to a printer or saved to a file\*[HANG .]
+.PAUSE
+.PP
+See mom's html documentation and the gropdf\c
+\*[FU2]\*[UP 1p](\*[DOWN 1p]\*[BU2]1\*[UP 1p]\*[BU1])\*[DOWN 1p]
+manpage for complete information concerning slide usage\*[HANG .]
+.
+.SP 9p
+.CENTER_BLOCK
+.nr dcl-ind -1 1
+.while \n[dcl-ind]<4 \{\
+. DCL SOLID \n+[dcl-ind]P 9p 9p blue2
+.\}
+.CENTER_BLOCK off
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff:
diff --git a/contrib/mom/examples/test-mom.sh.in b/contrib/mom/examples/test-mom.sh.in
new file mode 100644
index 0000000..ebaba20
--- /dev/null
+++ b/contrib/mom/examples/test-mom.sh.in
@@ -0,0 +1,92 @@
+#!/bin/sh
+#
+# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+#
+# 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/>.
+#
+
+builddir="@abs_top_builddir@"
+have_urw_fonts="@groff_have_urw_fonts@"
+examplesdir="$builddir/contrib/mom/examples"
+ret=0
+list="
+ letter.pdf
+ mom-pdf.pdf
+ mon_premier_doc.pdf
+ sample_docs.pdf
+ slide-demo.pdf
+ typesetting.pdf
+ copyright-chapter.pdf
+ copyright-default.pdf
+ "
+
+if test "$have_urw_fonts" != "yes"; then
+ echo "No URW fonts, mom examples cannot be correctly generated"
+ exit 77
+fi
+
+for cmd in pdfinfo pdfimages
+do
+ if ! command -v $cmd >/dev/null
+ then
+ echo "cannot locate '$cmd' command; skipping" >&2
+ exit 77 # skip
+ fi
+done
+
+# $1: pdf file
+# $2: expected number of pages
+check_number_pages()
+{
+ echo "Checking number of pages of $1"
+ n_pages=`pdfinfo $1 | grep Pages | awk '{ print $2}'`
+ if test "$n_pages" != "$2"; then
+ echo " Error: expected $2 pages, found $n_pages pages"
+ ret=255
+ fi
+}
+
+# $1 pdf file
+check_has_images()
+{
+ echo "Checking if $1 has images"
+ n_lines=`pdfimages -list $1 | wc -l `
+ if test $n_lines -le 2; then
+ echo " no images found"
+ ret=255
+ fi
+}
+
+for k in $list; do
+ if ! test -f $examplesdir/$k; then
+ echo "File $k not found"
+ exit 255
+ fi
+done
+
+check_number_pages "$examplesdir/letter.pdf" 1
+check_number_pages "$examplesdir/mom-pdf.pdf" 8
+check_number_pages "$examplesdir/mon_premier_doc.pdf" 5
+check_number_pages "$examplesdir/sample_docs.pdf" 12
+check_number_pages "$examplesdir/slide-demo.pdf" 33
+check_number_pages "$examplesdir/typesetting.pdf" 3
+check_number_pages "$examplesdir/copyright-chapter.pdf" 5
+check_number_pages "$examplesdir/copyright-default.pdf" 5
+
+check_has_images "$examplesdir/typesetting.pdf"
+check_has_images "$examplesdir/slide-demo.pdf"
+
+exit $ret
diff --git a/contrib/mom/examples/typesetting.mom b/contrib/mom/examples/typesetting.mom
new file mode 100644
index 0000000..e273611
--- /dev/null
+++ b/contrib/mom/examples/typesetting.mom
@@ -0,0 +1,707 @@
+.\" -*- mode: text; coding: utf-8; -*-
+\#
+\# Copyright 2004-2020 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.
+\#
+\# 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 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.
+\#
+\# Basic page setup
+\#
+.PAGE 8.5i 11i 1i 1i 1i \" Page size, margins
+\#
+\# Basic type parameters
+\#
+.FAMILY T \" Times Roman family
+.FT B \" Bold font
+.PT_SIZE 12 \" Point size
+.LS 14 \" Leading (line spacing)
+.LEFT \" Set lines flush left, nofill mode
+\#
+\# Refinements
+\#
+.HY \" Hyphenate
+.KERN \" Automatic pairwise kerning
+.LIGATURES \" Automatic ligature generation
+.SMARTQUOTES \" Enable smartquotes
+.SS 0 \" No extra space between sentences
+\#
+.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.5p "T\*[BU 4]asting notes using padding, string tabs \
+and multi-columns"
+\#
+.SP \" Add an extra line space
+\#
+.FAM H \" Helvetica family
+.PT_SIZE 10
+.LS 11 \" New leading
+\#
+\# The following uses a combination of padding, string tabs, and the
+\# FWD escape to set up five tabs with 1-pica gutters stretched over
+\# 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]"
+.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 (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
+.ST 5 L QUAD
+\#
+.TAB 1 \" Call first tab
+.UNDERSCORE "VIN"
+.TN \" Move to next tab and stay on the same baseline
+.UNDERSCORE "ROBE"
+.TN \" Ibid
+.UNDERSCORE "NEZ"
+.TN \" Ibid
+.UNDERSCORE "BOUCHE"
+.TN \" Ibid
+.UNDERSCORE "COMMENTAIRES"
+.TQ \" Quit tabs
+\#
+.ALD 6p \" Advance an extra 6 points
+.FT R \" Change font to roman (medium)
+.MCO \" Turn multi-column mode on
+\#
+.TAB 1 \" Notice that this tab gets set line-for-line
+\*[IT]Peelee Island \" Set italic
+\*[PREV]Gewürztraminer \" Revert to former font (roman)
+2000
+(Canada)
+.MCR \" Return to top of column
+.TAB 2 \" Call tab 2; in multi-column mode, don't use .TN
+Jaune pâle.
+.MCR
+.TB 3 \" Notice that from here on, we use the alias TB instead of TAB
+Frais, fruité, ci\%tronné, arômes fortes de lichee et de fruits
+tropicaux.
+.MCR
+.TB 4
+Doux, fruité, bien équilibré avec une bonne acidité.
+.MCR
+.TB 5
+Bon apéro. Servir avec des plats
+.RW .1 \" Reduce Whitespace between letters to tighten this line
+indiens ou \%chinois.
+.RW 0 \" Back to normal spacing between letters
+.BR
+Excellent rapport qualité/prix.
+.MCX 8p \" Multi-column mode off; advance an extra 8 points
+.MCO \" Re-invoke multi-columns for next wine description
+.TB 1
+\*[IT]Carau Pujol
+\*[ROM]Tannat
+1995
+(Uraguay)
+.MCR
+.TB 2
+Rubis foncé, vio\%lacée, presque opaque.
+.MCR
+.TB 3
+Belles arômes de fruits foncés (prunes, cerises noires, cassis).
+Odeurs tertiares de cuir, cèdre, violets, eucalyptus, avec une trace
+exotique de Band-Aid*\*[BU 12].
+\#
+\# The \*[BU 12], above, pulls the period back so that it falls
+\# underneath the asterisk. \*[BP<n>] could have been used instead
+\# if you prefer to use points rather than kern units.
+\#
+.MCR
+.TB 4
+Très rond, tannins mûres et veloutés, avec un long finis fruité et
+doucement alcoolique.
+.MCR
+.TB 5
+Superbe\|! Une aubaine à ne pas manquer. Prêt à boire maintenant.
+.MCX 1v \" Multi-columns off; advance an extra linespace
+\#
+\# Now, an example of a hanging indent. This is excessively fussy
+\# from a typographic standpoint in that it hangs the asterisk outside
+\# the current left margin so that the text following it lines up with
+\# with the text in the tasting notes. Notice that in order to use a
+\# hanging indent, you must first set a left indent.
+\#
+.FT I \" Change font to italic
+.PT_SIZE -.5 \" Reduce point size by 1/2 point
+.LS -.5 \" Reduce leading by 1/2 point
+.JUSTIFY \" Set text justified
+\#
+\# Now, move the left margin back by the width of an asterisk plus 2 points...
+\#
+.L_MARGIN -(\w'*'+2p)
+\#
+\# ...and set a left indent equal to the width of an asterisk plus 2 points
+\#
+.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.
+\#
+.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 \" 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
+\#
+\# Notice, above, that although the values for IL and HI are the width
+\# of an asterisk plus 2 points, when setting the first line of text
+\# (the one with the asterisk at the beginning), we put only 1 point of
+\# space after the *. This is to compensate for the fact that in the
+\# italic font, the letter T doesn't align visually with the rest of
+\# the text. As already noted, this is an extremely fussy example. :)
+\#
+.IQ CLEAR \" Cancel and clear stored indent values
+.L_MARGIN 1i \" Reset left margin to its original value.
+\#
+.ALD 2P \" Add 2-picas extra space before next example
+\#
+.FAM T
+.FT B
+.PT_SIZE 12
+.LS 14
+\#
+Example 2:
+.ALD .25v
+\#
+.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
+\#
+.UNDERSCORE 3.5p "\[lq]Massaging\[rq] \*[BCK 1p]a passage of rag right text"
+.SP \" Add an extra linespace
+\#
+.PT_SIZE 12.5
+.LS 14
+.PT_SIZE -1 \" Reduce point size by 1 point
+Passage using groff spacing defaults
+\#
+.ALD .5v \" Add an extra 1/2 line space
+\#
+.PT_SIZE +1 \" Restore point size
+.QUAD LEFT \" Set quad left, fill mode
+.IB 3P \" Indent 3 picas from both the left and right margins
+.FT R
+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\[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.
+It is equally unredressed when the avenger fails to make himself
+felt as such to him who has done the wrong.
+.ALD 6p
+\#
+\# The next line is set quad right, nofill mode, 1/2 point smaller
+\# than the preceding text (using the \*[SIZE <n>] inline escape.
+\#
+.RIGHT
+\*[SIZE -.5]\[em]Edgar Allen Poe, \*[IT]The Cask of Amontillado\*[PREV]\*[SIZE +.5]
+.SP \" Extra linespace
+.IBQ \" Disable "indent both"
+\#
+\# The passage above, while acceptable in a longer document, exhibits a
+\# few typographic flaws. The shape of the right margin rag exhibits
+\# a decidedly "rounded" appearance. The word "I" stands alone at the
+\# end of the third line. The space between the 1st and 2nd sentences
+\# ("...revenge. You...") is too large, owing to the letter "Y" that
+\# begins the 2nd sentence. The spacing between "A wrong..." (line 6)
+\# is equally too large because of the way "A" and "w" fit together.
+\# The em-dash before Edgar isn't vertically centered with the letter "E".
+\# And so on. The most important correction below is fixing the rag
+\# so that longer and shorter lines alternate. This is accomplished by
+\# manually breaking lines and then slightly lengthening and shortening
+\# them until a pleasing rag is achieved. The remainder of the little
+\# flaws are fixed with inline escapes.
+\#
+.FT B
+.PT_SIZE -1
+.LEFT
+The same passage, \*[BU4]"massaged"
+\#
+.ALD .5v
+\#
+.FT R
+.PT_SIZE +1
+.QUAD LEFT
+.HY OFF \" Turn automatic hyphenation off
+.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 \*[BU2]vowed revenge.
+\*[BU4]Y\*[BU6]ou, \*[BU4]who so \*[BU2]well know the nature
+.EW .2
+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\[em]but the
+.EW .2
+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
+.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.
+.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]
+.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)
+\#
+.FAM T
+.FT B
+.PT_SIZE 12
+.LS 14
+.LEFT
+\#
+Example 3:
+.ALD .25v
+.UNDERSCORE 3.5p "A \*[BU2]recipe for enumerated lists using indents"
+.SP .5v \" Add an extra half line space
+.ie '\*[.T]'ps' \
+.FAM N \" New Century Schoolbook family
+.el .if '\*[.T]'pdf' \
+.FAM U-N
+.FT R
+.PT_SIZE 11
+.LS 13
+.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.
+.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.
+\#
+.ALD 9p
+.JUSTIFY \" Justify text
+.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\*[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 set
+.ALD 6p
+2.\0This is the second item in the list. As with the above item,
+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
+the bullet so that the bullet and the text are visually separated.
+.COMMENT OFF
+\#
+\#
+.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
+\# 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\*[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. \*[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.
+\#
+.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.
+.IQ CLEAR \" Don't forget to cancel and/or clear indents!
+\#
+.FAM T
+.FT B
+.PT_SIZE 12
+.LS 14
+.LEFT
+.SP
+\#
+Example 4:
+.ALD .25v
+.UNDERSCORE 3.5p "A \*[BU 2]recipe for nested lists using string tabs"
+.SP .5v
+.ie '\*[.T]'ps' \
+.FAM N
+.el .if '\*[.T]'pdf' \
+.FAM U-N
+.FT R
+.PT_SIZE 11
+.LS 13
+.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.
+.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."
+.COMMENT OFF
+\#
+.SILENT \" Don't print any of this
+.PAD "\*[ST1]\0.\0\*[ST1X]\*[ST2]#\*[ST2X]"
+.ST 1 L \" String tabs must be "set" after being marked off in a line
+.ST 2 J \" ST 1 will be set flush left, nofill; ST 2 will be justified.
+.SILENT OFF \" Restore printing
+\#
+.TB 1
+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.\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.
+\#
+.COMMENT
+Now, set up the indented bullet-point sublist. The PAD line
+says: move forward 12 points (1 pica), then mark off a string
+tab (ST3) that's the length of the bullet character; move forward
+another three points, then make the next string tab (ST4) the
+length of remainder of the line.
+.COMMENT OFF
+\#
+.SILENT
+.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]\c
+.TN
+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]\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 fill mode right now, so you must terminate the line with BR
+\#
+.SILENT
+.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]\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.
+.ALD 6p
+.TB 5
+\*[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.
+.ALD 6p
+.TB 1
+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.\c
+.TN
+Generally speaking, once you get the hang of string tabs and the
+\*[BD]PAD\*[PREV] macro, you'll find setting up complex indenting
+structures easier than with the indent macros.
+.TQ
+\#
+.NEWPAGE
+.FAM T
+.FT B
+.PT_SIZE 12
+.LS 14
+.RLD 2p
+.LEFT
+\#
+Example 5:
+.ALD .25v
+.UNDERSCORE 3.5p "Word spacing"
+.ALD 8p
+.ie '\*[.T]'ps' \
+.FAM P \" Palatino family
+.el .if '\*[.T]'pdf' \
+.FAM U-P
+.PT_SIZE 11
+.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>]
+\#
+\f[HB]\*S[-1]Normal word spacing\*S[+1]\*[PREV]
+.FT R
+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]\*[BU3]+\*[DOWN 1p]\*[BU1]2\*S[+1]\*[PREV]
+.FT R
+.WS +2
+N\*[BU1]o\*[BU1]w \*[BU1]is the time for all good men to come to the aid of the party.
+.WS DEFAULT
+.ALD 4p
+\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU3]+\*[DOWN 1p]4\*S[+1]\*[PREV]
+.FT R
+.WS +4
+N\*[BU1]o\*[BU1]w \*[BU1]is the time for all good men to come to the aid of the party.
+.WS DEFAULT
+.ALD 4p
+\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU3]+\*[DOWN 1p]6\*S[+1]\*[PREV]
+.FT R
+.WS +6
+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
+.FT B
+.PT_SIZE 12
+.LS 14
+\#
+.LEFT
+Example 6:
+.ALD .25v
+.UNDERSCORE 3.5p "Line kerning"
+.ALD 8p
+.ie '\*[.T]'ps' \
+.FAM P \" Palatino family
+.el .if '\*[.T]'pdf' \
+.FAM U-P
+.FT R
+.PT_SIZE 11
+.LS 15
+\#
+\# Here, we set up some tabs so the examples can go into facing columns.
+\#
+.TAB_SET 1 0 19.5P L
+.TAB_SET 2 19.5P 19.5P L
+\#
+.MCO \" Turn multi-columns on
+.TB 1
+\f[HB]\*S[-1]Unkerned line\*S[+1]\*[PREV]
+.FT R
+"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
+.ALD 4p
+\f[HB]\*S[-1]Line "tightened" \[en] .RW .1\*S[+1]\*[PREV]
+.RW .1
+"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
+.ALD 4p
+\#
+\# 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]
+.RW .2
+"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
+.ALD 4p
+\f[HB]\*S[-1]Line "tightened" \[en] .RW .3\*S[+1]\*[PREV]
+.RW .3
+"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
+.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]
+.EW .1
+"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
+.ALD 4p
+\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]
+.EW .3
+"But this is \*[IT]important!\/"\*[PREV]she exclaimed.
+.MCX 1.5v
+.EW 0
+\#
+.FAM T
+.FT B
+.PT_SIZE 12
+.LS 14
+.LEFT
+\#
+Example 7:
+.ALD .25v
+.UNDERSCORE 3.5p "Cutaround using left\*[FU 2]/right indents, \
+multi columns and a dropcap"
+.SP
+\#
+.FT R
+.PT_SIZE 11
+.LS 12
+.BR_AT_LINE_KERN OFF \" In justified text, it's best to have this OFF
+\#
+.TAB_SET 1 0 18.5P J
+.TAB_SET 2 20.5P 18.5P J
+.MCO
+.ALD 5P+9p
+\#
+\# The little picture of tux.
+\#
+.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
+.DROPCAP_COLOR red
+.DROPCAP_FONT B
+.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.
+.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.
+.EW .2
+.TI
+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
+Stet clita kasd gubergren, no sea ta-
+.SPREAD \" Force justify preceding line before quitting indent
+.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
+.SPREAD
+.EW .3
+dolores et ea rebum. Stet clita no kasd guber-
+.SPREAD
+.MCR
+.TB 2
+gren, no sea takimata sanctus est lorem ipsum
+.EW 0
+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
+.SPREAD
+.IL 3.5P
+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-
+.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.
+.ILQ
+.TI
+Dolores et ea rebum stet clita kasd gubergren, no sea takimata
+sanctus. Sadipscing elitr sed diam, nonumy eirmod tempor, invidunt
+ut labore et dolore magna aliquyam erat. Sed diam voluptua, at vero
+eos et accusam et justo duo dolores et ea rebum.
+.\" Local Variables:
+.\" mode: nroff
+.\" End:
+.\" vim: filetype=groff: